2222
2323import androidx .annotation .NonNull ;
2424import androidx .annotation .Nullable ;
25+ import androidx .appcompat .app .AlertDialog ;
2526
2627import java .util .ArrayList ;
2728import java .util .List ;
@@ -57,6 +58,8 @@ public class AudienceFragment extends BaseFragment implements IMediaPlayerObserv
5758 private SeekBar volSeekBar ;
5859 private Switch rtcSwitcher ;
5960 private Spinner channelSpinner ;
61+ private AlertDialog mPlayerFailDialog ;
62+ private AlertDialog mPlayerCompletedDialog ;
6063
6164 @ Nullable
6265 @ Override
@@ -120,7 +123,7 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
120123 * The SDK uses this class to report to the app on SDK runtime events.
121124 */
122125 config .mEventHandler = iRtcEngineEventHandler ;
123- config .mAreaCode = ((MainApplication )getActivity ().getApplication ()).getGlobalSettings ().getAreaCode ();
126+ config .mAreaCode = ((MainApplication ) getActivity ().getApplication ()).getGlobalSettings ().getAreaCode ();
124127 engine = RtcEngine .create (config );
125128 /**
126129 * This parameter is for reporting the usages of APIExample to agora background.
@@ -161,22 +164,25 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
161164 engine .startPreview ();
162165 // Set audio route to microPhone
163166 engine .setDefaultAudioRoutetoSpeakerphone (true );
164- if (isAgoraChannel ){
165- mediaPlayer .openWithAgoraCDNSrc (getUrl (), 0 );
166- }
167- else {
168- mediaPlayer .open (getUrl (), 0 );
169- }
167+ openPlayerWithUrl ();
170168 } catch (Exception e ) {
171169 e .printStackTrace ();
172170 getActivity ().onBackPressed ();
173171 }
174172 }
175173
174+ private void openPlayerWithUrl () {
175+ if (isAgoraChannel ) {
176+ mediaPlayer .openWithAgoraCDNSrc (getUrl (), 0 );
177+ } else {
178+ mediaPlayer .open (getUrl (), 0 );
179+ }
180+ }
181+
176182 @ Override
177183 public void onDestroy () {
178184 super .onDestroy ();
179- if (rtcStreaming ){
185+ if (rtcStreaming ) {
180186 engine .leaveChannel ();
181187 }
182188 mediaPlayer .stop ();
@@ -221,6 +227,7 @@ public void onJoinChannelSuccess(String channel, int uid, int elapsed) {
221227 @ Override
222228 public void run () {
223229 vol_control .setVisibility (View .VISIBLE );
230+ volSeekBar .setProgress (100 );
224231 }
225232 });
226233 }
@@ -351,8 +358,7 @@ private void toggleVideoLayout(boolean isMultiple) {
351358 video_row2 .setLayoutParams (new LinearLayout .LayoutParams (FrameLayout .LayoutParams .MATCH_PARENT , 0 , 1 ));
352359 // Create render view by RtcEngine
353360 SurfaceView surfaceView = RtcEngine .CreateRendererView (getContext ());
354- if (fl_local .getChildCount () > 0 )
355- {
361+ if (fl_local .getChildCount () > 0 ) {
356362 fl_local .removeAllViews ();
357363 }
358364 // Add to the local container
@@ -403,19 +409,54 @@ private String getUrl() {
403409
404410 @ Override
405411 public void onPlayerStateChanged (io .agora .mediaplayer .Constants .MediaPlayerState mediaPlayerState , io .agora .mediaplayer .Constants .MediaPlayerError mediaPlayerError ) {
406- Log . i ( TAG , "player state change to " + mediaPlayerState .name ());
412+ showShortToast ( "player state change to " + mediaPlayerState .name ());
407413 handler .post (new Runnable () {
408414 @ Override
409415 public void run () {
410416 switch (mediaPlayerState ) {
411417 case PLAYER_STATE_FAILED :
412- showLongToast (String .format ("media player error: %s" , mediaPlayerError .name ()));
418+ mediaPlayer .stop ();
419+ //showLongToast(String.format("media player error: %s", mediaPlayerError.name()));
420+ if (mPlayerFailDialog == null ) {
421+ mPlayerFailDialog = new AlertDialog .Builder (requireContext ())
422+ .setTitle (R .string .tip )
423+ .setCancelable (false )
424+ .setNegativeButton (R .string .cancel , (dialog , which ) -> {
425+ dialog .dismiss ();
426+ onBackPressed ();
427+ })
428+ .setPositiveButton (R .string .confirm , (dialog , which ) -> openPlayerWithUrl ())
429+ .create ();
430+ }
431+ mPlayerFailDialog .setMessage (getString (R .string .media_player_error , mediaPlayerError .name ()) + "\n \n " + getString (R .string .reopen_url_again ));
432+ mPlayerFailDialog .show ();
413433 break ;
414434 case PLAYER_STATE_OPEN_COMPLETED :
415435 mediaPlayer .play ();
416436 if (isAgoraChannel )
417437 loadAgoraChannels ();
418438 rtcSwitcher .setEnabled (true );
439+ if (mPlayerFailDialog != null ) {
440+ mPlayerFailDialog .dismiss ();
441+ }
442+ break ;
443+ case PLAYER_STATE_PLAYBACK_COMPLETED :
444+ mediaPlayer .stop ();
445+ if (mPlayerCompletedDialog == null ) {
446+ mPlayerCompletedDialog = new AlertDialog .Builder (requireContext ())
447+ .setTitle (R .string .tip )
448+ .setMessage (getString (R .string .media_player_complete ) + "\n \n " + getString (R .string .reopen_url_again ))
449+ .setNegativeButton (R .string .cancel , (dialog , which ) -> {
450+ dialog .dismiss ();
451+ onBackPressed ();
452+ })
453+ .setCancelable (false )
454+ .setPositiveButton (R .string .confirm , (dialog , which ) -> {
455+ openPlayerWithUrl ();
456+ })
457+ .create ();
458+ }
459+ mPlayerCompletedDialog .show ();
419460 break ;
420461 case PLAYER_STATE_STOPPED :
421462 default :
@@ -434,7 +475,7 @@ private void loadAgoraChannels() {
434475 private List <String > getChannelArray (int count ) {
435476 List <String > list = new ArrayList <>();
436477 for (int i = 0 ; i < count ; i ++) {
437- list .add ("Channel" +( i + 1 ));
478+ list .add ("Channel" + ( i + 1 ));
438479 }
439480 return list ;
440481 }
@@ -503,7 +544,7 @@ public void onAudioVolumeIndication(int i) {
503544 private final AdapterView .OnItemSelectedListener itemSelectedListener = new AdapterView .OnItemSelectedListener () {
504545 @ Override
505546 public void onItemSelected (AdapterView <?> adapterView , View view , int i , long l ) {
506- Log .i (TAG ,"Start to switch cdn, current index is " + mediaPlayer .getAgoraCDNLineCount ()+ ". target index is " + i );
547+ Log .i (TAG , "Start to switch cdn, current index is " + mediaPlayer .getAgoraCDNLineCount () + ". target index is " + i );
507548 mediaPlayer .switchAgoraCDNLineByIndex (i );
508549 }
509550
@@ -512,4 +553,14 @@ public void onNothingSelected(AdapterView<?> adapterView) {
512553
513554 }
514555 };
556+
557+ @ Override
558+ protected void onBackPressed () {
559+
560+ if (rtcSwitcher .isChecked ()) {
561+ rtcSwitcher .setChecked (false );
562+ } else {
563+ super .onBackPressed ();
564+ }
565+ }
515566}
0 commit comments