7

MediaPlayer でデバイスの着信音を再生したいのですが、メタデータ タグが

ANDROID_LOOP = true

設定されています MediaPlayer はメソッドsetLoopingの呼び出しを無視しています

mMediaPlayer.setLooping(false);

どのような場合でもオーディオをループします。また、onCompletionListener メソッドは呼び出されません。

ES Media Player のようなオーディオ アプリでさえ、ループが有効かどうかに関係なく、このタグが true に設定されたオーディオをループすることに気付きました。

だから私の質問は、私ができるかどうかです

  • このタグを無視して MediaPlayer を作成します
  • MediaPlayer がオーディオをループしないようにタグを一時的に変更します。

この質問は着信音に関して発生しましたが、もちろん着信音固有のものではありません。おかしなことに、着信音を再生する方法について私が見つけたチュートリアルはすべて mMediaPlayer.setLooping(true); を設定しています。彼らがこの問題を処理する必要がないように...

ありがとう

ここに画像の説明を入力

4

1 に答える 1

3

満足のいく答えではないかもしれませんが、エンジニアはoggファイルの動作MediaPlayerとメタデータタグを変更する傾向がないようです。ANDROID_LOOP=true問題を参照してください:http ://code.google.com/p/android/issues/detail?id = 1314

タグを一時的に変更することに関しては、どうすればそれを実行できるかわかりません。

私はそれをテストしていませんが、他のサウンドフォーマットはこの振る舞いを示さないと思います(例えばmp3やwav)。おそらく、oggファイルを別の形式に変換して、一時データとして保持することができます(これに役立つ場合があります:Java-oggをmp3に変換します)これはもちろん、一部のファイルを再生するためのオーバーヘッドのように見えますが、少なくともそれらは通常は小さなファイルです。

于 2012-12-16T07:41:10.050 に答える