@@ -22,6 +22,7 @@ Licensed to the Apache Software Foundation (ASF) under one
22
22
import android .media .MediaPlayer ;
23
23
import android .media .MediaPlayer .OnCompletionListener ;
24
24
import android .media .MediaPlayer .OnErrorListener ;
25
+ import android .media .MediaPlayer .OnInfoListener ;
25
26
import android .media .MediaPlayer .OnPreparedListener ;
26
27
import android .media .MediaRecorder ;
27
28
import android .os .Environment ;
@@ -48,7 +49,7 @@ Licensed to the Apache Software Foundation (ASF) under one
48
49
* android_asset: file name must start with /android_asset/sound.mp3
49
50
* sdcard: file name is just sound.mp3
50
51
*/
51
- public class AudioPlayer implements OnCompletionListener , OnPreparedListener , OnErrorListener {
52
+ public class AudioPlayer implements OnCompletionListener , OnPreparedListener , OnErrorListener , OnInfoListener {
52
53
53
54
// AudioPlayer modes
54
55
public enum MODE { NONE , PLAY , RECORD };
@@ -62,12 +63,18 @@ public enum STATE { MEDIA_NONE,
62
63
MEDIA_LOADING
63
64
};
64
65
66
+ // AudiorPlayer informations
67
+ public enum INFORMATION { MEDIA_BUFFERING_START ,
68
+ MEDIA_BUFFERING_END
69
+ };
70
+
65
71
private static final String LOG_TAG = "AudioPlayer" ;
66
72
67
73
// AudioPlayer message ids
68
74
private static int MEDIA_STATE = 1 ;
69
75
private static int MEDIA_DURATION = 2 ;
70
76
private static int MEDIA_POSITION = 3 ;
77
+ private static int MEDIA_INFO = 4 ;
71
78
private static int MEDIA_ERROR = 9 ;
72
79
73
80
// Media error codes
@@ -482,6 +489,8 @@ public float getDuration(String file) {
482
489
public void onPrepared (MediaPlayer player ) {
483
490
// Listen for playback completion
484
491
this .player .setOnCompletionListener (this );
492
+ // Listen for info aboutplayback
493
+ this .player .setOnInfoListener (this );
485
494
// seek to any location received while not prepared
486
495
this .seekToPlaying (this .seekOnPrepared );
487
496
// If start playing after prepared
@@ -531,6 +540,20 @@ public boolean onError(MediaPlayer player, int arg1, int arg2) {
531
540
return false ;
532
541
}
533
542
543
+ @ Override
544
+ public boolean onInfo (MediaPlayer player , int what , int extra ) {
545
+ LOG .d (LOG_TAG , "AudioPlayer.onInfo(" + what + ", " + extra + ")" );
546
+ switch (what ) {
547
+ case MediaPlayer .MEDIA_INFO_BUFFERING_START :
548
+ sendInfo (INFORMATION .MEDIA_BUFFERING_START );
549
+ break ;
550
+ case MediaPlayer .MEDIA_INFO_BUFFERING_END :
551
+ sendInfo (INFORMATION .MEDIA_BUFFERING_END );
552
+ break ;
553
+ }
554
+ return false ;
555
+ }
556
+
534
557
/**
535
558
* Set the state and send it to JavaScript.
536
559
*
@@ -543,6 +566,15 @@ private void setState(STATE state) {
543
566
this .state = state ;
544
567
}
545
568
569
+ /**
570
+ * Send information to Javascript.
571
+ *
572
+ * @param info
573
+ */
574
+ private void sendInfo (INFORMATION info ) {
575
+ sendStatusChange (MEDIA_INFO , null , (float )info .ordinal ());
576
+ }
577
+
546
578
/**
547
579
* Set the mode and send it to JavaScript.
548
580
*
0 commit comments