3

Android 4.2 を実行している Nexus 4 で着信音の再生に問題があります。

RingTone を再生しようとすると、次の例外が表示されます。

java.lang.NullPointerException at android.media.Ringtone.play(Ringtone.java:228)

私のコードは以下の通りです:

RingtoneManager ringtoneManager = new RingtoneManager(context);
ringtoneManager.setType(AudioManager.STREAM_NOTIFICATION);
Ringtone ringtone = ringtoneManager.getRingtone(index);
Ringtone ringtone.setStreamType(AudioManager.STREAM_NOTIFICATION);

if (ringtone != null)
{
    ringtone.play();
}

インデックス値は、ユーザーの選択に基づいてメソッドに渡されます (選択する着信音のリストを提示します)。いずれにせよ、これを動作に設定したことは常に同じです。

このコードは、2.3 と 4.0.4 を実行している他の 2 つのデバイスで実行すると完全に機能します。

デバッグすると、着信音マネージャーから返された着信音の uri が null であることがわかります (他のデバイスでは有効な値に設定されています)。

何か間違っているのでしょうか、それとも 4.2 のバグでしょうか?

4

1 に答える 1

3

着信音がその位置にあるかどうかを最初に確認する必要があると思います。だから試してみてください

編集:これを試してください。

RingtoneManager ringtoneManager = new RingtoneManager(ActivityName.this);
ringtoneManager.setType(AudioManager.STREAM_NOTIFICATION);
Cursor c = ringtoneManager.getCursor();
Ringtone ringtone = ringtoneManager.getRingtone(index);
ringtone.setStreamType(AudioManager.STREAM_NOTIFICATION);
if(ringtone != null && ringtoneManager.getRingtoneUri(position) != null){    
    ringtone.play();
}
于 2012-12-13T16:23:43.907 に答える