【问题标题】:Cannot cast MediaPlayerController to music player - getting exception无法将 MediaPlayerController 投射到音乐播放器 - 出现异常
【发布时间】:2014-10-25 18:20:37
【问题描述】:

您好,我尝试在我的音乐播放器应用程序中使用媒体播放器控制器,但是当我使用 musicplayer.setMediaPlayer 时出现异常。这是我的代码和 logcat 错误的 sn-p。

musicPlayer = MediaPlayer.create(MusicPlayer.this, uri);
        musicPlayer.setWakeMode(this.getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
        MediaController musicControl = new MediaController(this);
        musicControl.show();
        musicControl.setMediaPlayer((MediaPlayerControl) musicPlayer);
        musicPlayer.start();

这是logcat

Process: com.tproductions.Openit, PID: 11382
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tproductions.Openit/com.tproductions.Openit.MusicPlayer}: java.lang.ClassCastException: android.media.MediaPlayer cannot be cast to android.widget.MediaController$MediaPlayerControl
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2237)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2286)
        at android.app.ActivityThread.access$800(ActivityThread.java:144)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1246)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:212)
        at android.app.ActivityThread.main(ActivityThread.java:5135)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:877)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
        at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.ClassCastException: android.media.MediaPlayer cannot be cast to android.widget.MediaController$MediaPlayerControl
        at com.tproductions.Openit.MusicPlayer.onCreate(MusicPlayer.java:49)
        at android.app.Activity.performCreate(Activity.java:5231)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)

任何想法我该如何解决这个问题?非常感谢

【问题讨论】:

    标签: android audio-player mediacontroller android-music-player


    【解决方案1】:

    问题是MediaPlayer 没有实现MediaController.MediaPlayerControl

    你有两个我能想到的选择...

    首选是扩展MediaPlayer并实现接口。示例...

    public class MyMediaPlayer extends MediaPlayer
        implements MediaController.MediaPlayerControl {
    
        ...
    
    }
    

    ...这将允许您在调用 musicControl.setMediaPlayer(...) 时使用 MyMediaPlayer 的实例。

    或者,只需在您的Activity 上实现接口。示例...

    public class MyActivity extends Activity
        implements MediaController.MediaPlayerControl {
    
        ...
    
    }
    

    当您在 Activity 中调用 musicControl.setMediaPlayer(...) 时,您只需将 this 作为参数传递。

    【讨论】:

      猜你喜欢
      • 2017-08-23
      • 2012-11-30
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多