Java 模式_流中的AudioTrack没有声音

Java 模式_流中的AudioTrack没有声音,java,android,audio,inputstream,audiotrack,Java,Android,Audio,Inputstream,Audiotrack,这个问题我已经纠缠了好几天了。我现在正处于这样一个阶段,我只是想从中得到一个可以工作的例子,但我甚至不能达到那个地步 我的问题是基于。我已经在自己的代码中包含了源代码和解决方案,可以看到缓冲区正在写入,但设备没有发出声音。我正在努力确定如何进一步调试它 package com.example.audio; import com.example.R; import java.io.IOException; import java.io.InputStream; import android.con

这个问题我已经纠缠了好几天了。我现在正处于这样一个阶段,我只是想从中得到一个可以工作的例子,但我甚至不能达到那个地步

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

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();}
    }
}
复制项目:创建新项目,包括这个类,添加下面提到的音频,创建一个Synth实例,然后启动playSound公共函数

很明显,我不能上传音频,也不能保证它在网络文件夹中的持久性,但将采样率更改为22.05kHz,然后按“download.wav file”

我意识到流音乐和模式流在这个例子中似乎不合适。我之所以使用这些标志/模式,是因为我知道在以后的开发过程中,我需要将这些模式与AudioTrack结合使用,我现在只是想让设备发出声音


有人能建议调试步骤吗,或者看看回放有什么问题吗?感谢您的帮助。

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


事实证明,在我调整音量时,应用程序没有播放音频,因此实际上最大的音量是系统/铃声音量,而不是“音乐、视频游戏和其他媒体”音量,该音量是静音的。

它对我有效。当我在VLC中打开wav文件时,声音是分段的,它是平滑的,但它会播放一些东西。我还必须删除导入com.example.R,但除此之外,我还复制粘贴了您的EXEC代码。你确定可以用VLC或媒体播放器播放该文件吗?你在你的设备/计算机上检查过你的音频设置了吗?我用过模拟器。哇,这太尴尬了。我尝试了我在帖子中建议的样本,它成功了,然后我尝试了我的原始样本,它成功了。我不知道发生了什么事。这太令人沮丧了!你知道会发生什么吗?我的代码样本完全未经编辑,因为我被卡住了!实际上我在用一个设备。嗯。我不知道在这种情况下该怎么办,因为这个问题其实不是问题。我不知道。有时候这是纯粹的巫毒…无论如何,谢谢你的帮助!我会给你一个“正确的答案”,但我担心版主会认为这只是点耕耘什么的。我最好自己回答,代码可以像write.PS那样工作——我现在已经在“真实”设备上进行了测试,音频流畅,不像模拟器。