From c53ce6d5cd9ea49128c4f6343371feebfef38a62 Mon Sep 17 00:00:00 2001 From: haijiang <181069201@qq.com> Date: Wed, 06 Jun 2018 09:03:45 +0800 Subject: [PATCH] 提交 --- app/src/main/java/com/moral/yunfushao/fragment/FragmentMonitor.java | 393 ++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 256 insertions(+), 137 deletions(-) diff --git a/app/src/main/java/com/moral/yunfushao/fragment/FragmentMonitor.java b/app/src/main/java/com/moral/yunfushao/fragment/FragmentMonitor.java index 7713628..818c010 100644 --- a/app/src/main/java/com/moral/yunfushao/fragment/FragmentMonitor.java +++ b/app/src/main/java/com/moral/yunfushao/fragment/FragmentMonitor.java @@ -1,6 +1,7 @@ package com.moral.yunfushao.fragment; import android.annotation.SuppressLint; +import android.app.AlertDialog; import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGattCharacteristic; import android.bluetooth.BluetoothGattService; @@ -51,6 +52,8 @@ 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; import org.greenrobot.eventbus.Subscribe; @@ -75,22 +78,92 @@ 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 ArrayList<RecData> submitHisResult = new ArrayList<>(); + + private StringBuilder stringResult = new StringBuilder(); + //������������������������ private ArrayList<RecData> submitTempResult = new ArrayList<>(); private Timer heartTimer, resTimer, chonglianTimer; - Handler handler = new Handler(); + + private Handler handler = new Handler(); + + private Runnable runnable = new Runnable(){ + @Override + public void run() { + checkTime(); + checkTimeCount++; + handler.postDelayed(this, 5000); + } + }; + + 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); + } + } + } /** * ������ @@ -146,12 +219,25 @@ getActivity().runOnUiThread(new Runnable() { @Override public void run() { -// Log.d("haijiang", "������������====" + StringUtils.byteArrayToHexStr(characteristic.getValue())); + Log.d("haijiang123", "������������====" + StringUtils.byteArrayToHexStr(characteristic.getValue())); String result = StringUtils.byteArrayToHexStr(characteristic.getValue()); + + //��������������������� + stringResult.append(result); + result = stringResult.toString(); + + doHandleData(result); + + stringResult = new StringBuilder(); + //������������ - parseCurrentData(result); - parseHisData(result); - parseHoutData(result); +// 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); +// } } }); } @@ -170,12 +256,8 @@ /** * ������������������ */ - handler.postDelayed(new Runnable() { - @Override - public void run() { - checkTime(); - } - }, 2000); + handler.postDelayed(runnable, 5000); + /** * ������������������������ */ @@ -204,7 +286,7 @@ submitTime = MainApp.theApp.sharedPreferencesUtil.getLoginInfo().getRefresh_frequency(); isupLoad = MainApp.theApp.sharedPreferencesUtil.getLoginInfo().getIs_open_upload(); doTask(); - }else if(msg.getType()==AppConfig.SET_MAIN_CALL){ + } else if (msg.getType() == AppConfig.SET_MAIN_CALL) { ((MainActivity) getActivity()).resetBLECallBack(); } } @@ -303,7 +385,8 @@ } private MaterialDialog clearDialog; - private void showClear(){ + + private void showClear() { clearDialog = MaterialDialogUtils.showCallBaclDialog(getActivity(), "������������", "���������������������������������?", new MaterialDialog.SingleButtonCallback() { @Override public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { @@ -313,16 +396,16 @@ if (!MainApp.theApp.bleManager.isConnectingOrConnected()) { return; } - if(mBluetoothService==null){ + if (mBluetoothService == null) { return; } - if(mBluetoothService.getWirteCharacteristic()==null){ + if (mBluetoothService.getWirteCharacteristic() == null) { return; } - if(mBluetoothService.getWirteCharacteristic().getService()==null){ + if (mBluetoothService.getWirteCharacteristic().getService() == null) { return; } - mBluetoothService.write(mBluetoothService.getWirteCharacteristic().getService().getUuid().toString(),mBluetoothService.getWirteCharacteristic().getUuid().toString(),BLECommon.BLE_CLEAR,null); + mBluetoothService.write(mBluetoothService.getWirteCharacteristic().getService().getUuid().toString(), mBluetoothService.getWirteCharacteristic().getUuid().toString(), BLECommon.BLE_CLEAR, null); clearDialog.dismiss(); } }, new MaterialDialog.SingleButtonCallback() { @@ -350,7 +433,7 @@ startActivity(intent); break; case R.id.iv_search: - showClear(); + showClear(); break; } @@ -433,7 +516,7 @@ message.what = 1; heartHandler.sendMessage(message); } - }, 0, 1000 * 10); + }, 0, 1000 * 30); } } @@ -448,27 +531,6 @@ heartHandler.sendMessage(message); } }, 0, 1000 * 8); - } - } - - private long timeComplete = 0; - - private void checkResComplete(final String result) { - if (resTimer == null) { - resTimer = new Timer(); - resTimer.schedule(new TimerTask() { - @Override - public void run() { - if (!TextUtils.isEmpty(result) && result.startsWith("3A")) { - timeComplete = 0; - } else { - timeComplete++; - } - if (timeComplete >= 120) { - submitResData(); - } - } - }, 0, 1000); } } @@ -491,7 +553,6 @@ HttpUtils.doPost(API.UPLOAD, params, CacheMode.DEFAULT, false, new HttpCallBack() { @Override public void onSuccess(String res, String msg) { - XLog.d("@@@@@@@@@@@@@@@@@@@@@@@@@@" + msg); submitTempResult.clear(); } @@ -505,44 +566,6 @@ } }); - } - - private void submitResData() { - //��������������������������� - HashMap<String, String> params = new HashMap<>(); - if (submitHisResult.size() == 0) { - return; - } - UpLoadParam up = new UpLoadParam(); - up.setUserid(MainApp.userId); - up.setAddress(MainApp.address); - up.setLat(MainApp.mLat); - up.setLon(MainApp.mLon); - up.setData(submitHisResult); - params.put("data", FastJsonTools.toJson(up)); - HttpUtils.doPost(API.UPLOAD, params, CacheMode.DEFAULT, false, new HttpCallBack() { - @Override - public void onSuccess(String res, String msg) { - XLog.d("������������������������" + msg); - submitHisResult.clear(); - if (resTimer != null) { - resTimer.cancel(); - resTimer = null; - } - } - - @Override - public void showLoadingDialog() { - - } - - @Override - public void onFail(int errno, String s) { - - } - }); - - } /** @@ -573,18 +596,18 @@ tv_tishi.setText("������������������"); tv_tishi.setBackgroundResource(R.mipmap.bt_zise); iv_bottom_status.setImageResource(R.mipmap.icon_zhongdu); - tv_desc.setText("���������������������������\n������������������������������������������"); + tv_desc.setText("���������������������������\n������������������������������������������"); iv_status.setImageResource(R.mipmap.icon_head_zhongfu); - tv_status.setText("������"); + tv_status.setText("������"); tv_status.setTextColor(getResources().getColor(R.color.zi_txt)); ll_status.setBackgroundResource(R.mipmap.bg_corner_zise); } else if (level == 3) { tv_tishi.setText("������������������"); tv_tishi.setBackgroundResource(R.mipmap.bt_red); iv_bottom_status.setImageResource(R.mipmap.icon_yanzhong); - tv_desc.setText("���������������������������\n������������������������������������������"); + tv_desc.setText("���������������������������\n������������������������������������������"); iv_status.setImageResource(R.mipmap.icon_danger); - tv_status.setText("������"); + tv_status.setText("������"); tv_status.setTextColor(getResources().getColor(R.color.red_txt)); ll_status.setBackgroundResource(R.mipmap.bg_conner_red); } else if (level == -1) { @@ -604,18 +627,19 @@ * * @param result */ - 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; - } -// Log.d("haijiang", "������������===nowResult=" + nowResult); + private int preLevel = -1; + + 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������ */ @@ -626,7 +650,7 @@ int b1 = Integer.parseInt(nowResult.substring(6, 8), 16); int b2 = Integer.parseInt(nowResult.substring(12, 14), 16); // XLog.d("���������" + shunshiValue + "|���������" + leijiValue + "-----���������" + b1 + "|" + b2); - tv_ljjl.setText(NumberUtils.getBigDecimalValue(leijiValue * 0.001, 3) + ""); + tv_ljjl.setText(NumberUtils.getBigDecimalValue(leijiValue * 0.01, 3) + ""); double shishiValue = NumberUtils.getBigDecimalValue((shunshiValue) / 100.0, 3); tv_shishi.setText(shishiValue + ""); @@ -665,16 +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); @@ -684,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(); } } @@ -695,21 +736,34 @@ * * @param result */ - 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; - } - if (!TextUtils.isEmpty(nowResult)&& nowResult.length() == 8&&nowResult.startsWith("7A") && nowResult.endsWith("7B")) { + private AlertDialog testDialog; + + 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) { + //-----------------------Test------------------------------------------// + String aaa = MainApp.theApp.sharedPreferencesUtil.getTest()+"\n"+nowResult+" ���������������"+TimeUtil.getCurrentDate("yyyy-MM-dd HH:mm:ss"); + MainApp.theApp.sharedPreferencesUtil.saveTest(aaa); + //-----------------------Test------------------------------------------// + } + + test(nowResult, TimeUtil.getCurrentDate("yyyy-MM-dd HH:mm:ss")); int hourValue = Integer.parseInt(nowResult.substring(2, 4), 16) * 256 + Integer.parseInt(nowResult.substring(4, 6), 16); - Log.d("haijiang", "������������������������="+ nowResult+"���������"+nowResult.substring(2, 4)+"|"+Integer.parseInt(nowResult.substring(2, 4), 16) * 256+"���������"+nowResult.substring(4, 6)+"|"+Integer.parseInt(nowResult.substring(4, 6), 16) +"���������"+(hourValue/100.0)); - sendHourDataRec(); +// Log.d("haijiang", "������������������������="+ nowResult+"���������"+nowResult.substring(2, 4)+"|"+Integer.parseInt(nowResult.substring(2, 4), 16) * 256+"���������"+nowResult.substring(4, 6)+"|"+Integer.parseInt(nowResult.substring(4, 6), 16) +"���������"+(hourValue/100.0)); + + //sendHourDataRec(); + RecData data = new RecData(); data.setType(1); data.setIs_warn(0); @@ -724,22 +778,27 @@ /** * ��������������������������������� */ - 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")) { - if (submitHisResult.size() == 0) { - //��������������������� - checkResComplete(result); + Log.d("hourdata", "=====nowResult=====" + nowResult); + + if(DebugUtils.debug_mode) { + //-----------------------Test------------------------------------------// + String aaa = MainApp.theApp.sharedPreferencesUtil.getTest() + "\n" + nowResult; + MainApp.theApp.sharedPreferencesUtil.saveTest(aaa); + //-----------------------Test------------------------------------------// } + String year = "20" + Integer.parseInt(nowResult.substring(2, 4), 16); String month = Integer.parseInt(nowResult.substring(4, 6), 16) + ""; String day = Integer.parseInt(nowResult.substring(6, 8), 16) + ""; @@ -749,10 +808,16 @@ StringBuilder time = new StringBuilder(); //yyyy-MM-dd HH:mm:ss time.append(year).append("-").append(month).append("-").append(day).append(" ").append(hour).append(":00:00"); - Log.d("haijiang", "=====time=====" + time.toString()); data.setTime(time.toString()); data.setValue(NumberUtils.getBigDecimalValue((resValue) / 100.0, 3)); - submitHisResult.add(data); + data.setType(1); + data.setIs_warn(0); + + ArrayList<RecData> temp = new ArrayList<>(); + temp.add(data); + Log.d("hourdata", "=====hourdata=====" + FastJsonTools.toJson(temp)); + test(nowResult, time.toString()); + submitHourData(temp); } } @@ -775,7 +840,24 @@ blesb.append(toHex(Integer.toHexString((now.get(Calendar.HOUR_OF_DAY))))); blesb.append(toHex(Integer.toHexString((now.get(Calendar.MINUTE))))); blesb.append("4B"); - mBluetoothService.write(mBluetoothService.getWirteCharacteristic().getService().getUuid().toString(), mBluetoothService.getWirteCharacteristic().getUuid().toString(), blesb.toString(), null); + + boolean result = mBluetoothService.write(mBluetoothService.getWirteCharacteristic().getService().getUuid().toString(), mBluetoothService.getWirteCharacteristic().getUuid().toString(), blesb.toString(), new BleCharacterCallback() { + @Override + public void onSuccess(BluetoothGattCharacteristic characteristic) { + String val = StringUtils.byteArrayToHexStr(characteristic.getValue()); + DebugUtils.sendData("time", val); + } + + @Override + public void onFailure(BleException exception) { + } + + @Override + public void onInitiatedResult(boolean result) { + //DebugUtils.sendData("time", String.valueOf(result)); + } + }); + DebugUtils.sendData("time", String.valueOf(result)); } private String toHex(String s) { @@ -787,6 +869,11 @@ } public void play(int level) { + Log.d("music", "preLevel:" + preLevel + "----level:" + level); + if (preLevel == level) { + return; + } + preLevel = level; if (mp != null) { stop(); } @@ -794,12 +881,14 @@ if (voiceBean.isDefaultMusic()) { mp = MediaPlayer.create(getActivity(), Uri.parse(voiceBean.getRes())); mp.start(); + mp.setLooping(true); } else { mp = new MediaPlayer(); try { mp.setDataSource(voiceBean.getSetMusic()); mp.prepare(); mp.start(); + mp.setLooping(true); } catch (IOException e) { e.printStackTrace(); } @@ -829,10 +918,40 @@ @Override public void onSuccess(String res, String msg) { XLog.d("������������������������������" + msg); - if (resTimer != null) { - resTimer.cancel(); - resTimer = null; - } +// if (resTimer != null) { +// resTimer.cancel(); +// resTimer = null; +// } + } + + @Override + public void showLoadingDialog() { + + } + + @Override + public void onFail(int errno, String s) { + + } + }); + } + + /** + * ������������������ + * + * @param data + * @param time + */ + private void test(String data, String time) { + //��������������������������� + HashMap<String, String> params = new HashMap<>(); + params.put("data", data); + params.put("time", time); + params.put("user_id", MainApp.userId); + HttpUtils.doPost(API.ORIGINALUPLOAD, params, CacheMode.DEFAULT, false, new HttpCallBack() { + @Override + public void onSuccess(String res, String msg) { + Log.d("hourdata","������������"); } @Override @@ -850,7 +969,7 @@ /** * ������������������ */ - private void sendHourDataRec(){ + private void sendHourDataRec() { if (MainApp.theApp.bleManager == null) { return; } -- Gitblit v1.8.0