MediaPlayer

方法1:

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

方法二:

    mediaPlayer = MediaPlayer.create(context,R.raw.sound);    mediaPlayer.setLooping(true);    mediaPlayer.setOnPreparedListener(new OnPreparedListener(){        @Override        公共无效onPrepared(MediaPlayer mp){            mp.start();        }    });

解决方案

根据文档,调用start()在播放MediaPlayer不需要获取其数据并对其进行处理的本地可用资源时有效。例如,播放原始文件夹中的音频资源。

如果尝试从远程源播放资源,则最好使用OnPreparedListener(),因为它可能涉及获取和解码媒体数据。

因此,如果您确定知道您的资源在本地可用并且长度较短,请转到方法1。否则,方法2将是合适的。

理想情况下,我更喜欢这样做。

MediaPlayer mediaPlayer =新的MediaPlayer();mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);mediaPlayer.setDataSource(getApplicationContext(),myUri);mediaPlayer.setOnPreparedListener(new OnPreparedListener(){@Override    公共无效onPrepared(MediaPlayer mp){        mp.start();    }});mediaPlayer.prepareAsync();

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。