2014-10-25 3 views
1

안녕하세요. 내 뮤직 플레이어 앱에서 미디어 플레이어 컨트롤러를 사용하려했지만 musicplayer.setMediaPlayer를 사용할 때 예외가 발생했습니다. 다음은 코드 및 로그캣 오류에 대한 내 스 니펫입니다.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(); 

이것은

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

문제는 MediaPlayerMediaController.MediaPlayerControl을 구현하지 않습니다.

당신은 MediaPlayer을 확장하고 인터페이스를 구현하는

첫 번째 선택은 내가 생각할 수있는 두 가지 선택 ... 있습니다. 예 ...

public class MyMediaPlayer extends MediaPlayer 
    implements MediaController.MediaPlayerControl { 

    ... 

} 

... 그건 당신이 musicControl.setMediaPlayer(...)에 호출 MyMediaPlayer의 인스턴스를 사용할 수있다.

또는 Activity에 인터페이스를 구현하기 만하면됩니다. 예 ...

public class MyActivity extends Activity 
    implements MediaController.MediaPlayerControl { 

    ... 

} 

당신이 musicControl.setMediaPlayer(...) 전화

Activity 당신은 단순히 매개 변수로 this을 통과 할 것입니다.