Android MediaPlayer 常用方法介绍

Android MediaPlayer 常用方法介绍

方法:create(Context context, Uri uri)
解释:静态方法,通过Uri创建一个多媒体播放器。

方法:create(Context context, int resid)
解释:静态方法,通过资源ID创建一个多媒体播放器

方法:create(Context context, Uri uri, SurfaceHolder holder)
解释:静态方法,通过Uri和指定 SurfaceHolder 【抽象类】 创建一个多媒体播放器

方法: getCurrentPosition()
解释:返回 Int, 得到当前播放位置

方法: getDuration()
解释:返回 Int,得到文件的时间

方法:getVideoHeight()
解释:返回 Int ,得到视频的高度

方法:getVideoWidth()
解释:返回 Int,得到视频的宽度

方法:isLooping()
解释:返回 boolean ,是否循环播放

方法:isPlaying()
解释:返回 boolean,是否正在播放

方法:pause()
解释:无返回值 ,暂停

方法:prepare()
解释:无返回值,准备同步

方法:prepareAsync()
解释:无返回值,准备异步

方法:release()
解释:无返回值,释放 MediaPlayer 对象

方法:reset()
解释:无返回值,重置 MediaPlayer 对象

方法:seekTo(int msec)
解释:无返回值,指定播放的位置(以毫秒为单位的时间)

方法:setAudioStreamType(int streamtype)
解释:无返回值,指定流媒体的类型

方法:setDataSource(String path)
解释:无返回值,设置多媒体数据来源【根据 路径】

方法:setDataSource(FileDescriptor fd, long offset, long length)
解释:无返回值,设置多媒体数据来源【根据 FileDescriptor】

方法:setDataSource(FileDescriptor fd)
解释:无返回值,设置多媒体数据来源【根据 FileDescriptor】

方法:setDataSource(Context context, Uri uri)
解释:无返回值,设置多媒体数据来源【根据 Uri】

方法:setDisplay(SurfaceHolder sh)
解释:无返回值,设置用 SurfaceHolder 来显示多媒体

方法:setLooping(boolean looping)
解释:无返回值,设置是否循环播放

事件:setOnBufferingUpdateListener(MediaPlayer.OnBufferingUpdateListener listener)
解释:监听事件,网络流媒体的缓冲监听

事件:setOnCompletionListener(MediaPlayer.OnCompletionListener listener)
解释:监听事件,网络流媒体播放结束监听

事件:setOnErrorListener(MediaPlayer.OnErrorListener listener)
解释:监听事件,设置错误信息监听

事件:setOnVideoSizeChangedListener(MediaPlayer.OnVideoSizeChangedListener listener)
解释:监听事件,视频尺寸监听

方法:setScreenOnWhilePlaying(boolean screenOn)
解释:无返回值,设置是否使用 SurfaceHolder 显示

方法:setVolume(float leftVolume, float rightVolume)
解释:无返回值,设置音量

方法:start()
解释:无返回值,开始播放

方法:stop()
解释:无返回值,停止播放
发布了158 篇原创文章 · 获赞 2 · 访问量 4813
展开阅读全文

setOnCompletion方法为什么有时候会执行两次,有时候一次都不执行?

12-08

class OnCompletionListener implements android.media.MediaPlayer.OnCompletionListener { @Override public void onCompletion(MediaPlayer mp) { Log.i("mp3", "服务执行了OnCompletionListener方法"); statethreadFlag = true; mp.stop(); if (currIndex >= (list.size() - 1)) { Toast.makeText(getApplicationContext(), "歌曲全部播放完毕", Toast.LENGTH_LONG).show(); } else { currIndex++; start(); } } } @Override public int onStartCommand(Intent intent, int flags, int startId) { // TODO Auto-generated method stub Log.i("mp3", "服务执行了onstartcommand方法"); player = new MediaPlayer(); bundle = intent.getBundleExtra("sendListToService"); list = (ArrayList<HashMap<String, String>>) bundle.getSerializable("arraylist"); currIndex = bundle.getInt("currIndex"); start(); player.setOnCompletionListener(new OnCompletionListener()); return super.onStartCommand(intent, flags, startId); } public void start() { Log.i("mp3", "服务执行了start方法,开始播放歌曲"); if (bundle.getBoolean("flag")) { hMap = list.get(currIndex); player.reset(); try { player.setDataSource(hMap.get("path")); player.prepare(); // Log.i("mp3", "播放器准备完毕"); } catch (Exception e) { e.printStackTrace(); } player.start(); serviceFlag = 1; statethreadFlag = false; new Thread(new StateThread()) { }.start(); } else { } } 播放器是写在服务中的,想让播放器在放完一首歌后自动播放下一曲,可是有时候会重复一首或者跳一首和两首歌。找了半天也不知道哪里出了问题。 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览