安卓:在prepared的MediaPlayer不会被调用 [英] Android: MediaPlayer onPrepared is not being called

查看:601
本文介绍了安卓:在prepared的MediaPlayer不会被调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

作为标题所说,上prepared()方法覆盖不被调用。

 的MediaPlayer =新的MediaPlayer();
mediaPlayer.setOn preparedListener(新在preparedListener(){
   @覆盖
   在prepared(MediaPlayer的MP)公共无效{
      如果(mp.equals(媒体播放器))isReady_mediaPlayer = TRUE;      Log.e(I,媒体播放器已经被加载到内存中!);
   }
});媒体播放器= MediaPlayer.create(这一点,R.raw.my_sound_mp3);


解决方案

这是因为你正在创建一个新的的MediaPlayer 对象。这其中没有任何上preparededListener 设置就可以了。

在这里,您创建和分配的MediaPlayer 对象:

 的MediaPlayer =新的MediaPlayer();

接下来,您设置上preparedListener 就可以了。

但是当你创建并分配一个新的!这种分配会覆盖您的previous线。

  MEDIAPLAYER = MediaPlayer.create(这一点,R.raw.my_sound_mp3);

这其中有没有上preparedListener 设置就可以了。

要解决,不要使用创建方法,使用的setDataSource 而不是

  AssetFileDescriptor AFD = context.getResources()openRawResourceFd(R.raw.my_sound_mp3)。
的MediaPlayer媒体播放器=新的MediaPlayer();
mediaPlayer.setOn preparedListener(新在preparedListener(){
    @覆盖
    在prepared(MediaPlayer的MP)公共无效{
       如果(mp.equals(媒体播放器))isReady_mediaPlayer = TRUE;
       Log.e(I,媒体播放器已经被加载到内存中!);
    }
});
mediaPlayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
afd.close();
媒体播放器prepare()。

As title says, the onPrepared() overridden method is not being called.

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);

解决方案

It's because you are creating a new MediaPlayer object. This one does not have any onPreparededListener set on it.

Here you create and assign a MediaPlayer object:

mediaPlayer = new MediaPlayer();

Next you set an onPreparedListener on it.

But then you create and assign a new one! This assignment overrides your previous lines.

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

This one has no onPreparedListener set on it.

To fix, don't use the create method, use setDataSource instead

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();

这篇关于安卓:在prepared的MediaPlayer不会被调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