haijiang
2018-06-06 c53ce6d5cd9ea49128c4f6343371feebfef38a62
app/src/main/java/com/moral/yunfushao/fragment/FragmentMonitor.java
@@ -52,6 +52,7 @@
import com.moral.yunfushao.model.UpLoadParam;
import com.moral.yunfushao.model.VoiceBean;
import com.moral.yunfushao.ui.PanelView;
import com.moral.yunfushao.utils.AudioUtils;
import com.moral.yunfushao.utils.DebugUtils;
import org.greenrobot.eventbus.EventBus;
@@ -77,17 +78,20 @@
    private ArrayList<VoiceBean> voiceList = new ArrayList<>();
    AssetManager am;
    MediaPlayer mp;
    private boolean isVirating = false;
    private LinearLayout ll_status;
    private TextView tv_ljjl, tv_tishi, tv_desc, tv_shishi, tv_status;
    private PanelView pv;
    private ImageView iv_his, iv_status, iv_search, iv_bottom_status, iv_dianliang;
    private BluetoothService mBluetoothService;
    private ArrayList<String> realResult = new ArrayList<>();
    private ArrayList<String> realHourResult = new ArrayList<>();
    private ArrayList<String> realHisResult = new ArrayList<>();
//    private ArrayList<String> realResult = new ArrayList<>();
//    private ArrayList<String> realHourResult = new ArrayList<>();
//    private ArrayList<String> realHisResult = new ArrayList<>();
    //上传数据
    private ArrayList<RecData> submitResult = new ArrayList<>();
    private StringBuilder stringResult = new StringBuilder();
    //临时存储上传数据
    private ArrayList<RecData> submitTempResult = new ArrayList<>();
@@ -105,6 +109,61 @@
    };
    private int checkTimeCount = 0;
    private void doHandleData(String result) {
        if(StringUtils.isEmpty(result)) {
            return;
        }
        //如果包含"时间校准成功确认信号"或重试5次以上则停止继续校准时间操作
        if(result.startsWith(BLECommon.BLE_REC_TIME) || checkTimeCount > 5) {
            DebugUtils.sendData("data", result);
            handler.removeCallbacks(runnable);
            checkTimeCount = 0;
            result = result.substring(14);
            doHandleData(result);
        }
        if(result.startsWith("3A")) {
            if(result.length() >= 16) {
                DebugUtils.sendData("data", result);
                parseHisData(result.substring(0, 16));
                result = result.substring(16);
                doHandleData(result);
            } else {
                stringResult.append(result);
            }
        }
        if(result.startsWith("5A")) {
            if(result.length() >= 40) {
                DebugUtils.sendData("data", result);
                parseCurrentData(result.substring(0, 40));
                result = result.substring(40);
                doHandleData(result);
            } else {
                stringResult.append(result);
            }
        }
        if(result.startsWith("7A")) {
            if(result.length() >= 8) {
                DebugUtils.sendData("data", result);
                parseHoutData(result.substring(0, 8));
                mBluetoothService.write(mBluetoothService.getWirteCharacteristic().getService().getUuid().toString(), mBluetoothService.getWirteCharacteristic().getUuid().toString(), BLECommon.BLE_SEND_7A, null);
                result = result.substring(8);
                doHandleData(result);
            } else {
                stringResult.append(result);
            }
        }
    }
    /**
     * 接收
@@ -162,18 +221,23 @@
                                    public void run() {
                                        Log.d("haijiang123", "收到消息====" + StringUtils.byteArrayToHexStr(characteristic.getValue()));
                                        String result = StringUtils.byteArrayToHexStr(characteristic.getValue());
                                        //实时数据
                                        parseCurrentData(result);
                                        parseHisData(result);
                                        parseHoutData(result);
                                        if(result.equals(BLECommon.BLE_REC_TIME) || checkTimeCount > 5) {
                                            handler.removeCallbacks(runnable);
                                        }
                                        if (result.startsWith("7A")) {
                                            mBluetoothService.write(mBluetoothService.getWirteCharacteristic().getService().getUuid().toString(), mBluetoothService.getWirteCharacteristic().getUuid().toString(), BLECommon.BLE_SEND_7A, null);
                                        }
                                        DebugUtils.sendData("data", result);
                                        //处理数据叠罗汉
                                        stringResult.append(result);
                                        result = stringResult.toString();
                                        doHandleData(result);
                                        stringResult = new StringBuilder();
                                        //实时数据
//                                        parseCurrentData(result);
//                                        parseHisData(result);
//                                        parseHoutData(result);
//
//                                        if (result.startsWith("7A")) {
//                                            mBluetoothService.write(mBluetoothService.getWirteCharacteristic().getService().getUuid().toString(), mBluetoothService.getWirteCharacteristic().getUuid().toString(), BLECommon.BLE_SEND_7A, null);
//                                        }
                                    }
                                });
                            }
@@ -452,7 +516,7 @@
                    message.what = 1;
                    heartHandler.sendMessage(message);
                }
            }, 0, 1000 * 10);
            }, 0, 1000 * 30);
        }
    }
@@ -565,17 +629,17 @@
     */
    private int preLevel = -1;
    private void parseCurrentData(String result) {
        if (result.startsWith("5A")) {
            realResult.clear();
            realResult.add(result);
        } else {
            realResult.add(result);
        }
        String nowResult = "";
        for (String s : realResult) {
            nowResult += s;
        }
    private void parseCurrentData(String nowResult) {
//        if (result.startsWith("5A")) {
//            realResult.clear();
//            realResult.add(result);
//        } else {
//            realResult.add(result);
//        }
//        String nowResult = "";
//        for (String s : realResult) {
//            nowResult += s;
//        }
        /**
         * 20个字节,5A开头  5B结尾
         */
@@ -625,17 +689,29 @@
                pv.setPercent((float) (shishiValue * (0.25 / 0.16)));
                showStatus(0);
                stop();
                if(isVirating){
                    isVirating = false;
                    AudioUtils.virateCancle(getActivity());
                }
                preLevel = -1;
            } else if (shishiValue >= 0.16 && shishiValue < 0.8) {
                data.setIs_warn(1);
                pv.setPercent((float) (0.25 + shishiValue * (0.25 / 0.8)));
                showStatus(1);
                play(0);
                if(!isVirating){
                    isVirating = true;
                    AudioUtils.vibrate(getActivity(), new long[]{1000, 1000, 1000, 1000}, 0);
                }
            } else if (shishiValue >= 0.8 && shishiValue < 2) {
                data.setIs_warn(1);
                showStatus(2);
                pv.setPercent((float) (0.5 + shishiValue * (0.25 / 2)));
                play(1);
                if(!isVirating){
                    isVirating = true;
                    AudioUtils.vibrate(getActivity(), new long[]{1000, 1000, 1000, 1000}, 0);
                }
            } else if (shishiValue >= 2) {
                data.setIs_warn(1);
                showStatus(3);
@@ -645,9 +721,13 @@
                    pv.setPercent(1.0f);
                }
                play(2);
                if(!isVirating){
                    isVirating = true;
                    AudioUtils.vibrate(getActivity(), new long[]{1000, 1000, 1000, 1000}, 0);
                }
            }
            submitResult.add(data);
            realResult.clear();
