@@ -70,6 +70,7 @@ public void dispose() {
7070 rendererEventChannel .setStreamHandler (null );
7171 if (mediaPlayer != null ) {
7272 mediaPlayer .stop ();
73+ mediaPlayer .setEventListener (null );
7374 mediaPlayer .getVLCVout ().detachViews ();
7475 mediaPlayer .release ();
7576 mediaPlayer = null ;
@@ -125,7 +126,7 @@ public void onCancel(Object o) {
125126 // }
126127
127128 public void initialize (List <String > options ) {
128- this .options = options ;
129+ this .options = options ;
129130 libVLC = new LibVLC (context , options );
130131 mediaPlayer = new MediaPlayer (libVLC );
131132 setupVlcMediaPlayer ();
@@ -242,19 +243,19 @@ public void onEvent(MediaPlayer.Event event) {
242243 }
243244
244245 void play () {
245- if (mediaPlayer != null ) {
246+ if (mediaPlayer != null && ! mediaPlayer . isPlaying () ) {
246247 mediaPlayer .play ();
247248 }
248249 }
249250
250251 void pause () {
251- if (mediaPlayer != null ) {
252+ if (mediaPlayer != null && mediaPlayer . isPlaying () ) {
252253 mediaPlayer .pause ();
253254 }
254255 }
255256
256257 void stop () {
257- if (mediaPlayer != null ) {
258+ if (mediaPlayer != null && mediaPlayer . isPlaying () ) {
258259 mediaPlayer .stop ();
259260 }
260261 }
@@ -273,7 +274,9 @@ void setStreamUrl(String url, boolean isAssetUrl, boolean autoPlay, long hwAcc)
273274 if (mediaPlayer == null ) return ;
274275
275276 try {
276- mediaPlayer .stop ();
277+ if (mediaPlayer .isPlaying ()) {
278+ mediaPlayer .stop ();
279+ }
277280 //
278281 Media media ;
279282 if (isAssetUrl )
@@ -295,15 +298,14 @@ void setStreamUrl(String url, boolean isAssetUrl, boolean autoPlay, long hwAcc)
295298 media .addOption (":no-omxil-dr" );
296299 }
297300 if (options != null ) {
298- for (String option : options )
301+ for (String option : options )
299302 media .addOption (option );
300303 }
301304 mediaPlayer .setMedia (media );
302305 media .release ();
303306 //
304- mediaPlayer .play ();
305- if (!autoPlay ) {
306- mediaPlayer .stop ();
307+ if (autoPlay ) {
308+ mediaPlayer .play ();
307309 }
308310 } catch (IOException e ) {
309311 log (e .getMessage ());
@@ -350,7 +352,7 @@ void seekTo(int location) {
350352
351353 long getPosition () {
352354 if (mediaPlayer == null ) return -1 ;
353-
355+
354356 return mediaPlayer .getTime ();
355357 }
356358
@@ -612,8 +614,7 @@ void castToRenderer(String rendererDevice) {
612614 if (isDisposed ) {
613615 return ;
614616 }
615- boolean isPlaying = mediaPlayer .isPlaying ();
616- if (isPlaying )
617+ if (mediaPlayer .isPlaying ())
617618 mediaPlayer .pause ();
618619
619620 // if you set it to null, it will start to render normally (i.e. locally) again
@@ -644,6 +645,7 @@ Boolean startRecording(String directory) {
644645 }
645646
646647 Boolean stopRecording () {
648+ if (mediaPlayer == null ) return true ;
647649 return mediaPlayer .record (null );
648650 }
649651
0 commit comments