オフセットと長さを設定できるようにしたかったので、FileDescriptorを受け取るSoundPoolのロード関数を使用してみました。ファイルはリソースに保存されませんが、ストレージカードにファイルが保存されます。SoundPoolのロード機能も再生機能も例外をスローしたり、コンソールに何かを出力したりしなくても、サウンドは再生されません。同じコードを使用しますが、SoundPoolコンストラクターでファイルパス文字列を使用すると完全に機能します。
これが私がロードを試みた方法です(開始は0に等しく、長さはミリ秒単位のファイルの長さです):
FileInputStream fileIS = new FileInputStream(new File(mFile));
mStreamID = mSoundPool.load(fileIS.getFD(), start, length, 0);
mPlayingStreamID = mSoundPool.play(mStreamID, 1f, 1f, 1, 0, 1f);
これを使用すると、次のように機能します。
mStreamID = mSoundPool.load(mFile, 0);
mPlayingStreamID = mSoundPool.play(mStreamID, 1f, 1f, 1, 0, 1f);
誰かアイデアはありますか?
ありがとう