gpt4 book ai didi

Android:未调用 MediaPlayer onPrepared

转载 作者:太空宇宙 更新时间:2023-11-03 12:20:13 24 4
gpt4 key购买 nike

如标题所述,未调用 onPrepared() 重写方法。

mediaPlayer = new MediaPlayer();
mediaPlayer.setOnPreparedListener(new OnPreparedListener(){
@Override
public void onPrepared(MediaPlayer mp){
if (mp.equals(mediaPlayer)) isReady_mediaPlayer = true;

Log.e("I", "Media player has been loaded to memory !");
}
});

mediaPlayer = MediaPlayer.create(this, R.raw.my_sound_mp3);

最佳答案

这是因为您正在创建一个新的 MediaPlayer 对象。这个没有任何 onPreparededListener 设置。

在这里您创建并分配了一个 MediaPlayer 对象:

mediaPlayer = new MediaPlayer();

接下来在其上设置一个onPreparedListener

但随后您创建并分配了一个新的!此分配会覆盖您之前的行。

mediaPlayer = MediaPlayer.create(this, R.raw.my_sound_mp3);

这个没有设置onPreparedListener

要修复,请不要使用 create 方法,而是使用 setDataSource

AssetFileDescriptor afd = context.getResources().openRawResourceFd(R.raw.my_sound_mp3);
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setOnPreparedListener(new OnPreparedListener(){
@Override
public void onPrepared(MediaPlayer mp){
if (mp.equals(mediaPlayer)) isReady_mediaPlayer = true;
Log.e("I", "Media player has been loaded to memory !");
}
});
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
afd.close();
mediaPlayer.prepare();

关于Android:未调用 MediaPlayer onPrepared,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17895097/

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