From 2ad201e08057f4dcd5f602fd2914d5f88a4125bd Mon Sep 17 00:00:00 2001 From: Raff Tsai Date: Wed, 10 Apr 2019 18:28:29 +0800 Subject: [PATCH] Settings: fix the NullPointerException when initiating media player If the input media resource is invalid, MediaPlayer create calling may fail and returns null, so trigger one NullPointerException. Add the null pointer judegement when calling seekto and so on. Test: manual Fixes: 130032215 Change-Id: I38cb08584aa4e4c2ce4dc58a5a095960c7bd1948 Signed-off-by: Hoff Cheng --- .../android/settings/widget/VideoPreference.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/widget/VideoPreference.java b/src/com/android/settings/widget/VideoPreference.java index 2d886732fa0..ca3e5ccb317 100644 --- a/src/com/android/settings/widget/VideoPreference.java +++ b/src/com/android/settings/widget/VideoPreference.java @@ -220,11 +220,15 @@ public class VideoPreference extends Preference { private void initMediaPlayer() { if (mMediaPlayer == null) { mMediaPlayer = MediaPlayer.create(mContext, mVideoPath); - mMediaPlayer.seekTo(0); - mMediaPlayer.setOnSeekCompleteListener(mp -> mVideoReady = true); - mMediaPlayer.setOnPreparedListener(mediaPlayer -> mediaPlayer.setLooping(true)); - if (mSurface != null) { - mMediaPlayer.setSurface(mSurface); + // when the playback res is invalid or others, MediaPlayer create may fail + // and return null, so need add the null judgement. + if (mMediaPlayer != null) { + mMediaPlayer.seekTo(0); + mMediaPlayer.setOnSeekCompleteListener(mp -> mVideoReady = true); + mMediaPlayer.setOnPreparedListener(mediaPlayer -> mediaPlayer.setLooping(true)); + if (mSurface != null) { + mMediaPlayer.setSurface(mSurface); + } } } }