6

AudioTrackでSDカードの音声ファイルを再生したいです。私はこのコードで試しました:

int minBufferSize = AudioTrack.getMinBufferSize(8000,
                AudioFormat.CHANNEL_CONFIGURATION_MONO,
                AudioFormat.ENCODING_PCM_16BIT);
        int bufferSize = 512;
        AudioTrack at = new AudioTrack(AudioManager.STREAM_MUSIC, 8000,
                AudioFormat.CHANNEL_CONFIGURATION_MONO,
                AudioFormat.ENCODING_PCM_16BIT, minBufferSize,
                AudioTrack.MODE_STREAM);

        int i = 0;
        byte[] s = new byte[bufferSize];

        FileInputStream fin = new FileInputStream(path);
        DataInputStream dis = new DataInputStream(fin);

        at.play();
        while ((i = dis.read(s, 0, bufferSize)) > -1)
        {
            at.write(s, 0, i);

        }
        at.stop();
        at.release();
        dis.close();
        fin.close();

しかし、それはオーディオファイルを正しく再生しません。元のオーディオの代わりに、ある種のノイズ サウンドを再生します。

4

2 に答える 2

9

次のリンクから、AudioTrack は PCM オーディオのみを再生することがわかりました http://developer.android.com/guide/topics/media/index.html

そして、このコードを見てください。 http://mindtherobot.com/blog/624/android-audio-play-an-mp3-file-on-an-audiotrack/ これは、AudioTrack で MP3 ファイルを再生する方法に関する情報を提供します。

これがお役に立てば幸いです。

于 2013-03-04T12:34:07.397 に答える
3

AudioTrack クラスは PCM オーディオ データのみをサポートするため、ノイズが聞こえます。

.mp3 や .ogg などの圧縮オーディオ ファイルを再生する場合は、MediaPlayerまたはSoundPoolを使用します。
または、アプリで圧縮されたオーディオをデコードし、結果の PCM データを AudioTrack に書き込むこともできますが、それははるかに大きなタスクです。

于 2013-03-04T12:12:43.927 に答える