繁体   English   中英

Media Player抛出异常

[英]Media Player throwing exception

我正在开发一个Android媒体播放器流应用程序。 我得到以下异常:

 12-11 11:12:06.298: INFO/StagefrightPlayer(34): setDataSource('10.0.2.2\a.mp3')
 12-11 11:12:06.308: DEBUG/mp(618): starting
 12-11 11:12:06.308: ERROR/MediaPlayer(618): start called in state 4
 12-11 11:12:06.308: ERROR/MediaPlayer(618): error (-38, 0)
 12-11 11:12:06.328: ERROR/MediaPlayer(618): error (1, -2147483648)
 12-11 11:12:06.328: ERROR/MediaPlayer(618): Error (-38,0)
 12-11 11:12:06.409: ERROR/MediaPlayer(618): Error (1,-2147483648)
  String url = "10.0.2.2\\\\a.mp3"; // your URL here MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); try { mediaPlayer.setDataSource(url); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { mediaPlayer.prepareAsync(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } Log.d("mp","starting"); mediaPlayer.start(); 

使用mediaPlayer.prepare ,出现以下错误消息:

 12-11 12:08:42.367: ERROR/MediaPlayer(980): error (1, -2147483648)
 12-11 12:08:42.367: WARN/System.err(980): java.io.IOException: Prepare failed.: status=0x1
 12-11 12:08:42.378: WARN/System.err(980):     at android.media.MediaPlayer.prepare(Native Method)
 12-11 12:08:42.378: WARN/System.err(980):     at mobiledo.pjct.Voicesms.onCreate(Voicesms.java:52)
 12-11 12:08:42.387: WARN/System.err(980):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
 12-11 12:08:42.387: WARN/System.err(980):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
 12-11 12:08:42.387: WARN/System.err(980):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
 12-11 12:08:42.387: WARN/System.err(980):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
 12-11 12:08:42.387: WARN/System.err(980):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
 12-11 12:08:42.387: WARN/System.err(980): at android.os.Handler.dispatchMessage(Handler.java:99)
 12-11 12:08:42.418: WARN/System.err(980):     at android.os.Looper.loop(Looper.java:123)
 12-11 12:08:42.418: WARN/System.err(980):     at android.app.ActivityThread.main(ActivityThread.java:3683)
 12-11 12:08:42.418: WARN/System.err(980):     at java.lang.reflect.Method.invokeNative(Native Method)
 12-11 12:08:42.418: WARN/System.err(980):     at java.lang.reflect.Method.invoke(Method.java:507)
 12-11 12:08:42.418: WARN/System.err(980):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
 12-11 12:08:42.418: WARN/System.err(980):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
 12-11 12:08:42.418: WARN/System.err(980):     at dalvik.system.NativeStart.main(Native Method)             

您异步准备MediaPlayer实例,但是此后立即调用start ,这会导致异常,因为MediaPlayer尚未准备好。 您应该注册一个OnPreparedListener (在调用prepareAsync之前),并且在此侦听器中调用start()

mediaPlayer.setOnPreparedListener(new OnPreparedListener(){
    public void onPrepared(MediaPlayer mp) {
        mp.start();
    }
});
mediaPlayer.prepareAsync();

调用.prepareAsync()会将播放器移到“准备”状态,而不是“准备”状态。 因此,要么调用.prepare ,要么实现并注册一个OnPreparedListener ,然后调用start()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM