【发布时间】:2015-11-03 23:06:04
【问题描述】:
在使用 Lollipop 的 Android 设备后,我注意到我们为 Kitkat(和以前的版本)工作的 AudioTrack 代码停止工作,完全相同的代码在 Lollipop 之前的设备上运行良好,所以我想知道什么我对新版本做错了。
以下是AudioTrack(由mTrack 属性引用)的初始化方式:
protected void onCreate(Bundle savedInstanceState) {
int bufferSize = AudioTrack.getMinBufferSize(AUDIO_SAMPLE_RATE, AudioFormat.CHANNEL_CONFIGURATION_STEREO, AudioFormat.ENCODING_PCM_16BIT);
mTrack = new AudioTrack(AudioManager.STREAM_MUSIC, AUDIO_SAMPLE_RATE,
AudioFormat.CHANNEL_CONFIGURATION_STEREO,
AudioFormat.ENCODING_PCM_16BIT, bufferSize,
AudioTrack.MODE_STREAM);
}
以下是缓冲区的填充方式:
public void onPlayAudio(byte[] audioBuffer) {
if (mTrack.getPlayState() != AudioTrack.PLAYSTATE_PLAYING) {
mTrack.play();
}
if (audioBuffer != null) {
mTrack.write(audioBuffer, 0, audioBuffer.length);
}
}
这同样适用于 Lollipop 之前的设备。 Logcat 没有错误,一切似乎正常但声音不出来(是的,我检查了音量,它一直在上升)。所以我想知道是否有我错过的更新,或者我做错了什么。
我注意到 AudioFormat.CHANNEL_CONFIGURATION_STEREO 已被弃用,但尝试建议的 AudioFormat.CHANNEL_OUT_STEREO 似乎没有奏效。
我们将不胜感激。
【问题讨论】:
-
没人知道这件事吗?相同的代码适用于 Kitkat 和以前的版本。 Lollipop 需要进行哪些更改?
标签: android android-5.0-lollipop audiotrack android-5.1.1-lollipop