基本上标题说明了一切。我希望能够在phonestatelistener类中检索当前正在播放的铃声。一种解决方案可能是简单地从RingtoneManager中检索DEFAULT URI,但如果有自定义联系人铃声播放怎么办?
迄今为止我尝试过的强制性代码片段。他们都没有返回铃声。 IsPlaying总是错误的。
public static String getPlayingRingtone() {
RingtoneManager m = new RingtoneManager(mCtx);
Cursor rings = m.getCursor();
for( int i = 0; i < rings.getCount(); i++ ) {
Ringtone tone = m.getRingtone(i);
if (tone.isPlaying() )
Log.d("Playcallringtone", "**Is playing**" + tone.getTitle(mCtx));
}
return null;
}
或者,我试过了:
Log.d("Playcallringtone", RingtoneManager.getRingtone(mCtx,
RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE)).getTitle(mCtx) + " is playing");
我的Phonestatelistener如下:
private class MyPhoneStateListener extends PhoneStateListener {
public void onCallStateChanged(int state,String number){
switch(state){
case TelephonyManager.CALL_STATE_IDLE:
// Do stuff for IDLE
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
// Do stuff of OFFHOOK
break;
case TelephonyManager.CALL_STATE_RINGING:
getPlayingRingtone();
// Do stuff for RINGING
break;
}
}
}
答案 0 :(得分:1)
ContactsContract.ContactOptionsColumns中的属性:public static final String CUSTOM_RINGTONE
具有与联系人关联的自定义铃声的URI。如果为null或缺失,则使用默认铃声。因此,在您的手机状态监听器中,当您获取该号码时获取联系对象并检查其 CUSTOM_RINGTONE 属性。如果为null则从RingtoneManager
获取默认铃声,否则您可以获得联系人的自定义铃声。