gpt4 book ai didi

android - MediaPlayer 无法在 Android Things Raspberry Pi 3 上运行

转载 作者:行者123 更新时间:2023-11-30 00:04:32 24 4
gpt4 key购买 nike

我只是尝试使用 MediaPlayer 播放声音。下面的代码在常规 Android 项目中运行良好,通过音频插孔或 HDMI 显示器的扬声器不播放声音。

final MediaPlayer mp = MediaPlayer.create(getActivity(), R.raw.score);
mp.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
return false;
}
});
mp.start();

我是不是用错了方法? MediaPlayer 类在 Android Things 中不能以这种方式工作吗?

更新 1

作为替代方法,我也尝试过使用 AudioTrack 来播放声音,这也不起作用:

    int i = 0;
byte[] music = null;
InputStream is = getActivity().getResources().openRawResource(R.raw.score);

AudioTrack at = new AudioTrack(AudioManager.STREAM_MUSIC, 44100,
AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT,
AudioTrack.getMinBufferSize(44100,
AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT), AudioTrack.MODE_STREAM);

try{
music = new byte[512];
at.play();

while((i = is.read(music)) != -1)
at.write(music, 0, i);

} catch (IOException e) {
e.printStackTrace();
}

at.stop();
at.release();

更新 2

建议设置首选设备。这也行不通。

mAudioOutputDevice = findAudioDevice(AudioManager.GET_DEVICES_OUTPUTS, AudioDeviceInfo.TYPE_BUILTIN_SPEAKER);

获取设备

private AudioDeviceInfo findAudioDevice(int deviceFlag, int deviceType) {
AudioManager manager = (AudioManager) getActivity().getSystemService(Context.AUDIO_SERVICE);
AudioDeviceInfo[] adis = manager.getDevices(deviceFlag);
for (AudioDeviceInfo adi : adis) {
if (adi.getType() == deviceType) {
return adi;
}
}
return null;
}

这里我设置了首选设备。

    int i = 0;
byte[] music = null;
InputStream is = getActivity().getResources().openRawResource(R.raw.score);

AudioTrack at = new AudioTrack(AudioManager.STREAM_MUSIC, 44100,
AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT,
AudioTrack.getMinBufferSize(44100,
AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT), AudioTrack.MODE_STREAM);
at.setPreferredDevice(mAudioOutputDevice);

try{
music = new byte[512];
at.play();

while((i = is.read(music)) != -1)
at.write(music, 0, i);

} catch (IOException e) {
e.printStackTrace();
}

at.stop();
at.release();

最佳答案

我能够使用 MediaPlayer 类和 USB 2.0 外部立体声适配器(如下所示)播放声音。只需将适配器连接到 Raspberry Pi 上的空 USB 插槽,并将音频输入到适配器即可。

final MediaPlayer mp = MediaPlayer.create(getActivity(), R.raw.score);
mp.start();

enter image description here

关于android - MediaPlayer 无法在 Android Things Raspberry Pi 3 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49246059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com