Android的MediaPlayer的在preparedListener [英] Android MediaPlayer OnPreparedListener

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

问题描述

我工作的一个简单的应用程序,并使用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 不要求获取数据并进行处理用于播放。例如从原文件夹播放音频资源。

如果你正在尝试播放来自远程源的资源,它是一个更好的做法去在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.

这篇关于Android的MediaPlayer的在preparedListener的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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