`

坑爹的MediaPlayer.isPlaying()

阅读更多
在这个安卓手机ROM千奇百怪的时代,MediaPlayer作为一个JNI接口类,存在着很多坑爹的问题,目前在做的一个音乐播放器就遇到了这样一个异常:
E/MediaPlayer﹕ internal/external state mismatch corrected

经过自己的调试,发现居然是MediaPlayer.isPlaying()这个方法频繁调用导致的,原本想把判断音乐是否在播放写的省事儿些,可没想到这个错误一出,拨打电话时音乐还在播放,挂断电话后当前音乐还不受控制,切到下一首或者上一首才可以控制播放暂停。
终于明白了谷歌原生Music源码里面为什么要用成员变量去标记音乐的状态了,这个问题的解决方法就是家一个成员变量private boolean mPlaying;暂停时赋值false,播放时赋值true
分享到:
评论

相关推荐

    customizer.jar、jmf.jar、multiplayer.jar、sound.jar、mediaplayer.jar

    customizer.jar、jmf.jar、multiplayer.jar、sound.jar、mediaplayer.jar customizer.jar、jmf.jar、multiplayer.jar、sound.jar、mediaplayer.jar

    MediaPlayer.dll,AxMediaPlayer.dll

    标题中的"MediaPlayer.dll"和"AxMediaPlayer.dll"是两个与媒体播放相关的动态链接库(Dynamic Link Library)文件,它们在Windows操作系统中扮演着关键角色。`.dll`文件是一种可重用代码的模块,包含了执行特定任务...

    JMF lib.rar包含multiplayer.jar mediaplayer.jar jmf.jar customizer.jar

    在“JMF lib.rar”这个压缩包中,包含了四个重要的JAR文件:`multiplayer.jar`、`mediaplayer.jar`、`jmf.jar` 和 `customizer.jar`,它们各自在JMF应用中扮演着不同的角色。 `jmf.jar` 是核心的JMF库,它提供了...

    mediaplayer.jar

    mediaplayer.jarmediaplayer.jarmediaplayer.jar

    lib包(jmf.jar,mediaplayer.jar,customizer.jar,multiplayer.jar,sound.jar)

    在您给出的【标题】和【描述】中,我们看到了几个关键的jar文件,它们分别是jmf.jar、mediaplayer.jar、customizer.jar、multiplayer.jar和sound.jar。下面我们将逐一解析这些库文件所代表的知识点。 1. **jmf.jar*...

    SurfaceView+MediaPlayer视频播放以及小窗口和全屏播放

    = null && mediaPlayer.isPlaying()) { mediaPlayer.stop(); } mediaPlayer.release(); mediaPlayer = null; } }); ``` 接下来,我们要实现视频播放和暂停功能: ```java public void playVideo() { if ...

    MediaPlayer Demo_播放器简易代码_DEMO_

    boolean isPlaying = mediaPlayer.isPlaying(); int duration = mediaPlayer.getDuration(); int currentPosition = mediaPlayer.getCurrentPosition(); ``` 5. **资源释放**:在适当的时候释放 `MediaPlayer`...

    Android MediaPlayer使用方法简单介绍

    mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { // 播放结束时执行的代码 } }); mediaPlayer.setOnErrorListener(new ...

    jmf.jar mediaplayer.jar

    这有链接地址可以自己下载 http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-client-419417.html#7372-jmf-2.1.1e-oth-JPR

    Android提高第一篇之MediaPlayer.doc

    mediaPlayer.setDataSource(filePath); mediaPlayer.prepare(); mediaPlayer.start(); ``` 而在播放视频时,由于需要显示画面,通常会配合`SurfaceView`一起使用。`SurfaceView`是一个特殊的视图,它提供了一个独立...

    MediaPlayer(Android音视频播放器)

    = null && mediaPlayer.isPlaying()) { mediaPlayer.stop(); mediaPlayer.release(); mediaPlayer = null; } } ``` **6. 其他功能** MediaPlayer还支持流式播放,可以播放网络上的音频或视频。只需将URL作为`...

    QT_mediaplayer.rar

    QT_mediaplayer.rar是一个压缩包,其中包含了一个基于QT C++框架开发的媒体播放器程序。这个程序设计为跨平台,能够轻松地在Windows和Linux操作系统上运行,展现了QT库的强大功能和灵活性。 QT(Qt)是一个开源的...

    mediaplayer常用函数.txt

    if (mediaPlayer.isPlaying()) { Log.d("MediaPlayer", "Currently Playing"); } else { Log.d("MediaPlayer", "Not Playing"); } ``` #### 9. pause() 暂停当前的播放。当用户进行其他操作时,可以调用此方法...

    MediaPlayer音频和视频使用

    = null && mediaPlayer.isPlaying()) { mediaPlayer.stop(); // 停止播放 mediaPlayer.release(); // 释放资源 } } }); mediaPlayer = new MediaPlayer(); try { mediaPlayer.setDataSource("path_to_your_...

    MediaPlayer.rar

    mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mediaPlayer) { // 播放结束后处理 } }); ``` 总的来说,`MediaPlayer`是...

    android4.3mp3播放器

    if (mediaPlayer.isPlaying()) { mediaPlayer.pause(); playButton.setText("播放"); } else { mediaPlayer.start(); playButton.setText("暂停"); } } }); ``` `SeekBar`通常用于显示播放进度,可以通过...

    Android 中级教程之------Android MediaPlayer播放mp3的实例

    = null && mediaPlayer.isPlaying()) { mediaPlayer.stop(); } mediaPlayer.release(); mediaPlayer = null; ``` 此外,对于MP3播放,还需注意以下几点: - 权限管理:如果音频文件存储在外部存储卡上,需要在...

    安卓Android源码——(MediaPlayer音乐).zip

    = null && mediaPlayer.isPlaying()) { mediaPlayer.pause(); } } @Override protected void onDestroy() { super.onDestroy(); if (mediaPlayer != null) { mediaPlayer.stop(); mediaPlayer.release(); ...

    Android MediaPlayer+SurfaceView+自定义控制器实现视频播放demo

    if (mediaPlayer.isPlaying()) { mediaPlayer.pause(); } else { mediaPlayer.start(); } } }); mediaPlayer.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() { @Override public ...

    视频播发器,surfaceView

    = null && mediaPlayer.isPlaying()) { mediaPlayer.pause(); } } @Override protected void onDestroy() { super.onDestroy(); if (mediaPlayer != null) { mediaPlayer.stop(); mediaPlayer.release(); ...

Global site tag (gtag.js) - Google Analytics