Monday, 7 February 2022

Illegal State Exception in mediaplayer.prepare android

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