I am using a method in asynctask in the class VideoSurfaceView.
But I am getting crash.
I tried other ways too but didn't worked. Below is the code:
in OnCreate method, ......
startPlayFirstVideo();
private void startPlayFirstVideo() {
new AsyncTask<Void, Void, FileCacheMediaDataSource>() {
@Override
protected FileCacheMediaDataSource doInBackground(Void... voids) {
locking = true;
lockResult = false;
reading = true;
new Thread(new Runnable() {
@Override
public void run() {
LockResult result = LockManager.getInstance().lock(LockReason.DISK_SCREENSAVER_READ_ACCESS);
lockResult = result.isLockSuccess();
if (!reading && lockResult) {
LockManager.getInstance().unlock(LockReason.DISK_SCREENSAVER_READ_ACCESS);
}
locking = false;
}
}).start();
String path = AppConst.SCREEN_SAVER_MEDIA_PATH + mVideoPath;
FileCacheMediaDataSource dataSource = new FileCacheMediaDataSource(path);
if (!locking && lockResult) {
LockManager.getInstance().unlock(LockReason.DISK_SCREENSAVER_READ_ACCESS);
}
reading = false;
return dataSource;
}
@Override
protected void onPostExecute(FileCacheMediaDataSource dataSource) {
super.onPostExecute(dataSource);
if (mMediaPlayer == null) {
return;
}
if (dataSource.getSize() == -1) {
LogD.d(TAG, "showErrorScreenSaver");
screenSaverError();
return;
}
try {
mMediaPlayer.setDataSource(dataSource);
mMediaPlayer.setLooping(true);
mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mMediaPlayer.start();
}
});
mMediaPlayer.prepare();
} catch (IOException e) {
LogD.i(TAG, "startPlayFirstVideo = " + e.toString());
}
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
I am getting error as,
12-23 08:28:11.108 7759 7759 E AndroidRuntime: Process: com.example.custom, PID: 7759
12-23 08:28:11.108 7759 7759 E AndroidRuntime: java.lang.IllegalStateException
12-23 08:28:11.108 7759 7759 E AndroidRuntime: at android.media.MediaPlayer._prepare(Native Method)
12-23 08:28:11.108 7759 7759 E AndroidRuntime: at android.media.MediaPlayer.prepare(MediaPlayer.java:1274)
12-23 08:28:11.108 7759 7759 E AndroidRuntime: at com.example.custom.view.VideoSurfaceView$1.onPostExecute(VideoSurfaceView.java:155)
12-23 08:28:11.108 7759 7759 E AndroidRuntime: at com.example.custom.view.VideoSurfaceView$1.onPostExecute(VideoSurfaceView.java:106)
12-23 08:28:11.108 7759 7759 E AndroidRuntime: at android.os.AsyncTask.finish(AsyncTask.java:755)
12-23 08:28:11.108 7759 7759 E AndroidRuntime: at android.os.AsyncTask.access$900(AsyncTask.java:192)
12-23 08:28:11.108 7759 7759 E AndroidRuntime: at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:772)
12-23 08:28:11.108 7759 7759 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:107)
12-23 08:28:11.108 7759 7759 E AndroidRuntime: at android.os.Looper.loop(Looper.java:214)
12-23 08:28:11.108 7759 7759 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7356)
12-23 08:28:11.108 7759 7759 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
12-23 08:28:11.108 7759 7759 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
12-23 08:28:11.108 7759 7759 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
I am getting error in mMediaPlayer.prepare();. Kindly let me know where exactly I need to fix this issue.
I tried using mMeiaPlayer.perpareAsync too but didn't worked.
from Illegal State Exception in mediaplayer.prepare android
No comments:
Post a Comment