MODE_STREAM 中的 AudioTrack 没有声音

AudioTrack in MODE_STREAM has no sound

我已经被这个问题困扰好几天了。我现在正处于尝试获取可构建的工作示例的阶段,但我什至无法达到这一点。

我的问题是基于this example。我已将源代码(和解决方案)包含到我自己的代码中,并且可以看到正在写入缓冲区,但设备没有声音。我正在努力确定如何进一步调试它。

package com.example.audio;
import com.example.R;
import java.io.IOException;
import java.io.InputStream;
import android.content.Context;
import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioTrack;
import android.util.Log;

public class Synth {
    private static final String TAG = Synth.class.getSimpleName();
    private AudioTrack audioTrack;
    private Context context;

    public Synth(Context context) {
        this.context = context;
        int minBufferSize = AudioTrack.getMinBufferSize(22050, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);
        audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 22050, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, minBufferSize, AudioTrack.MODE_STREAM); 
    }
    public void playSound() {
        audioTrack.play();
        int i = 0;
        int bufferSize = 512;
        byte [] buffer = new byte[bufferSize];
        InputStream inputStream = context.getResources().openRawResource(R.raw.mysample);
        try {
            int writes = 0;
            while((i = inputStream.read(buffer)) != -1) {
                writes++; audioTrack.write(buffer, 0, i);
            }
            Log.d(TAG, "Wrote " + writes + " times." );
        } catch (IOException e) {e.printStackTrace();}
        try {inputStream.close();} catch (IOException e) {e.printStackTrace();}
    }
}

(要复制项目:创建新项目,包括这个 class,添加下面提到的音频,创建 Synth 的实例,然后触发 playSound public函数)

显然我无法上传音频,或保证它在网络文件夹中的持久性,但是 this tool will generate a WAV file exactly like I am using(将采样率更改为 22.05kHz 并按 'download .wav file')

我意识到 STREAM_MUSICMODE_STREAM 在这个例子中似乎不合适。我正在使用那些 flags/mode,因为我知道我需要在以后的开发中将 AudioTrack 与这些模式一起使用,并且实际上只是暂时尝试让声音从设备中传出。

任何人都可以建议调试步骤,或者看看播放有什么问题吗?任何帮助表示赞赏。

我已经确定了我最初提出这个问题时遇到的问题。希望它能帮助其他人...

事实证明,当我调整音量时应用程序没有播放音频,所以实际最大的音量是 system/ringtone 音量,而不是 'music, video games, and other media' 音量,已静音。