可以解释为什么会发生这种情况。我看到媒体播放器如何在模拟器上运行良好,但有时候在实际设备上工作...而我无法解决这个问题,因为模拟器没有显示错误。
创建mp的代码
mp = new MediaPlayer();
mp.setDataSource(myStream);
mp.prepare(); //also consider mp.prepareAsync().
使用stacktrace
找到的错误java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:200)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
at java.lang.Thread.run(Thread.java:1096)
Caused by: java.lang.IllegalStateException
at android.media.MediaPlayer._start(Native Method)
at android.media.MediaPlayer.start(MediaPlayer.java:798)
at myApp.activity.com.myApp.play(myApp.java:320)
at myApp.activity.com.myApp$PlayOn.doInBackground(myApp.java:454)
at myApp.activity.com.myApp$PlayOn.doInBackground(myApp.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:185)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
和如果按照myApp.java 454
进行崩溃的行mp.start();
请解释或帮助我。
我会很高兴的问候,彼得。
答案 0 :(得分:0)
您只能在MediaPlayer
为prepared或paused时致电开始,如documenatation中所述。
这里可能存在一个时间问题,导致错误仅在某些情况下出现。即如果代码的某些部分在代码的另一部分之前运行,则MediaPlayer
将处于错误状态并且会出现此崩溃。搜索调用MediaPlayer
上的状态转换方法的点,并查看是否有可能以错误的顺序调用它们。
如果你不注意,看到你使用期货可以很容易地以错误的顺序调用方法。