| | |
| | | import android.bluetooth.BluetoothGattCharacteristic; |
| | | import android.bluetooth.BluetoothGattService; |
| | | import android.content.Context; |
| | | import android.content.DialogInterface; |
| | | import android.content.Intent; |
| | | import android.content.res.AssetManager; |
| | | import android.media.MediaPlayer; |
| | |
| | | import com.moral.yunfushao.model.UpLoadParam; |
| | | import com.moral.yunfushao.model.VoiceBean; |
| | | import com.moral.yunfushao.ui.PanelView; |
| | | import com.moral.yunfushao.utils.DebugUtils; |
| | | |
| | | import org.greenrobot.eventbus.EventBus; |
| | | import org.greenrobot.eventbus.Subscribe; |
| | |
| | | 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<>(); |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 接收 |
| | |
| | | public void run() { |
| | | 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); |
| | | // } |
| | | } |
| | | }); |
| | | } |
| | |
| | | /** |
| | | * 发送时间校准 |
| | | */ |
| | | handler.postDelayed(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | checkTime(); |
| | | } |
| | | }, 500); |
| | | handler.postDelayed(runnable, 5000); |
| | | |
| | | /** |
| | | * 一连上先发数据包 |
| | | */ |
| | |
| | | message.what = 1; |
| | | heartHandler.sendMessage(message); |
| | | } |
| | | }, 0, 1000 * 60); |
| | | }, 0, 1000 * 10); |
| | | } |
| | | } |
| | | |
| | |
| | | */ |
| | | 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结尾 |
| | | */ |
| | |
| | | play(2); |
| | | } |
| | | submitResult.add(data); |
| | | realResult.clear(); |
| | | // realResult.clear(); |
| | | } |
| | | } |
| | | |
| | |
| | | */ |
| | | 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")) { |
| | | |
| | | //-----------------------Test------------------------------------------// |
| | | // String aaa = MainApp.theApp.sharedPreferencesUtil.getTest()+"\n"+nowResult+" 收到时间:"+TimeUtil.getCurrentDate("yyyy-MM-dd HH:mm:ss"); |
| | | // MainApp.theApp.sharedPreferencesUtil.saveTest(aaa); |
| | | //-----------------------Test------------------------------------------// |
| | | 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(); |
| | | |
| | | //sendHourDataRec(); |
| | | |
| | | RecData data = new RecData(); |
| | | data.setType(1); |
| | | data.setIs_warn(0); |
| | |
| | | /** |
| | | * 孕妇哨连接后上传的数据 |
| | | */ |
| | | 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); |
| | | |
| | | //-----------------------Test------------------------------------------// |
| | | // String aaa = MainApp.theApp.sharedPreferencesUtil.getTest()+"\n"+nowResult; |
| | | // MainApp.theApp.sharedPreferencesUtil.saveTest(aaa); |
| | | //-----------------------Test------------------------------------------// |
| | | 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) + ""; |
| | |
| | | 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) { |