2017-09-05 66 views
-1

我有以下代码:停止叫在状态1的错误(-38,0)

mp = new MediaPlayer(); 
    try { 
     mp.setDataSource(URL); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     @Override 
     public void onPrepared(MediaPlayer mediaPlayer) { 
      mediaPlayer.start(); 
     } 
    }); 
    mp.prepareAsync(); 

我做我应该按顺序做完全相同的事情有正确的媒体播放器的状态但我仍然有错误:

stop called in state 1 error (-38, 0)

任何人都可以帮忙吗?非常感谢!

更新: 我的代码运行正常了一些链接我在网络上找到的,但它不能发挥出自己的MP3文件在我的服务器如链接:http://111.blabla/wms/wp-content/upload/audio/mysong.mp3 使用VLC可以播放我的文件

回答

0

错误38意味着你是问在MediaPlayer做一些事情的时候处于错误状态

看看在媒体播放器状态图上Android文档

MediaPlayer state diagram

根据图,你必须在调用start()之前调用setDataSource()并准备() 。

以前可能发生了什么问题。你的logcat应该指向你正确的方向。

由于您正在接收准备异步回调,我猜测数据源中有问题。

你的setDataSource看起来有点怪,因为我expectaion是一样的东西

setDataSource(currentConext, url) 

并不仅仅是

setDataSource(url) 
+0

我的程序不崩溃,logcat中仅显示 –

+0

你能提供你的logcat的?你也可以尝试附加ErrorListener,它可以为你提供一些有用的信息 – cristallo