gpt4 book ai didi

android - 使用 MediaPlayer 时,有时没有声音

转载 作者:行者123 更新时间:2023-11-29 02:32:40 38 4
gpt4 key购买 nike

为了录制文件输出,我使用 MediaPlayer。通常,当我点击按钮时,启动媒体文件。

但是,有时没有声音播放。

/MediaPlayer: mediaplayer went away with unhandled events
W/MediaPlayer-JNI: MediaPlayer finalized without being released

起初我认为在语音文件完成之前,点击按钮时出现这个问题。

但即使我反复按下按钮,有时也不会播放声音。

来源。

player = new MediaPlayer();
player.reset();
player.setAudioStreamType(AudioManager.STREAM_MUSIC);

try {
player.reset();
AssetFileDescriptor assetFileDescriptor =
getApplicationContext().getResource().openRawResourceFd(R.raw.sound);
player.setDataSource(assetFileDescriptor.getFileDescriptor(),
assetFileDescriptor.getStartOffset(), assetFileDescriptor.getLength());
player.prepare();
player.start();
} catch (Exception e) {
e.printStackTrace();
}

player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
if (player != null) {
player.stop();
player.release();
}
}
});

如何解决点击按钮时有时不播放声音?

谢谢。

最佳答案

如果要再次使用 MediaPlayer.release() 则没有理由调用它,因为调用 reset() 将释放所有正在使用的内存和编解码器.

初始化:

player = new MediaPlayer();
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
mediaPlayer.reset();
}
});

处理按钮点击:

void onButtonClicked() {
player.reset();
AssetFileDescriptor assetFileDescriptor =
getApplicationContext().getResource().openRawResourceFd(R.raw.sound);
player.setDataSource(assetFileDescriptor.getFileDescriptor(),
assetFileDescriptor.getStartOffset(), assetFileDescriptor.getLength());
player.prepare();
player.start();
}

关于android - 使用 MediaPlayer 时,有时没有声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48762914/

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