Переглянути джерело

<广播播放错误增加提示,广播文件下载过程中禁止播放>

weizhengliang 4 роки тому
батько
коміт
1708057752

+ 33 - 2
app/src/main/java/com/wdkl/callingbed2/ui/CallingBedActivity.java

@@ -457,6 +457,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
     private final int MAIN_DATA_ERROR = 2004;
     private final int UPDATE_BROADCAST = 2005;
     private final int TURN_OFF_SCREEN = 2007;
+    private final int RESET_BROADCAST_VIEW = 2008;
     private MyHandler handler = new MyHandler(this);
 
     class MyHandler extends Handler {
@@ -522,6 +523,10 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     case TURN_OFF_SCREEN:
                         showBlackView();
                         break;
+                    case RESET_BROADCAST_VIEW:
+                        tvBroadcasting.setText("");
+                        tvBroadcasting.setVisibility(View.INVISIBLE);
+                        break;
                 }
             } else {
                 // 没有实例不进行操作
@@ -1667,6 +1672,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
     UdpEntity callNoticeEntity;
 
     private long updateAudioTime = 0;
+    private String bcStr = "";
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     public void onMoonEvent(MessageEvent messageEvent) {
@@ -1798,6 +1804,14 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                         break;
                     case "broadcast_1":
                         boolean isPlay = false;
+                        handler.removeMessages(RESET_BROADCAST_VIEW);
+                        if (isDownloadMp3) {
+                            tvBroadcasting.setVisibility(View.VISIBLE);
+                            tvBroadcasting.setText("======音频文件正在下载中,请等待======");
+                            handler.sendEmptyMessageDelayed(RESET_BROADCAST_VIEW, 30000);
+                            return;
+                        }
+
                         switch (Integer.parseInt(broadCastEntity.getZoneId())) {
                             case 0:
                                 if (initDataEntity.getDeviceZone0().equals("1")) {
@@ -1837,24 +1851,26 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                                 //=====================播放廣播===================//
                                 String localAudioFile = isLocalAudioExist(broadCastEntity.getPath());
                                 if (localAudioFile != null) {
+                                    bcStr = "本地";
                                     LogUtil.d("broadcast", "play local media, url: " + localAudioFile);
                                     MediaPlayerManger.getInstance()
                                             .playMusic(localAudioFile, this, MediaPlayerManger.PLAY);
                                 } else {
+                                    bcStr = "远端";
                                     LogUtil.d("broadcast", "play stream media, url: " + Constants.URL + Constants.URL_END + "/" + broadCastEntity.getPath());
                                     MediaPlayerManger.getInstance()
                                             .playMusic(Constants.URL + Constants.URL_END + "/"
                                                     + broadCastEntity.getPath(), this, MediaPlayerManger.PLAY);
                                 }
 
-                                if (!SharedPreferencesUtil.getStringSp(this, "SetUpBroadcastVoice", "voice").equals("")) {
+                                /*if (!SharedPreferencesUtil.getStringSp(this, "SetUpBroadcastVoice", "voice").equals("")) {
                                     float voice = Float.parseFloat(SharedPreferencesUtil.getStringSp(this, "SetUpBroadcastVoice", "voice"));
                                     if (mVolume == 1.0f) {
                                         MediaPlayerManger.getInstance().setVolume(voice);
                                     } else {
                                         MediaPlayerManger.getInstance().setVolume(0);
                                     }
-                                }
+                                }*/
                                 if (!broadCastEntity.getVoiceInt().equals("0")) {
                                     float voice = Float.parseFloat(broadCastEntity.getVoiceInt()) / 100;
                                     if (mVolume == 1.0f) {
@@ -2717,6 +2733,17 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         Constants.INTIME_BROADCAST = "";
     }
 
+    @Override
+    public void playMusicError() {
+        LogUtil.d("broadcast", "broadcast error!!!");
+        tvBroadcasting.setVisibility(View.VISIBLE);
+        tvBroadcasting.setText("==广播错误: " + bcStr + "==");
+        //播放广播恢复默认状态
+        Constants.INTIME_BROADCAST = "";
+        handler.removeMessages(RESET_BROADCAST_VIEW);
+        handler.sendEmptyMessageDelayed(RESET_BROADCAST_VIEW, 30000);
+    }
+
     private float mVolume = 1.0f;
 
     @Override
@@ -2815,6 +2842,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
 
     //广播的实体
     private ArrayList<AllBroadcastEntity> allBroadcastList = new ArrayList<>();
+    private boolean isDownloadMp3;
 
     //下载广播音频文件
     private void getBroadcastAudioFiles() {
@@ -2899,6 +2927,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
     private void checkAndDownloadMP3(final int index) {
         LogUtil.d("broadcast", "checkAndDownloadMP3 start..." + index);
         if (allBroadcastList != null && allBroadcastList.size() > 0 && index < allBroadcastList.size()) {
+            isDownloadMp3 = true;
             AllBroadcastEntity entity = allBroadcastList.get(index);
             String filePath = entity.getFileName();
             DownloadUtil2.getInstance().download(Constants.URL + Constants.URL_END + "/" + filePath,
@@ -2920,6 +2949,8 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                             checkAndDownloadMP3(index+1);
                         }
                     });
+        } else {
+            isDownloadMp3 = false;
         }
     }
 

+ 24 - 0
app/src/main/java/com/wdkl/callingbed2/util/MediaPlayerManger.java

@@ -7,6 +7,8 @@ import android.os.HandlerThread;
 import android.os.Looper;
 import android.os.Message;
 
+import com.wdkl.callingbed2.MyApplication;
+
 /**
  * 单例的MediaPlayer操作,适用于播放网络歌曲的时候使用;播放本地歌曲请使用{}
  * 参考博客链接 http://blog.csdn.net/u011516685/article/details/50510902
@@ -45,6 +47,7 @@ public class MediaPlayerManger {
      */
     public interface PlayMusicCompleteListener {
         void playMusicComplete(int position);
+        void playMusicError();
     }
 
     private void createHandlerThreadIfNeed() {
@@ -126,6 +129,7 @@ public class MediaPlayerManger {
                 public void onPrepared(MediaPlayer player) {
                     if (mediaPlayer != null) {
                         mediaPlayer.start();
+                        setDefaultVolume();
                     }
                 }
             });
@@ -139,12 +143,14 @@ public class MediaPlayerManger {
             mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
                 @Override
                 public boolean onError(MediaPlayer player, int what, int extra) {
+                    playMusicError();
                     stopMediaPlayer();
                     return false;
                 }
             });
             mediaPlayer.prepareAsync();
         } catch (Exception e) {
+            playMusicError();
             e.printStackTrace();
         }
     }
@@ -198,6 +204,17 @@ public class MediaPlayerManger {
         });
     }
 
+    public void playMusicError() {
+        handler.post(new Runnable() {
+            @Override
+            public void run() {
+                if (listener != null) {
+                    listener.playMusicError();
+                }
+            }
+        });
+    }
+
     public void releaseMediaPlayer() {
         playHandler.sendEmptyMessage(RELEASE);
     }
@@ -217,6 +234,13 @@ public class MediaPlayerManger {
         handler.removeCallbacksAndMessages(null);
     }
 
+    private void setDefaultVolume() {
+        if (!SharedPreferencesUtil.getStringSp(MyApplication.getAppContext(), "SetUpBroadcastVoice", "voice").equals("")) {
+            float voice = Float.parseFloat(SharedPreferencesUtil.getStringSp(MyApplication.getAppContext(), "SetUpBroadcastVoice", "voice"));
+            MediaPlayerManger.getInstance().setVolume(voice);
+        }
+    }
+
     /**
      * 音量设置
      * @param volume