Przeglądaj źródła

<注册界面增加喇叭和麦克风测试>

weizhengliang 4 lat temu
rodzic
commit
6a3ebf4800

+ 1 - 1
app/build.gradle

@@ -31,7 +31,7 @@ android {
         minSdkVersion 15
         targetSdkVersion 26
         versionCode 1
-        versionName "1.49"
+        versionName "1.5"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
 
         buildConfigField "String", "BUILD_TIME", getDate()

+ 124 - 23
app/src/main/java/com/wdkl/callingbed/ui/InitActivity.java

@@ -5,8 +5,11 @@ import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.graphics.drawable.AnimationDrawable;
+import android.media.MediaPlayer;
+import android.media.MediaRecorder;
 import android.net.ConnectivityManager;
 import android.net.NetworkInfo;
+import android.os.Environment;
 import android.os.Handler;
 import android.os.Message;
 import android.util.Log;
@@ -40,6 +43,9 @@ import org.greenrobot.eventbus.Subscribe;
 import org.greenrobot.eventbus.ThreadMode;
 import org.json.JSONObject;
 
+import java.io.File;
+import java.io.IOException;
+
 import butterknife.Bind;
 import butterknife.OnClick;
 import okhttp3.Call;
@@ -47,6 +53,7 @@ import serialporttest.utils.SerialPortUtil;
 
 import static com.wdkl.callingbed.util.AutoRebootUtil.ethreboot;
 import static com.wdkl.callingbed.util.sendcommand.CallingBedSendCommand.closeHeart;
+import static com.wdkl.callingbed.util.sendcommand.CallingBedSendCommand.setHandsMIC;
 import static com.wdkl.callingbed.util.sendcommand.CallingBedSendCommand.setNurseBrightness;
 
 /**
@@ -95,6 +102,12 @@ public class InitActivity extends BaseActivity implements SerialPortUtil.ISerial
         serialPortUtil = MyApplication.serialPortUtil;
         serialPortUtil.setOnDataReceiveListener(this);
         serialPortUtil.setOnDataReceiveStringListener(this);
+
+        setHandsMIC(serialPortUtil, true);//面板mic有回音,需要禁掉
+        File file = new File(TEST_AUDIO_FILE_PATH);
+        if (!file.exists()) {
+            file.mkdir();
+        }
     }
 
     @Override
@@ -406,6 +419,12 @@ public class InitActivity extends BaseActivity implements SerialPortUtil.ISerial
     }
 
     private long clickTime = 0;
+    private boolean isRecord = false;
+    private boolean isPlay = false;
+    public static final String TEST_AUDIO_FILE_PATH = Environment.getExternalStorageDirectory().getPath() + "/test";
+    private String audiofilePath;
+    private MediaRecorder mediaRecorder;
+    private MediaPlayer mediaPlayer;
 
     /**
      * 监听呼叫按钮 buffer[5]   如果按下则 放松注册信息给后台
@@ -415,30 +434,24 @@ public class InitActivity extends BaseActivity implements SerialPortUtil.ISerial
 
         // mScreenExtinguishUtil.touchScreen();//===============================息屏
 
-        //双击测试喇叭及网络
-        if (buffer[5] == 1) {
-            long curTime = System.currentTimeMillis();
-            if (curTime - clickTime < 2000) {
-                Log.d("wzlll", "double click");
+        //测试喇叭及网络
+        if (buffer[4] == 1 || buffer[4] == 2) {
+            //long curTime = System.currentTimeMillis();
+            //if (curTime - clickTime < 2000) {
                 SoundPoolManager.getInstance().playSound(3);
                 new Thread(new Runnable() {
                     @Override
                     public void run() {
                         final boolean pingStatus = NetUtil.ping("192.168.101.1", 2, null);
-                        runOnUiThread(new Runnable() {
-                            @Override
-                            public void run() {
-                                if (pingStatus) {
-                                    ToastUtil.showToast("连接192.168.101.1成功!");
-                                } else {
-                                    ToastUtil.showToast("连接192.168.101.1失败, 请检查设备!");
-                                }
-                            }
-                        });
+                        if (pingStatus) {
+                            showTips("连接192.168.101.1成功!");
+                        } else {
+                            showTips("连接192.168.101.1失败, 请检查设备!");
+                        }
                     }
                 }).start();
-            }
-            clickTime = curTime;
+            //}
+            //clickTime = curTime;
         }
 
         //呼叫护士键短按/长按松开
@@ -448,12 +461,15 @@ public class InitActivity extends BaseActivity implements SerialPortUtil.ISerial
                 final String str = "MGR_REG_A" + Constants.DELIMITER + Constants.MAC_ADDRESS + Constants.DELIMITER + "4" + Constants.DELIMITER + android.os.Build.DISPLAY +"_"+Constants.MCU_VERSION_NUMBER +
                         Constants.DELIMITER + Constants.MAC_ADDRESS + Constants.DELIMITER + "FF:FF:FF:FF:FF:FF" + Constants.DELIMITER + SerialPortUtil.KEY_ID;
                 UdpSendUtil.sendManualReboot(str);
-                runOnUiThread(new Runnable() {
-                    @Override
-                    public void run() {
-                        ToastUtil.showToast("收到按键消息,发送注册信息:" + str);
-                    }
-                });
+                showTips("收到按键消息,发送注册信息:" + str);
+            }
+        }
+
+        //测试麦克风录音
+        if (buffer[6] == 2) {
+            if (!isRecord && !isPlay) {
+                startRecording();
+                updateHandler.sendEmptyMessageDelayed(111, 3000);
             }
         }
     }
@@ -475,6 +491,86 @@ public class InitActivity extends BaseActivity implements SerialPortUtil.ISerial
         }
     }
 
+    private void showTips(final String tips) {
+        runOnUiThread(new Runnable() {
+            @Override
+            public void run() {
+                ToastUtil.showToast(tips);
+            }
+        });
+    }
+
+    private void startRecording() {
+        showTips("开始录音");
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                mediaRecorder = new MediaRecorder();
+                try {
+                    audiofilePath = TEST_AUDIO_FILE_PATH + "/" + System.currentTimeMillis() + "_test.mp3";
+
+                    mediaRecorder.setOutputFile(audiofilePath);
+                    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);// 设置MediaRecorder的音频源为麦克风
+                    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);// 设置MediaRecorder录制的音频格式
+                    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);// 设置MediaRecorder录制音频的编码为amr
+                    mediaRecorder.prepare();
+                    mediaRecorder.start();
+                }  catch (IOException e) {
+                    Log.i("error", "call startAmr(File mRecAudioFile) failed!" + e.getMessage());
+                } finally {
+                    isRecord = false;
+                }
+            }
+        }).start();
+    }
+
+    private void stopRecord() {
+        showTips("结束录音");
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    mediaRecorder.stop();
+                    mediaRecorder.release();
+                    mediaRecorder = null;
+                    Thread.sleep(200);
+
+                    mediaPlayer = new MediaPlayer();
+                    mediaPlayer.reset();
+                    mediaPlayer.setDataSource(audiofilePath);
+                    mediaPlayer.setVolume(1.0f, 1.0f);
+                    mediaPlayer.prepare();
+                    mediaPlayer.start();
+                    mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
+                        @Override
+                        public void onCompletion(MediaPlayer player) {
+                            File file = new File(audiofilePath);
+                            if (file.exists()) {
+                                file.delete();
+                            }
+                            mediaPlayer.release();
+                        }
+                    });
+                    mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {
+                        @Override
+                        public boolean onError(MediaPlayer player, int what, int extra) {
+                            File file = new File(audiofilePath);
+                            if (file.exists()) {
+                                file.delete();
+                            }
+                            mediaPlayer.release();
+                            return false;
+                        }
+                    });
+                }catch (Exception e) {
+                    e.printStackTrace();
+                } finally {
+                    isPlay = false;
+                }
+            }
+        }).start();
+    }
+
     @SuppressLint("HandlerLeak")
     Handler updateHandler = new Handler() {
         public void handleMessage(Message msg) {
@@ -486,6 +582,11 @@ public class InitActivity extends BaseActivity implements SerialPortUtil.ISerial
                     ethreboot();
                     dateRefresh();
                     break;
+                case 111:
+                    if (!isPlay) {
+                        stopRecord();
+                    }
+                    break;
             }
         }
     };