10

私はSoundPoolを使用してデフォルトの着信音を再生しようとして成功しませんでした。以下のコードで

String ringtone = Settings.System.DEFAULT_RINGTONE_URI.getPath();
SoundPool ringPhone = new SoundPool(2, AudioManager.STREAM_RING, 1);
int soundID = ringPhone.load(Settings.System.DEFAULT_RINGTONE_URI.getPath(), 1);
int soundID = ringPhone.load(ringtone, 1);
ringPhone.play(soundID, 0.99f, 0.99f, 1, 0, 1);

「コンテンツ/システム/着信音サンプル0の読み込み中にエラーが発生しました」というメッセージが表示されます。URIをSDカード上の既存のmp3ファイルへのハードパスに置き換えると、同様の結果が得られます。

私は何が間違っているのですか?ありがとう、

カイル

4

1 に答える 1

27

このタイプのオーディオ再生にSoundPoolを使用したくない場合があります。SoundPoolは通常、ローカルファイルとして保存された非常に小さなオーディオスニペットを再生するために使用され、ほとんどの着信音よりもさらに小さくなります。代わりにMediaPlayerを検討する必要があります。以下は非常にうまく機能するはずです:

MediaPlayer player = MediaPlayer.create(this,
    Settings.System.DEFAULT_RINGTONE_URI);
player.start();

アプリケーションからその着信音にアクセスする権限がない場合でも、FileNotFoundExceptionが発生する可能性があります。

于 2010-11-01T02:38:54.637 に答える