0

По сути, название говорит обо всем. Я хочу, чтобы можно было получить текущую мелодию звонка в классе phonestatelistener. Одним из решений может быть просто получить DEFAULT URI из RingtoneManager, но что делать, если есть настраиваемая мелодия звонка?Извлечь имя воспроизводящей мелодии звонка в PhoneStateListener

Фрагменты обязательного кода для того, что я пробовал до сих пор. Ни один из них не возвращает рингтон. 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; 
     } 
    } 
} 

ответ

1

есть свойство в ContactsContract.ContactOptionsColumns: public static final String CUSTOM_RINGTONE что имеет URI для пользовательской мелодии, связанной с контакт. Если значение null или отсутствует, используется рингтон по умолчанию. Поэтому в вашем слушателе состояния телефона, когда вы получите номер, получите контактный объект и проверьте его свойство CUSTOM_RINGTONE. Если его значение null, то выберите мелодию звонка по умолчанию с RingtoneManager, иначе вы можете получить настраиваемый рингтон для контакта.