0

基本的に、タイトルがすべてを物語っています。phonestatelistener クラスで現在再生中の着信音を取得できるようにしたいと考えています。解決策の 1 つは RingtoneManager から DEFAULT URI を取得することかもしれませんが、カスタム連絡先の着信音が再生されている場合はどうでしょうか。

これまでに試したことの必須のコード スニペット。それらのどれも着信音を返しません。IsPlaying は常に false です。

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;
        }
    } 
}
4

1 に答える 1

1

ContactsContract.ContactOptionsColumnspublic static final String CUSTOM_RINGTONEには、連絡先に関連付けられたカスタム着信音の URI を持つプロパティがあります。null または欠落している場合は、デフォルトの着信音が使用されます。したがって、電話状態リスナーで、番号をフェッチするときに連絡先オブジェクトを取得し、そのCUSTOM_RINGTONEプロパティを確認します。null の場合RingtoneManagerは、連絡先のカスタマイズされた着信音を取得できます。

于 2013-02-19T12:38:56.723 に答える