//            realResult.clear();
        }
    }
@@ -658,17 +738,17 @@
     */
    private AlertDialog testDialog;
    private void parseHoutData(String result) {
        if (result.startsWith("7A")) {
            realHourResult.clear();
            realHourResult.add(result);
        } else {
            realHourResult.add(result);
        }
        String nowResult = "";
        for (String s : realHourResult) {
            nowResult += s;
        }
    private void parseHoutData(String nowResult) {
//        if (result.startsWith("7A")) {
//            realHourResult.clear();
//            realHourResult.add(result);
//        } else {
//            realHourResult.add(result);
//        }
//        String nowResult = "";
//        for (String s : realHourResult) {
//            nowResult += s;
//        }
        if (!TextUtils.isEmpty(nowResult) && nowResult.length() == 8 && nowResult.startsWith("7A") && nowResult.endsWith("7B")) {
            if(DebugUtils.debug_mode) {
@@ -698,17 +778,17 @@
    /**
     * 孕妇哨连接后上传的数据
     */
    private void parseHisData(String result) {
        if (result.startsWith("3A")) {
            realHisResult.clear();
            realHisResult.add(result);
        } else {
            realHisResult.add(result);
        }
        String nowResult = "";
        for (String s : realHisResult) {
            nowResult += s;
        }
    private void parseHisData(String nowResult) {
//        if (result.startsWith("3A")) {
//            realHisResult.clear();
//            realHisResult.add(result);
//        } else {
//            realHisResult.add(result);
//        }
//        String nowResult = "";
//        for (String s : realHisResult) {
//            nowResult += s;
//        }
        if (!TextUtils.isEmpty(nowResult) && nowResult.length() == 16 && nowResult.startsWith("3A") && nowResult.endsWith("3B")) {
            Log.d("hourdata", "=====nowResult=====" + nowResult);