2014-10-25 3 views
1

Здравствуйте, я попытался использовать контроллер медиаплеера в приложении для музыкального плеера, но когда я использую musicplayer.setMediaPlayer, я получил исключение. Вот мой фрагмент кода и ошибка logcat.Невозможно использовать MediaPlayerController для музыкального проигрывателя - получение исключения

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) 

какие-либо идеи, как я могу решить эту проблему? Большое спасибо

ответ

0

Проблема MediaPlayer не реализует MediaController.MediaPlayerControl.

У вас есть два варианта, которые я могу думать ...

Первый выбор заключается в расширении MediaPlayer и реализуют интерфейс. Пример ...

public class MyMediaPlayer extends MediaPlayer 
    implements MediaController.MediaPlayerControl { 

    ... 

} 

... что позволит вам использовать экземпляр MyMediaPlayer в вызове musicControl.setMediaPlayer(...).

В качестве альтернативы, просто реализуйте интерфейс на своем Activity. Пример ...

public class MyActivity extends Activity 
    implements MediaController.MediaPlayerControl { 

    ... 

} 

При вызове musicControl.setMediaPlayer(...) в вашем Activity вы бы просто передать this в качестве параметра.