- 浏览: 75054 次
- 性别:
- 来自: 武汉
文章分类
最新评论
在这个安卓手机ROM千奇百怪的时代,MediaPlayer作为一个JNI接口类,存在着很多坑爹的问题,目前在做的一个音乐播放器就遇到了这样一个异常:
经过自己的调试,发现居然是MediaPlayer.isPlaying()这个方法频繁调用导致的,原本想把判断音乐是否在播放写的省事儿些,可没想到这个错误一出,拨打电话时音乐还在播放,挂断电话后当前音乐还不受控制,切到下一首或者上一首才可以控制播放暂停。
终于明白了谷歌原生Music源码里面为什么要用成员变量去标记音乐的状态了,这个问题的解决方法就是家一个成员变量private boolean mPlaying;暂停时赋值false,播放时赋值true
E/MediaPlayer﹕ internal/external state mismatch corrected
经过自己的调试,发现居然是MediaPlayer.isPlaying()这个方法频繁调用导致的,原本想把判断音乐是否在播放写的省事儿些,可没想到这个错误一出,拨打电话时音乐还在播放,挂断电话后当前音乐还不受控制,切到下一首或者上一首才可以控制播放暂停。
终于明白了谷歌原生Music源码里面为什么要用成员变量去标记音乐的状态了,这个问题的解决方法就是家一个成员变量private boolean mPlaying;暂停时赋值false,播放时赋值true
发表评论
-
android中string.xml通配符以及颜色
2016-11-29 21:42 1805string.xml <resources> ... -
使用zxing实现生成二维码
2016-11-28 00:58 641github: https://github.com/bill ... -
android将视频文件转化为图片
2016-11-24 00:04 2180public void getBitmapsFromVi ... -
android通过文件管理器选择文件
2016-11-22 23:36 1899public void openSystemF ... -
将bitmap保存为文件
2016-11-22 23:28 1413public void saveBitmap(Bitma ... -
Material Design动画(一)reveal effect
2016-09-22 22:47 496Animator animator = ViewAn ... -
Android将apk放置于asset目录下安装
2016-09-13 16:32 1123ServiceApkInstaller.java publ ... -
创建自定义控件在布局中的自定义属性
2016-09-11 21:15 6591.在values目录下新建attrs.xml < ... -
androidstudio搭建NDK开发环境
2016-09-08 18:53 20441.打开SDK Manager下载NDK 2.设置根目录中的 ... -
[Android Studio 权威教程]AS添加第三方库的6种方式(Jar,module,so等)
2016-09-05 18:07 834http://blog.csdn.net/yy13003263 ... -
android启动其他应用得service
2016-08-31 10:03 754Intent i=new Intent(); i.s ... -
android屏幕分辨率适配工具
2016-07-22 17:22 671下载附件后,执行 java -jar autolayout.j ... -
android不死服务的实现方法
2015-11-20 13:36 1259大部分应用在手机长按home键删除最近程序时,进程会被杀掉,本 ... -
android开机自启广播无效果的曲线解决方案
2015-10-04 23:24 2733AndroidManifest.xml <?xml ... -
CompletionService 实践
2015-04-26 20:02 591当向Executor提交批处理任务时,并且希望在它们完 ... -
Bitmap的简单应用
2015-03-23 23:56 794package com.example.b; imp ... -
listpreference
2015-01-07 23:02 644MyPreferencesActivity.java pa ... -
李刚安卓疯狂讲义
2014-02-11 23:30 37压缩分卷5个字 -
android开发工具
2014-01-29 00:07 625android开发工具 -
android 拖动条改变屏幕亮度
2013-04-26 00:29 1266main.xml <?xml version=&qu ...
相关推荐
customizer.jar、jmf.jar、multiplayer.jar、sound.jar、mediaplayer.jar customizer.jar、jmf.jar、multiplayer.jar、sound.jar、mediaplayer.jar
标题中的"MediaPlayer.dll"和"AxMediaPlayer.dll"是两个与媒体播放相关的动态链接库(Dynamic Link Library)文件,它们在Windows操作系统中扮演着关键角色。`.dll`文件是一种可重用代码的模块,包含了执行特定任务...
在“JMF lib.rar”这个压缩包中,包含了四个重要的JAR文件:`multiplayer.jar`、`mediaplayer.jar`、`jmf.jar` 和 `customizer.jar`,它们各自在JMF应用中扮演着不同的角色。 `jmf.jar` 是核心的JMF库,它提供了...
mediaplayer.jarmediaplayer.jarmediaplayer.jar
在您给出的【标题】和【描述】中,我们看到了几个关键的jar文件,它们分别是jmf.jar、mediaplayer.jar、customizer.jar、multiplayer.jar和sound.jar。下面我们将逐一解析这些库文件所代表的知识点。 1. **jmf.jar*...
= null && mediaPlayer.isPlaying()) { mediaPlayer.stop(); } mediaPlayer.release(); mediaPlayer = null; } }); ``` 接下来,我们要实现视频播放和暂停功能: ```java public void playVideo() { if ...
boolean isPlaying = mediaPlayer.isPlaying(); int duration = mediaPlayer.getDuration(); int currentPosition = mediaPlayer.getCurrentPosition(); ``` 5. **资源释放**:在适当的时候释放 `MediaPlayer`...
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { // 播放结束时执行的代码 } }); mediaPlayer.setOnErrorListener(new ...
这有链接地址可以自己下载 http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-client-419417.html#7372-jmf-2.1.1e-oth-JPR
mediaPlayer.setDataSource(filePath); mediaPlayer.prepare(); mediaPlayer.start(); ``` 而在播放视频时,由于需要显示画面,通常会配合`SurfaceView`一起使用。`SurfaceView`是一个特殊的视图,它提供了一个独立...
= null && mediaPlayer.isPlaying()) { mediaPlayer.stop(); mediaPlayer.release(); mediaPlayer = null; } } ``` **6. 其他功能** MediaPlayer还支持流式播放,可以播放网络上的音频或视频。只需将URL作为`...
QT_mediaplayer.rar是一个压缩包,其中包含了一个基于QT C++框架开发的媒体播放器程序。这个程序设计为跨平台,能够轻松地在Windows和Linux操作系统上运行,展现了QT库的强大功能和灵活性。 QT(Qt)是一个开源的...
if (mediaPlayer.isPlaying()) { Log.d("MediaPlayer", "Currently Playing"); } else { Log.d("MediaPlayer", "Not Playing"); } ``` #### 9. pause() 暂停当前的播放。当用户进行其他操作时,可以调用此方法...
= null && mediaPlayer.isPlaying()) { mediaPlayer.stop(); // 停止播放 mediaPlayer.release(); // 释放资源 } } }); mediaPlayer = new MediaPlayer(); try { mediaPlayer.setDataSource("path_to_your_...
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mediaPlayer) { // 播放结束后处理 } }); ``` 总的来说,`MediaPlayer`是...
if (mediaPlayer.isPlaying()) { mediaPlayer.pause(); playButton.setText("播放"); } else { mediaPlayer.start(); playButton.setText("暂停"); } } }); ``` `SeekBar`通常用于显示播放进度,可以通过...
= null && mediaPlayer.isPlaying()) { mediaPlayer.stop(); } mediaPlayer.release(); mediaPlayer = null; ``` 此外,对于MP3播放,还需注意以下几点: - 权限管理:如果音频文件存储在外部存储卡上,需要在...
= null && mediaPlayer.isPlaying()) { mediaPlayer.pause(); } } @Override protected void onDestroy() { super.onDestroy(); if (mediaPlayer != null) { mediaPlayer.stop(); mediaPlayer.release(); ...
if (mediaPlayer.isPlaying()) { mediaPlayer.pause(); } else { mediaPlayer.start(); } } }); mediaPlayer.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() { @Override public ...
= null && mediaPlayer.isPlaying()) { mediaPlayer.pause(); } } @Override protected void onDestroy() { super.onDestroy(); if (mediaPlayer != null) { mediaPlayer.stop(); mediaPlayer.release(); ...