Android的MediaPlayer的在preparedListenerAndroid、MediaPlayer、preparedListener

2023-09-07 22:43:32 作者:好小伙潇潇洒酒

我工作的一个简单的应用程序,并使用MediaPlayer的1活动玩一些背景噪音。我正在读的MediaPlayer起来,我不知道是否要实施在preparedListener触发start()方法。哪些优点/缺点每种方法?

方法1:

  MEDIAPLAYER = MediaPlayer.create(背景下,R.raw.sound);    mediaPlayer.setLooping(真);    mediaPlayer.start(); 

方法二:

  MEDIAPLAYER = MediaPlayer.create(背景下,R.raw.sound);    mediaPlayer.setLooping(真);    mediaPlayer.setOn preparedListener(新在preparedListener(){        @覆盖        在prepared(MediaPlayer的MP)公共无效{            mp.start();        }    }); 

解决方案

根据该文件,调用的start()当你在玩的是本地可用的资源是有效的在的MediaPlayer 不要求获取数据并进行处理用于播放。例如从原文件夹播放音频资源。

推荐hellogv 的二十一篇Android开发教程,说句真心话,几乎是每一篇都是精华,值得很多开发者借鉴 Android技巧 积木网 gimoo.net

如果你正在尝试播放来自远程源的资源,它是一个更好的做法去在preparedListener(),因为它可能涉及的读取和解码媒体数据。

所以,如果你肯定知道,你的资源是本地可用,是短的,去为方法1 。否则方法2 将是合适的。

在理想情况下,我preFER这一点。

 的MediaPlayer媒体播放器=新的MediaPlayer();mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);mediaPlayer.setDataSource(getApplicationContext(),myUri);mediaPlayer.setOn preparedListener(新在preparedListener(){@覆盖    在prepared(MediaPlayer的MP)公共无效{        mp.start();    }});。媒体播放器prepareAsync(); 

的MediaPlayer 向来棘手我一起工作。所以,我建议你开始与开发文档。穿过它,了解状态图。我相信它会帮助你解决很多你还没有跨来的问题。

I am working on a simple app and using a MediaPlayer to play some background noise in 1 activity. I am reading up on MediaPlayer and am not sure whether or not to implement an OnPreparedListener to trigger the start() method. What are the pros / cons to each approach?

Approach 1:

    mediaPlayer = MediaPlayer.create(context, R.raw.sound);
    mediaPlayer.setLooping(true);
    mediaPlayer.start();

Approach 2:

    mediaPlayer = MediaPlayer.create(context, R.raw.sound);
    mediaPlayer.setLooping(true);
    mediaPlayer.setOnPreparedListener(new OnPreparedListener() {

        @Override
        public void onPrepared(MediaPlayer mp) {
            mp.start();

        }
    });

解决方案

As per the docs, calling start() is effective when you are playing locally available resources for which the MediaPlayer does not require to fetch the data and process it for playing. For example playing audio resources from raw folder.

If you are trying to play a resource from remote source, its a better practice to go for OnPreparedListener() because it might involve fetching and decoding media data.

So, if you know for sure, that your resource is locally available and is of short length, go for Approach 1. Otherwise Approach 2 would be suitable.

Ideally, I prefer this.

MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.setOnPreparedListener(new OnPreparedListener(){

@Override
    public void onPrepared(MediaPlayer mp) {
        mp.start();
    }
});
mediaPlayer.prepareAsync();

The MediaPlayer has always been tricky for me to work with. So, I would recommend you to start with the developer docs. Go through it, understand the state diagram. I am sure it will help you in solving lot of questions which you are yet to come across.