Browse Source

<广播播放错误时增加提示,解决播放音量问题>

weizhengliang 4 years ago
parent
commit
b73be78696

+ 21 - 3
app/src/main/java/com/wdkl/callingbed/ui/CallingBedActivity.java

@@ -422,6 +422,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
     private final int MAIN_DATA_ERROR = 2004;
     private final int UPDATE_BROADCAST = 2005;
     private final int NEW_INCOMING_CALL = 2006;
+    private final int RESET_BROADCAST_VIEW = 2007;
     private MyHandler handler = new MyHandler(this);
 
     class MyHandler extends Handler {
@@ -485,6 +486,10 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                     case NEW_INCOMING_CALL:
                         //newCalling();
                         break;
+                    case RESET_BROADCAST_VIEW:
+                        tvBroadcasting.setText("");
+                        tvBroadcasting.setVisibility(View.INVISIBLE);
+                        break;
                 }
             } else {
                 // 没有实例不进行操作
@@ -1596,6 +1601,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) {
@@ -1735,6 +1741,7 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                         break;
                     case "broadcast_1":
                         boolean isPlay = false;
+                        handler.removeMessages(RESET_BROADCAST_VIEW);
                         switch (Integer.parseInt(broadCastEntity.getZoneId())) {
                             case 0:
                                 if (initDataEntity.getDeviceZone0().equals("1")) {
@@ -1775,23 +1782,25 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                                 String localAudioFile = isLocalAudioExist(broadCastEntity.getPath());
                                 if (localAudioFile != null) {
                                     LogUtil.d("broadcast", "play local media, url: " + localAudioFile);
+                                    bcStr = "本地";
                                     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) {
@@ -2509,8 +2518,17 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
         tvBroadcasting.setVisibility(View.INVISIBLE);
         //播放广播恢复默认状态
         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;

+ 25 - 0
app/src/main/java/com/wdkl/callingbed/util/MediaPlayerManger.java

@@ -6,6 +6,9 @@ import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.Looper;
 import android.os.Message;
+import android.util.Log;
+
+import com.wdkl.callingbed.MyApplication;
 
 /**
  * 单例的MediaPlayer操作,适用于播放网络歌曲的时候使用;播放本地歌曲请使用{}
@@ -45,6 +48,7 @@ public class MediaPlayerManger {
      */
     public interface PlayMusicCompleteListener {
         void playMusicComplete(int position);
+        void playMusicError();
     }
 
     private void createHandlerThreadIfNeed() {
@@ -126,6 +130,7 @@ public class MediaPlayerManger {
                 public void onPrepared(MediaPlayer player) {
                     if (mediaPlayer != null) {
                         mediaPlayer.start();
+                        setDefaultVolume();
                     }
                 }
             });
@@ -139,6 +144,7 @@ public class MediaPlayerManger {
             mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
                 @Override
                 public boolean onError(MediaPlayer player, int what, int extra) {
+                    playMusicError();
                     stopMediaPlayer();
                     return false;
                 }
@@ -146,6 +152,7 @@ public class MediaPlayerManger {
             mediaPlayer.prepareAsync();
         } catch (Exception e) {
             e.printStackTrace();
+            playMusicError();
         }
     }
 
@@ -198,6 +205,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);
     }
@@ -227,6 +245,13 @@ public class MediaPlayerManger {
         }
     }
 
+    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);
+        }
+    }
+
     public boolean isPlay() {
         if (mediaPlayer != null) {
             return mediaPlayer.isPlaying();

+ 10 - 8
build.gradle

@@ -3,10 +3,11 @@
 buildscript {
     repositories {
         jcenter()
-        maven {
-            url 'https://maven.google.com/'
-            name 'Google'
-        }
+        google()
+//        maven {
+//            url 'https://maven.google.com/'
+//            name 'Google'
+//        }
     }
     dependencies {
         classpath 'com.android.tools.build:gradle:2.3.3'
@@ -20,10 +21,11 @@ buildscript {
 allprojects {
     repositories {
         jcenter()
-        maven {
-            url 'https://maven.google.com/'
-            name 'Google'
-        }
+        google()
+//        maven {
+//            url 'https://maven.google.com/'
+//            name 'Google'
+//        }
     }
     gradle.taskGraph.whenReady {
         tasks.each { task ->