├── .github └── ISSUE_TEMPLATE │ ├── bug_report.md │ └── custom.md ├── .gitignore ├── LICENSE ├── README.md ├── README_EN.md ├── android_sdk_source ├── Demo │ └── VpBluetoothSDK │ │ ├── .gitignore │ │ ├── .idea │ │ ├── compiler.xml │ │ ├── gradle.xml │ │ ├── kotlinc.xml │ │ ├── modules.xml │ │ └── vcs.xml │ │ ├── app │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── libs │ │ │ ├── AMap2DMap_6.0.0_AMapSearch_9.4.5_AMapLocation_6.2.0_20221026.jar │ │ │ ├── BmpConvert_V1.2.1-release.aar │ │ │ ├── JL_Watch_V1.10.0-release.aar │ │ │ ├── gson-2.2.4.jar │ │ │ ├── jl_bt_ota_V1.9.3-release.aar │ │ │ ├── jl_rcsp_V0.5.2-release.aar │ │ │ ├── libble-0.5.aar │ │ │ ├── libcomx-0.5.jar │ │ │ ├── libdfu-1.5.aar │ │ │ ├── libfastdfu-0.5.aar │ │ │ ├── vpbluetooth-1.16.aar │ │ │ └── vpprotocol-2.3.19.15.aar │ │ ├── proguard-rules.pro │ │ ├── release │ │ │ ├── VPSDK_2.2.95.15.apk │ │ │ └── output-metadata.json │ │ └── src │ │ │ ├── androidTest │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── timaimee │ │ │ │ └── vpdemo │ │ │ │ └── ApplicationTest.java │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── assets │ │ │ │ ├── 20230217103821.png_31140.png │ │ │ │ ├── 20230217104452.png_16165.png │ │ │ │ ├── 20230217112135.png_41670.png │ │ │ │ ├── custom_rect_240_240_bg.png │ │ │ │ ├── custom_round_240_240_bg.png │ │ │ │ └── custom_round_360_360_bg.png │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── timaimee │ │ │ │ │ └── vpdemo │ │ │ │ │ ├── DeviceCompare.java │ │ │ │ │ ├── MyService.java │ │ │ │ │ ├── activity │ │ │ │ │ ├── AddClockActivity.java │ │ │ │ │ ├── AddContactActivity.java │ │ │ │ │ ├── AimSportCalcActivity.java │ │ │ │ │ ├── ContactActivity.java │ │ │ │ │ ├── CustomProgressDialog.java │ │ │ │ │ ├── ECGSwitchActivity.java │ │ │ │ │ ├── EcgDetectActivity.java │ │ │ │ │ ├── EcgDetectView.java │ │ │ │ │ ├── EcgHeartRealthView.java │ │ │ │ │ ├── EcgMultiLeadDetect1Activity.java │ │ │ │ │ ├── F2DebugActivity.java │ │ │ │ │ ├── FunctionSwitchActivity.java │ │ │ │ │ ├── G08WHealthAlarmIntervalActivity.java │ │ │ │ │ ├── G15QRCodeActivity.java │ │ │ │ │ ├── GpsLatlonActivity.java │ │ │ │ │ ├── GpsReportActivity.java │ │ │ │ │ ├── HealthRemindActivity.java │ │ │ │ │ ├── InstitutionActivity.java │ │ │ │ │ ├── JLDeviceOPTActivity.java │ │ │ │ │ ├── MagneticTherapyActivity.java │ │ │ │ │ ├── MainActivity.java │ │ │ │ │ ├── NewAlarmActivity.java │ │ │ │ │ ├── NotificationSettingsActivity.java │ │ │ │ │ ├── OperaterActivity.java │ │ │ │ │ ├── Oprate.java │ │ │ │ │ ├── OriginalDataLogActivity.java │ │ │ │ │ ├── PttActivity.java │ │ │ │ │ ├── SwitchView.java │ │ │ │ │ ├── TestActivity.java │ │ │ │ │ ├── TextAlarmActivity.java │ │ │ │ │ ├── UiUpdateAGPSActivity.java │ │ │ │ │ ├── UiUpdateCustomActivity.java │ │ │ │ │ ├── UiUpdateG15ImgActivity.java │ │ │ │ │ ├── UiUpdateServerActivity.java │ │ │ │ │ ├── WorldClockActivity.java │ │ │ │ │ └── WorldClockAddListAdapter.java │ │ │ │ │ ├── adapter │ │ │ │ │ ├── BleScanViewAdapter.java │ │ │ │ │ ├── ContactAdapter.java │ │ │ │ │ ├── CustomLogAdapter.java │ │ │ │ │ ├── DividerItemDecoration.java │ │ │ │ │ ├── GridAdatper.java │ │ │ │ │ ├── HealthRemindAdapter.java │ │ │ │ │ ├── ListViewAdatper.java │ │ │ │ │ ├── NewAlarmAdapter.java │ │ │ │ │ ├── OnRecycleViewClickCallback.java │ │ │ │ │ ├── TextAlarmAdapter.java │ │ │ │ │ └── WorldClockAdapter.java │ │ │ │ │ ├── bean │ │ │ │ │ └── TimeZoneBean.java │ │ │ │ │ ├── oad │ │ │ │ │ ├── activity │ │ │ │ │ │ ├── NotificationActivity.java │ │ │ │ │ │ └── OadActivity.java │ │ │ │ │ └── service │ │ │ │ │ │ └── DfuService.java │ │ │ │ │ └── utils │ │ │ │ │ └── XmlParser.java │ │ │ ├── jniLibs │ │ │ │ ├── arm64-v8a │ │ │ │ │ └── libnative-lib.so │ │ │ │ ├── armeabi-v7a │ │ │ │ │ └── libnative-lib.so │ │ │ │ ├── armeabi │ │ │ │ │ └── libnative-lib.so │ │ │ │ ├── mips │ │ │ │ │ └── libnative-lib.so │ │ │ │ ├── mips64 │ │ │ │ │ └── libnative-lib.so │ │ │ │ ├── x86 │ │ │ │ │ └── libnative-lib.so │ │ │ │ └── x86_64 │ │ │ │ │ └── libnative-lib.so │ │ │ └── res │ │ │ │ ├── drawable │ │ │ │ ├── contacts_icon_nodata.png │ │ │ │ ├── fit_dialog_bg.xml │ │ │ │ ├── fit_move_point.png │ │ │ │ ├── fit_start_point.png │ │ │ │ ├── hband_home_module_delete.png │ │ │ │ ├── hband_home_module_drag.png │ │ │ │ ├── ic_action_notify_cancel.png │ │ │ │ ├── login_button.xml │ │ │ │ ├── login_button_normal.png │ │ │ │ ├── login_button_press.png │ │ │ │ ├── login_button_press1.png │ │ │ │ └── refresh.png │ │ │ │ ├── layout │ │ │ │ ├── activity_add_clock.xml │ │ │ │ ├── activity_add_contact.xml │ │ │ │ ├── activity_contact.xml │ │ │ │ ├── activity_ecg.xml │ │ │ │ ├── activity_ecg_multi_lead_detect.xml │ │ │ │ ├── activity_ecg_switch.xml │ │ │ │ ├── activity_ecgdetect.xml │ │ │ │ ├── activity_f2_debug.xml │ │ │ │ ├── activity_function_swtich.xml │ │ │ │ ├── activity_g08w_health_alarm_interval.xml │ │ │ │ ├── activity_g15_qrcode.xml │ │ │ │ ├── activity_gps_report.xml │ │ │ │ ├── activity_gpslatlon.xml │ │ │ │ ├── activity_health_remind.xml │ │ │ │ ├── activity_institution.xml │ │ │ │ ├── activity_jl_device.xml │ │ │ │ ├── activity_magnetic_therapy.xml │ │ │ │ ├── activity_main.xml │ │ │ │ ├── activity_notification_settings.xml │ │ │ │ ├── activity_oad_custom.xml │ │ │ │ ├── activity_operate.xml │ │ │ │ ├── activity_ptt.xml │ │ │ │ ├── activity_show_log.xml │ │ │ │ ├── activity_sportcalc.xml │ │ │ │ ├── activity_test.xml │ │ │ │ ├── activity_text_alarm.xml │ │ │ │ ├── activity_uiupdate_agps.xml │ │ │ │ ├── activity_uiupdate_custom.xml │ │ │ │ ├── activity_uiupdate_g15img.xml │ │ │ │ ├── activity_uiupdate_server.xml │ │ │ │ ├── activity_world_clock.xml │ │ │ │ ├── dialog_connect_progress.xml │ │ │ │ ├── item_add_clock_list.xml │ │ │ │ ├── item_contact.xml │ │ │ │ ├── item_dropdown.xml │ │ │ │ ├── item_grid.xml │ │ │ │ ├── item_health_remind.xml │ │ │ │ ├── item_log.xml │ │ │ │ ├── item_main.xml │ │ │ │ ├── item_new_alarm.xml │ │ │ │ ├── item_notify.xml │ │ │ │ ├── item_select.xml │ │ │ │ ├── item_text_alarm.xml │ │ │ │ └── item_world_clock.xml │ │ │ │ ├── menu │ │ │ │ └── menu_main.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_d.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_d.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_d.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_d.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_d.png │ │ │ │ ├── values-v21 │ │ │ │ ├── strings_dfu.xml │ │ │ │ └── styles.xml │ │ │ │ ├── values-w820dp │ │ │ │ └── dimens.xml │ │ │ │ ├── values │ │ │ │ ├── attrs.xml │ │ │ │ ├── colors.xml │ │ │ │ ├── dimens.xml │ │ │ │ ├── strings.xml │ │ │ │ ├── strings_dfu.xml │ │ │ │ └── styles.xml │ │ │ │ ├── xml-zh │ │ │ │ └── world_clock_datasource.xml │ │ │ │ └── xml │ │ │ │ ├── file_paths.xml │ │ │ │ └── world_clock_datasource.xml │ │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── timaimee │ │ │ └── vpdemo │ │ │ └── ExampleUnitTest.java │ │ ├── build.gradle │ │ ├── gradle.properties │ │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ └── settings.gradle ├── apidoc │ ├── allclasses-frame.html │ ├── allclasses-noframe.html │ ├── com │ │ └── veepoo │ │ │ └── protocol │ │ │ ├── VPOperateAbstract.html │ │ │ ├── VPOperateFactory.html │ │ │ ├── VPOperateListener.html │ │ │ ├── VPOperateManager.html │ │ │ ├── jl │ │ │ ├── JLBleConstant.html │ │ │ ├── classic │ │ │ │ ├── BluetoothConstant.html │ │ │ │ ├── BluetoothEventCallback.html │ │ │ │ ├── BluetoothOption.html │ │ │ │ ├── BluetoothUtil.html │ │ │ │ ├── ClassicBTManager.html │ │ │ │ ├── ErrorInfo.html │ │ │ │ ├── impl │ │ │ │ │ ├── BluetoothBrEdr.html │ │ │ │ │ ├── BluetoothPair.PairTask.html │ │ │ │ │ ├── BluetoothPair.html │ │ │ │ │ ├── BluetoothSpp.html │ │ │ │ │ ├── package-frame.html │ │ │ │ │ ├── package-summary.html │ │ │ │ │ └── package-tree.html │ │ │ │ ├── interfaces │ │ │ │ │ ├── IBluetoothBase.html │ │ │ │ │ ├── IBluetoothBrEdr.html │ │ │ │ │ ├── IBluetoothDiscovery.html │ │ │ │ │ ├── IBluetoothEventCallback.html │ │ │ │ │ ├── IBluetoothOperation.html │ │ │ │ │ ├── IBluetoothPair.html │ │ │ │ │ ├── IBluetoothSpp.html │ │ │ │ │ ├── listener │ │ │ │ │ │ ├── OnBrEdrListener.html │ │ │ │ │ │ ├── OnBtDevicePairListener.html │ │ │ │ │ │ ├── OnBtDiscoveryListener.html │ │ │ │ │ │ ├── OnBtSppListener.html │ │ │ │ │ │ ├── package-frame.html │ │ │ │ │ │ ├── package-summary.html │ │ │ │ │ │ └── package-tree.html │ │ │ │ │ ├── package-frame.html │ │ │ │ │ ├── package-summary.html │ │ │ │ │ └── package-tree.html │ │ │ │ ├── package-frame.html │ │ │ │ ├── package-summary.html │ │ │ │ ├── package-tree.html │ │ │ │ └── tool │ │ │ │ │ ├── BluetoothDiscovery.html │ │ │ │ │ ├── BluetoothEventCbManager.html │ │ │ │ │ ├── BrEdrEventCbManager.html │ │ │ │ │ ├── BtDiscoveryCbManager.html │ │ │ │ │ ├── BtPairEventCbManager.html │ │ │ │ │ ├── CHexConverter.html │ │ │ │ │ ├── ReceiveSppDataThread.OnRecvSppDataListener.html │ │ │ │ │ ├── ReceiveSppDataThread.html │ │ │ │ │ ├── SppEventCbManager.html │ │ │ │ │ ├── Utils.html │ │ │ │ │ ├── package-frame.html │ │ │ │ │ ├── package-summary.html │ │ │ │ │ └── package-tree.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ ├── package-tree.html │ │ │ └── send │ │ │ │ ├── IBleOp.html │ │ │ │ ├── OnThreadStateListener.html │ │ │ │ ├── OnWriteDataCallback.html │ │ │ │ ├── SendBleDataThread.BleSendTask.html │ │ │ │ ├── SendBleDataThread.html │ │ │ │ ├── package-frame.html │ │ │ │ ├── package-summary.html │ │ │ │ └── package-tree.html │ │ │ ├── listener │ │ │ ├── IHealthRemindListener.html │ │ │ ├── base │ │ │ │ ├── IABleConnectStatusListener.html │ │ │ │ ├── IABluetoothStateListener.html │ │ │ │ ├── IBleNotifyResponse.html │ │ │ │ ├── IBleSendWriteMsgListener.html │ │ │ │ ├── IBleWriteResponse.html │ │ │ │ ├── ICallBack.html │ │ │ │ ├── IConnectResponse.html │ │ │ │ ├── IHandler.html │ │ │ │ ├── IListener.html │ │ │ │ ├── INotifyResponse.html │ │ │ │ ├── IOperate.html │ │ │ │ ├── ISend.html │ │ │ │ ├── IUpdateSdkResponse.html │ │ │ │ ├── package-frame.html │ │ │ │ ├── package-summary.html │ │ │ │ └── package-tree.html │ │ │ ├── data │ │ │ │ ├── AbsBloodGlucoseChangeListener.html │ │ │ │ ├── IAlarm2DataListListener.html │ │ │ │ ├── IAlarm2DataReadListener.html │ │ │ │ ├── IAlarmDataListener.html │ │ │ │ ├── IAllHealthDataListener.html │ │ │ │ ├── IAllSetDataListener.html │ │ │ │ ├── IAppReportGpsDataListener.html │ │ │ │ ├── IAutoDetectOriginDataListener.html │ │ │ │ ├── IBPDetectDataListener.html │ │ │ │ ├── IBPFunctionListener.html │ │ │ │ ├── IBPSettingDataListener.html │ │ │ │ ├── IBatteryDataListener.html │ │ │ │ ├── IBloodGlucoseChangeListener.html │ │ │ │ ├── IBreathDataListener.html │ │ │ │ ├── ICameraDataListener.html │ │ │ │ ├── IChantingDataListener.html │ │ │ │ ├── ICheckWearDataListener.html │ │ │ │ ├── IContactOptListener.html │ │ │ │ ├── ICountDownListener.html │ │ │ │ ├── ICustomProtocolStateListener.html │ │ │ │ ├── ICustomSettingDataListener.html │ │ │ │ ├── IDeviceBTConnectionListener.DefaultImpls.html │ │ │ │ ├── IDeviceBTConnectionListener.html │ │ │ │ ├── IDeviceBTInfoListener.html │ │ │ │ ├── IDeviceControlPhoneModelState.html │ │ │ │ ├── IDeviceFuctionDataListener.html │ │ │ │ ├── IDeviceRenameListener.html │ │ │ │ ├── IDrinkDataListener.html │ │ │ │ ├── IECGAutoReportListener.html │ │ │ │ ├── IECGDetectListener.html │ │ │ │ ├── IECGLightDataCallback.html │ │ │ │ ├── IECGReadDataListener.html │ │ │ │ ├── IECGReadIdListener.html │ │ │ │ ├── IECGSwitchListener.html │ │ │ │ ├── IF2DebugListener.html │ │ │ │ ├── IFatigueDataListener.html │ │ │ │ ├── IFindDeviceDatalistener.html │ │ │ │ ├── IFindDevicelistener.html │ │ │ │ ├── IFindPhonelistener.html │ │ │ │ ├── IG15MessageListener.html │ │ │ │ ├── IG15QRCodeSendListener.html │ │ │ │ ├── IGpsLatLonDataListener.html │ │ │ │ ├── IHRVOriginDataListener.html │ │ │ │ ├── IHeartDataListener.html │ │ │ │ ├── IHeartWaringDataListener.html │ │ │ │ ├── IKaaBaDataListener.html │ │ │ │ ├── IKnocknotifyListener.html │ │ │ │ ├── ILanguageDataListener.html │ │ │ │ ├── ILightDataCallBack.html │ │ │ │ ├── ILongSeatDataListener.html │ │ │ │ ├── ILowPowerListener.html │ │ │ │ ├── IMtuChangeListener.html │ │ │ │ ├── IMusicControlListener.html │ │ │ │ ├── IMusicDataListener.html │ │ │ │ ├── INightTurnWristeDataListener.html │ │ │ │ ├── IOriginData3Listener.html │ │ │ │ ├── IOriginDataListener.html │ │ │ │ ├── IOriginProgressListener.html │ │ │ │ ├── IPersonInfoDataListener.html │ │ │ │ ├── IPhoneListener.html │ │ │ │ ├── IPttDetectListener.html │ │ │ │ ├── IPttModelStateListener.html │ │ │ │ ├── IPwdDataListener.html │ │ │ │ ├── IRRIntervalProgressListener.html │ │ │ │ ├── IReportGpsDataListener.html │ │ │ │ ├── IResponseListener.html │ │ │ │ ├── ISOSCallTimesListener.html │ │ │ │ ├── ISOSListener.html │ │ │ │ ├── IScreenLightListener.html │ │ │ │ ├── IScreenLightTimeListener.html │ │ │ │ ├── IScreenStyleListener.html │ │ │ │ ├── ISleepDataListener.html │ │ │ │ ├── ISocialMsgDataListener.html │ │ │ │ ├── ISpo2hBreathBreakRemainListener.html │ │ │ │ ├── ISpo2hDataListener.html │ │ │ │ ├── ISpo2hOriginDataListener.html │ │ │ │ ├── ISportDataListener.html │ │ │ │ ├── ISportModelOriginListener.html │ │ │ │ ├── ISportModelStateListener.html │ │ │ │ ├── ITemptureDataListener.html │ │ │ │ ├── ITemptureDetectDataListener.html │ │ │ │ ├── ITextAlarmDataListener.html │ │ │ │ ├── ITextAlarmDataReadListener.html │ │ │ │ ├── IUIBaseInfoFormAGPSListener.html │ │ │ │ ├── IUIBaseInfoFormCustomListener.html │ │ │ │ ├── IUIBaseInfoFormG15ImgListener.html │ │ │ │ ├── IUIBaseInfoFormServerListener.html │ │ │ │ ├── IUIBaseInfoListener.html │ │ │ │ ├── IUIOprateListener.html │ │ │ │ ├── IUiUpdateListener.html │ │ │ │ ├── IWeatherStatusDataListener.html │ │ │ │ ├── IWomenDataListener.html │ │ │ │ ├── OnDeviceAlarm2ChangedListener.html │ │ │ │ ├── package-frame.html │ │ │ │ ├── package-summary.html │ │ │ │ └── package-tree.html │ │ │ ├── oad │ │ │ │ ├── OnDownLoadListener.html │ │ │ │ ├── OnFindOadDeviceListener.html │ │ │ │ ├── OnGetOadVersionListener.html │ │ │ │ ├── OnUpdateCheckListener.html │ │ │ │ ├── package-frame.html │ │ │ │ ├── package-summary.html │ │ │ │ └── package-tree.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ └── package-tree.html │ │ │ ├── model │ │ │ ├── DayState.html │ │ │ ├── G15QRCode.html │ │ │ ├── OadFileBean.html │ │ │ ├── SingleSleepItem.html │ │ │ ├── TUiTheme.html │ │ │ ├── datas │ │ │ │ ├── AlarmData.html │ │ │ │ ├── AlarmData2.html │ │ │ │ ├── AllSetData.html │ │ │ │ ├── AutoDetectOriginData.html │ │ │ │ ├── AutoDetectStateData.html │ │ │ │ ├── BTInfo.BTStatus.html │ │ │ │ ├── BTInfo.html │ │ │ │ ├── BTStatus.Companion.html │ │ │ │ ├── BatteryData.html │ │ │ │ ├── BpData.html │ │ │ │ ├── BpFunctionData.html │ │ │ │ ├── BpSettingData.html │ │ │ │ ├── BreathBreakRemindData.html │ │ │ │ ├── BreathData.html │ │ │ │ ├── ChantingData.html │ │ │ │ ├── CheckWearData.html │ │ │ │ ├── Contact.html │ │ │ │ ├── CountDownData.html │ │ │ │ ├── DrinkData.html │ │ │ │ ├── EcgDetectInfo.html │ │ │ │ ├── EcgDetectResult.html │ │ │ │ ├── EcgDetectState.html │ │ │ │ ├── EcgDiagnosis.html │ │ │ │ ├── EcgSingleData.html │ │ │ │ ├── FatigueData.html │ │ │ │ ├── FindDeviceData.html │ │ │ │ ├── FunctionDeviceSupportData.html │ │ │ │ ├── FunctionSocailMsgData.html │ │ │ │ ├── GpsLatlonData.html │ │ │ │ ├── HRVOriginData.html │ │ │ │ ├── HalfHourBpData.html │ │ │ │ ├── HalfHourRateData.html │ │ │ │ ├── HalfHourSportData.html │ │ │ │ ├── HealthRemind.html │ │ │ │ ├── HeartData.html │ │ │ │ ├── HeartWaringData.html │ │ │ │ ├── InsomniaTimeData.html │ │ │ │ ├── KaaBaData.html │ │ │ │ ├── LanguageData.html │ │ │ │ ├── LongSeatData.html │ │ │ │ ├── LowPowerData.html │ │ │ │ ├── MusicData.html │ │ │ │ ├── NightTurnWristeData.html │ │ │ │ ├── OriginData.html │ │ │ │ ├── OriginData3.html │ │ │ │ ├── OriginHalfHourData.html │ │ │ │ ├── PersonInfoData.html │ │ │ │ ├── PwdData.html │ │ │ │ ├── RRIntervalData.html │ │ │ │ ├── RRLorenzInfo.html │ │ │ │ ├── RRLorenzPointInfo.html │ │ │ │ ├── ReportGpsData.html │ │ │ │ ├── ReportGpsLatLongData.html │ │ │ │ ├── ResponseData.html │ │ │ │ ├── ScreenLightData.html │ │ │ │ ├── ScreenLightTimeData.html │ │ │ │ ├── ScreenStyleData.html │ │ │ │ ├── SleepCrcData.html │ │ │ │ ├── SleepData.html │ │ │ │ ├── SleepPrecisionData.html │ │ │ │ ├── Spo2hData.html │ │ │ │ ├── Spo2hOriginData.html │ │ │ │ ├── SportData.html │ │ │ │ ├── SportModelOriginHeadData.html │ │ │ │ ├── SportModelOriginItemData.html │ │ │ │ ├── SportModelStateData.html │ │ │ │ ├── TemptureData.html │ │ │ │ ├── TemptureDetectData.html │ │ │ │ ├── TextAlarmData.html │ │ │ │ ├── TimeData.html │ │ │ │ ├── UICustomSetData.html │ │ │ │ ├── UIDataAGPS.html │ │ │ │ ├── UIDataCustom.html │ │ │ │ ├── UIDataG15Img.html │ │ │ │ ├── UIDataServer.html │ │ │ │ ├── UiData.html │ │ │ │ ├── UserDateInfo.html │ │ │ │ ├── WeatherData2.html │ │ │ │ ├── WeatherStatusData.html │ │ │ │ ├── WomenData.html │ │ │ │ ├── ecg │ │ │ │ │ ├── FiveMinuteData.html │ │ │ │ │ ├── HRVFiveMinuteData.html │ │ │ │ │ ├── Spo2hMinuteData.html │ │ │ │ │ ├── SportFiveMinuteData.html │ │ │ │ │ ├── package-frame.html │ │ │ │ │ ├── package-summary.html │ │ │ │ │ └── package-tree.html │ │ │ │ ├── package-frame.html │ │ │ │ ├── package-summary.html │ │ │ │ ├── package-tree.html │ │ │ │ └── weather │ │ │ │ │ ├── WeatherData.html │ │ │ │ │ ├── WeatherEvery3Hour.html │ │ │ │ │ ├── WeatherEveryDay.html │ │ │ │ │ ├── package-frame.html │ │ │ │ │ ├── package-summary.html │ │ │ │ │ └── package-tree.html │ │ │ ├── enums │ │ │ │ ├── DebugCmd.html │ │ │ │ ├── EAalarmStatus.html │ │ │ │ ├── EAllSetStatus.html │ │ │ │ ├── EAllSetType.html │ │ │ │ ├── EBPDetectModel.html │ │ │ │ ├── EBPDetectStatus.html │ │ │ │ ├── EBPStatus.html │ │ │ │ ├── EBloodGlucoseStatus.html │ │ │ │ ├── EBloodGlucoseUnit.html │ │ │ │ ├── ECPUPlatform.html │ │ │ │ ├── ECameraStatus.html │ │ │ │ ├── ECheckWear.html │ │ │ │ ├── EContactOpt.html │ │ │ │ ├── ECountDownStatus.html │ │ │ │ ├── ECpuType.html │ │ │ │ ├── ECustomStatus.html │ │ │ │ ├── EDeviceStatus.html │ │ │ │ ├── EECGResultType.html │ │ │ │ ├── EEcgDataType.html │ │ │ │ ├── EFatigueStatus.html │ │ │ │ ├── EFindDeviceStatus.html │ │ │ │ ├── EFunctionStatus.html │ │ │ │ ├── EGpsStatus.html │ │ │ │ ├── EHeartStatus.html │ │ │ │ ├── EHeartWaringStatus.html │ │ │ │ ├── ELanguage.html │ │ │ │ ├── ELongSeatStatus.html │ │ │ │ ├── ELowPowerOprate.html │ │ │ │ ├── EMultiAlarmOprate.html │ │ │ │ ├── ENightTurnWristeStatus.html │ │ │ │ ├── EOprateStauts.html │ │ │ │ ├── EPwdStatus.html │ │ │ │ ├── ERenameError.html │ │ │ │ ├── ESBBRStatus.html │ │ │ │ ├── ESPO2HStatus.html │ │ │ │ ├── EScreenLight.html │ │ │ │ ├── EScreenLightTime.html │ │ │ │ ├── EScreenStyle.html │ │ │ │ ├── ESex.html │ │ │ │ ├── ESleepTag.html │ │ │ │ ├── ESocailMsg.html │ │ │ │ ├── ESpo2hDataType.html │ │ │ │ ├── ESportModelStateStauts.html │ │ │ │ ├── ESportType.html │ │ │ │ ├── ETemperatureUnit.html │ │ │ │ ├── ETimeMode.html │ │ │ │ ├── EUIFromType.UICode.html │ │ │ │ ├── EUIFromType.html │ │ │ │ ├── EUiUpdateError.html │ │ │ │ ├── EWatchUIElementPosition.html │ │ │ │ ├── EWatchUIElementType.html │ │ │ │ ├── EWatchUIType.html │ │ │ │ ├── EWeatherOprateStatus.html │ │ │ │ ├── EWeatherType.html │ │ │ │ ├── EWomenOprateStatus.html │ │ │ │ ├── EWomenStatus.html │ │ │ │ ├── HealthRemindType.Companion.html │ │ │ │ ├── HealthRemindType.html │ │ │ │ ├── LorenColor.html │ │ │ │ ├── package-frame.html │ │ │ │ ├── package-summary.html │ │ │ │ └── package-tree.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ ├── package-tree.html │ │ │ └── settings │ │ │ │ ├── Alarm2Setting.html │ │ │ │ ├── AlarmSetting.html │ │ │ │ ├── AllSetSetting.html │ │ │ │ ├── AutoDetectStateSetting.html │ │ │ │ ├── BpSetting.html │ │ │ │ ├── BreathBreakRemindSetting.html │ │ │ │ ├── ChantingSetting.html │ │ │ │ ├── CheckWearSetting.html │ │ │ │ ├── ContentPhoneSetting.html │ │ │ │ ├── ContentSetting.html │ │ │ │ ├── ContentSmsSetting.html │ │ │ │ ├── ContentSocailSetting.html │ │ │ │ ├── CountDownSetting.html │ │ │ │ ├── CustomSetting.html │ │ │ │ ├── CustomSettingData.html │ │ │ │ ├── DeviceTimeSetting.html │ │ │ │ ├── GpsLatLongSetting.html │ │ │ │ ├── GpsLatLongSettingFromApp.html │ │ │ │ ├── HeartWaringSetting.html │ │ │ │ ├── KaabaSetting.html │ │ │ │ ├── LongSeatSetting.html │ │ │ │ ├── LowPowerSetting.html │ │ │ │ ├── NightTurnWristSetting.html │ │ │ │ ├── OadSetting.html │ │ │ │ ├── ReadOriginSetting.html │ │ │ │ ├── ReadSleepSetting.html │ │ │ │ ├── ScreenSetting.html │ │ │ │ ├── SoldierContentSetting.html │ │ │ │ ├── SportModelSetting.html │ │ │ │ ├── TextAlarm2Setting.html │ │ │ │ ├── WeatherStatusSetting.html │ │ │ │ ├── WomenSetting.html │ │ │ │ ├── package-frame.html │ │ │ │ ├── package-summary.html │ │ │ │ └── package-tree.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ ├── package-tree.html │ │ │ └── util │ │ │ ├── Alarm2Util.html │ │ │ ├── AlarmCrcUtil.html │ │ │ ├── BigDecimalUtil.html │ │ │ ├── BitMapUtil.html │ │ │ ├── CUtil.Companion.html │ │ │ ├── CUtil.html │ │ │ ├── ColorUtil.html │ │ │ ├── ConVertyUtil.Companion.html │ │ │ ├── ConVertyUtil.html │ │ │ ├── ConvertHelper.html │ │ │ ├── CrcUtil.html │ │ │ ├── DateUtil.html │ │ │ ├── DialPictureUtil.OnDialPreviewCreateAndSaveListener.html │ │ │ ├── DialPictureUtil.html │ │ │ ├── ECGDataConvertUtl.html │ │ │ ├── EcgHZ250.html │ │ │ ├── EcgHZ256.html │ │ │ ├── EcgHZ512.html │ │ │ ├── EcgIdParseUtil.html │ │ │ ├── EcgUtil.html │ │ │ ├── FunctionCheckUtil.html │ │ │ ├── HRVOriginUtil.html │ │ │ ├── HVPInfoUtil.html │ │ │ ├── HalfHourDataUtil.html │ │ │ ├── HrvScoreUtil.html │ │ │ ├── InstitutionUtil.html │ │ │ ├── LOG_EXTKt.html │ │ │ ├── MD5.html │ │ │ ├── MultiAlarmSp.html │ │ │ ├── ParseBlockUtil.html │ │ │ ├── RRUtils.html │ │ │ ├── ScaleDialUtil.html │ │ │ ├── SerializeUtil.html │ │ │ ├── Spo2hOriginUtil.html │ │ │ ├── SportUtil.html │ │ │ ├── StaticUtil.html │ │ │ ├── TextAlarmSp.html │ │ │ ├── UiServerHttpUtil.html │ │ │ ├── UiUpdateUtil.html │ │ │ ├── VPLogger.html │ │ │ ├── VpBleByteUtil.html │ │ │ ├── VpContentUtil.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ └── package-tree.html │ ├── constant-values.html │ ├── deprecated-list.html │ ├── help-doc.html │ ├── index-all.html │ ├── index.html │ ├── overview-frame.html │ ├── overview-summary.html │ ├── overview-tree.html │ ├── package-list │ ├── script.js │ └── stylesheet.css ├── jar_base │ ├── gson-2.2.4.jar │ ├── libble-0.5.aar │ ├── libcomx-0.5.jar │ ├── libdfu-1.5.aar │ ├── libfastdfu-0.5.aar │ └── vpbluetooth_1.0.4.jar ├── jar_core │ ├── BmpConvert_V1.2.1-release.aar │ ├── JL_Watch_V1.10.0-release.aar │ ├── jl_bt_ota_V1.9.3-release.aar │ ├── jl_rcsp_V0.5.2-release.aar │ ├── vpbluetooth-1.16.aar │ └── vpprotocol-2.3.19.15.aar ├── jniLibs │ ├── arm64-v8a │ │ └── libnative-lib.so │ ├── armeabi-v7a │ │ └── libnative-lib.so │ ├── x86 │ │ └── libnative-lib.so │ └── x86_64 │ │ └── libnative-lib.so ├── readme.md ├── sdkdoc │ ├── VeepooSDK Android Api - English.md │ ├── VeepooSDK Android Api.md │ ├── veepooSDK_Bug反馈文档.doc │ ├── veepooSDK_Bug反馈文档.pdf │ ├── veepooSDK接入文档.doc │ ├── veepooSDK接入文档.pdf │ └── 交互log │ │ ├── SharePerence数据.txt │ │ ├── 健康数据.txt │ │ ├── 功能数据.txt │ │ └── 睡眠数据.txt └── vpsdk_1.2.3.apk └── sh.exe.stackdump /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | 5 | --- 6 | 7 | **Describe the bug** 8 | A clear and concise description of what the bug is. 9 | 10 | **To Reproduce** 11 | Steps to reproduce the behavior: 12 | 1. Go to '...' 13 | 2. Click on '....' 14 | 3. Scroll down to '....' 15 | 4. See error 16 | 17 | **Expected behavior** 18 | A clear and concise description of what you expected to happen. 19 | 20 | **Smartphone (please complete the following information):** 21 | - Device: [e.g. iPhone6] 22 | - OS: [e.g. iOS8.1] 23 | - Version [e.g. 22] 24 | 25 | **SDK Version(please complete the following information):** 26 | - Version [e.g. 2.0.0.3] 27 | 28 | **Additional context** 29 | Add any other context about the problem here. 30 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/custom.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Custom issue template 3 | about: Describe this issue template's purpose here. 4 | 5 | --- 6 | 7 | 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .DS_Store 3 | android_sdk_source/Demo/VpBluetoothSDK/.idea/jarRepositories.xml 4 | android_sdk_source/Demo/VpBluetoothSDK/.idea/misc.xml 5 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/.idea/kotlinc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | apply plugin: 'kotlin-android' 3 | 4 | apply plugin: 'kotlin-android-extensions' 5 | 6 | 7 | project.ext { 8 | hasLottie = true 9 | } 10 | 11 | android { 12 | compileSdkVersion 34 13 | signingConfigs { 14 | release { 15 | keyAlias 'zhongxin' 16 | keyPassword 'veepooandroid' 17 | storeFile file('F:\\ExportProject\\zhongxin003.keystore') 18 | storePassword 'veepooandroid' 19 | } 20 | } 21 | defaultConfig { 22 | applicationId "com.timaimee.vpdemo"//com.timaimee.vpdemo //com.ecg.kg 23 | minSdkVersion 24 24 | targetSdkVersion 34 25 | versionCode 159 26 | versionName "1.5.9" 27 | ndk { 28 | //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so) 29 | abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64" 30 | } 31 | } 32 | buildTypes { 33 | release { 34 | buildConfigField("boolean", "IS_DEBUG", "false") 35 | minifyEnabled false 36 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 37 | signingConfig signingConfigs.release 38 | } 39 | debug { 40 | buildConfigField("boolean", "IS_DEBUG", "true") 41 | } 42 | // release { 43 | // minifyEnabled false 44 | // proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 45 | // } 46 | } 47 | sourceSets { 48 | main { 49 | aidl.srcDirs = ['src/main/aidl'] 50 | } 51 | } 52 | 53 | compileOptions { 54 | sourceCompatibility JavaVersion.VERSION_1_8 55 | targetCompatibility JavaVersion.VERSION_1_8 56 | } 57 | 58 | 59 | 60 | } 61 | repositories { 62 | flatDir { 63 | dirs 'libs' //this way we can find the .aar file in libs folder 64 | } 65 | } 66 | 67 | dependencies { 68 | implementation fileTree(include: ['*.jar','*.aar'], dir: 'libs') 69 | implementation files('libs/libcomx-0.5.jar') 70 | implementation files('libs/gson-2.2.4.jar') 71 | implementation files('libs/vpbluetooth-1.16.aar') 72 | implementation files('libs/vpprotocol-2.3.19.15.aar') 73 | implementation files('libs/AMap2DMap_6.0.0_AMapSearch_9.4.5_AMapLocation_6.2.0_20221026.jar') 74 | 75 | implementation files('libs/JL_Watch_V1.10.0-release.aar') 76 | implementation files('libs/jl_rcsp_V0.5.2-release.aar') 77 | implementation files('libs/jl_bt_ota_V1.9.3-release.aar') 78 | implementation files('libs/BmpConvert_V1.2.1-release.aar') 79 | 80 | testImplementation 'junit:junit:4.12' 81 | implementation 'androidx.appcompat:appcompat:1.3.1' 82 | implementation 'androidx.recyclerview:recyclerview:1.2.1' 83 | implementation 'com.android.support:design:28.0.0-alpha1' 84 | implementation 'com.orhanobut:logger:1.15' 85 | implementation 'no.nordicsemi.android.support.v18:scanner:1.4.2' 86 | implementation 'androidx.constraintlayout:constraintlayout:1.1.3' 87 | 88 | // implementation 'com.amap.api:3dmap:latest.integration' 89 | // implementation 'com.amap.api:search:latest.integration' 90 | implementation "org.jetbrains.kotlin:kotlin-stdlib:1.3.72" 91 | 92 | implementation 'com.yanzhenjie.recyclerview:support:1.3.2' 93 | implementation 'tech.gujin:toast-util:1.2.0' 94 | 95 | // implementation 'cn.carbs.android:SegmentControlView:1.0.0' 96 | 97 | } 98 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/libs/AMap2DMap_6.0.0_AMapSearch_9.4.5_AMapLocation_6.2.0_20221026.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/libs/AMap2DMap_6.0.0_AMapSearch_9.4.5_AMapLocation_6.2.0_20221026.jar -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/libs/BmpConvert_V1.2.1-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/libs/BmpConvert_V1.2.1-release.aar -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/libs/JL_Watch_V1.10.0-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/libs/JL_Watch_V1.10.0-release.aar -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/libs/gson-2.2.4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/libs/gson-2.2.4.jar -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/libs/jl_bt_ota_V1.9.3-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/libs/jl_bt_ota_V1.9.3-release.aar -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/libs/jl_rcsp_V0.5.2-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/libs/jl_rcsp_V0.5.2-release.aar -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/libs/libble-0.5.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/libs/libble-0.5.aar -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/libs/libcomx-0.5.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/libs/libcomx-0.5.jar -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/libs/libdfu-1.5.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/libs/libdfu-1.5.aar -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/libs/libfastdfu-0.5.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/libs/libfastdfu-0.5.aar -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/libs/vpbluetooth-1.16.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/libs/vpbluetooth-1.16.aar -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/libs/vpprotocol-2.3.19.15.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/libs/vpprotocol-2.3.19.15.aar -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in F:\sdk_20160704\ANDROIDSDK/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/release/VPSDK_2.2.95.15.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/release/VPSDK_2.2.95.15.apk -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/release/output-metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "artifactType": { 4 | "type": "APK", 5 | "kind": "Directory" 6 | }, 7 | "applicationId": "com.timaimee.vpdemo", 8 | "variantName": "release", 9 | "elements": [ 10 | { 11 | "type": "SINGLE", 12 | "filters": [], 13 | "properties": [], 14 | "versionCode": 156, 15 | "versionName": "1.5.6", 16 | "enabled": true, 17 | "outputFile": "app-release.apk" 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/androidTest/java/com/timaimee/vpdemo/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | /** 7 | * Testing Fundamentals 8 | */ 9 | public class ApplicationTest extends ApplicationTestCase { 10 | public ApplicationTest() { 11 | super(Application.class); 12 | } 13 | } -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/assets/20230217103821.png_31140.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/assets/20230217103821.png_31140.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/assets/20230217104452.png_16165.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/assets/20230217104452.png_16165.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/assets/20230217112135.png_41670.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/assets/20230217112135.png_41670.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/assets/custom_rect_240_240_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/assets/custom_rect_240_240_bg.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/assets/custom_round_240_240_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/assets/custom_round_240_240_bg.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/assets/custom_round_360_360_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/assets/custom_round_360_360_bg.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/DeviceCompare.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo; 2 | 3 | import com.inuker.bluetooth.library.search.SearchResult; 4 | 5 | import java.util.Comparator; 6 | 7 | /** 8 | * Created by timaimee on 2017/2/8. 9 | */ 10 | public class DeviceCompare implements Comparator { 11 | 12 | @Override 13 | public int compare(SearchResult o1, SearchResult o2) { 14 | return o2.rssi - o1.rssi; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/activity/AddClockActivity.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.activity; 2 | 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | 6 | import androidx.appcompat.app.AppCompatActivity; 7 | import androidx.recyclerview.widget.LinearLayoutManager; 8 | import androidx.recyclerview.widget.RecyclerView; 9 | 10 | import com.timaimee.vpdemo.R; 11 | import com.timaimee.vpdemo.adapter.OnRecycleViewClickCallback; 12 | import com.timaimee.vpdemo.bean.TimeZoneBean; 13 | import com.timaimee.vpdemo.utils.XmlParser; 14 | 15 | import java.util.ArrayList; 16 | import java.util.List; 17 | 18 | /** 19 | * Description 添加世界时钟 20 | * 21 | * @author KYM. 22 | * @date 2024/4/10 20:01 23 | */ 24 | public class AddClockActivity extends AppCompatActivity implements OnRecycleViewClickCallback { 25 | 26 | private RecyclerView mRecyclerView; 27 | private WorldClockAddListAdapter mAdapter; 28 | 29 | private List dataList = new ArrayList<>(); 30 | 31 | @Override 32 | protected void onCreate(Bundle savedInstanceState) { 33 | super.onCreate(savedInstanceState); 34 | setContentView(R.layout.activity_add_clock); 35 | mRecyclerView = findViewById(R.id.recyclerView); 36 | mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); 37 | mAdapter = new WorldClockAddListAdapter(dataList, this); 38 | mRecyclerView.setAdapter(mAdapter); 39 | 40 | new Thread(new Runnable() { 41 | @Override 42 | public void run() { 43 | List timeZoneBeans = XmlParser.parseXml2TimeZoneBeanList(AddClockActivity.this, R.xml.world_clock_datasource); 44 | runOnUiThread(new Runnable() { 45 | @Override 46 | public void run() { 47 | dataList.clear(); 48 | dataList.addAll(timeZoneBeans); 49 | mAdapter.notifyDataSetChanged(); 50 | } 51 | }); 52 | } 53 | }).run(); 54 | } 55 | 56 | @Override 57 | public void OnRecycleViewClick(int position) { 58 | Bundle bundle = new Bundle(); 59 | bundle.putSerializable("TimeZoneBean", dataList.get(position)); 60 | Intent intent = new Intent(); 61 | intent.putExtras(bundle); 62 | setResult(1115, intent); 63 | finish(); 64 | } 65 | } -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/activity/CustomProgressDialog.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.activity; 2 | 3 | import android.app.Dialog; 4 | import android.content.Context; 5 | import android.view.View; 6 | import android.widget.TextView; 7 | 8 | import com.timaimee.vpdemo.R; 9 | 10 | 11 | public class CustomProgressDialog extends Dialog { 12 | 13 | public CustomProgressDialog(Context context) { 14 | super(context, R.style.loading_dialog); 15 | this.setContentView(R.layout.dialog_connect_progress); 16 | } 17 | 18 | public void show(String str) { 19 | if (this.isShowing()) { 20 | this.dismiss(); 21 | } 22 | this.show(); 23 | } 24 | 25 | public void showNoTips() { 26 | if (this.isShowing()) { 27 | this.dismiss(); 28 | } 29 | this.setCancelable(false); 30 | this.show(); 31 | } 32 | 33 | public void disMissDialog() { 34 | if (this.isShowing()) { 35 | this.dismiss(); 36 | } 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/activity/ECGSwitchActivity.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.activity; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | import android.os.Handler; 6 | import android.os.Looper; 7 | import androidx.annotation.Nullable; 8 | import android.view.View; 9 | import android.widget.Button; 10 | import android.widget.TextView; 11 | import android.widget.Toast; 12 | 13 | import com.timaimee.vpdemo.R; 14 | import com.veepoo.protocol.VPOperateManager; 15 | import com.veepoo.protocol.listener.base.IBleWriteResponse; 16 | import com.veepoo.protocol.listener.data.IECGSwitchListener; 17 | import com.veepoo.protocol.model.enums.EFunctionStatus; 18 | 19 | /** 20 | * Author: YWX 21 | * Date: 2022/3/17 15:36 22 | * Description: ecg开关状态 23 | */ 24 | public class ECGSwitchActivity extends Activity implements IECGSwitchListener { 25 | 26 | Button btnRead, btnClose, btnOpen; 27 | TextView tvInfo; 28 | 29 | @Override 30 | protected void onCreate(@Nullable Bundle savedInstanceState) { 31 | super.onCreate(savedInstanceState); 32 | setContentView(R.layout.activity_ecg_switch); 33 | btnRead = findViewById(R.id.btnReadEcg); 34 | btnClose = findViewById(R.id.btnCloseEcg); 35 | btnOpen = findViewById(R.id.btnOpenEcg); 36 | tvInfo = findViewById(R.id.tvInfo); 37 | 38 | btnRead.setOnClickListener(new View.OnClickListener() { 39 | @Override 40 | public void onClick(View v) { 41 | VPOperateManager.getMangerInstance(ECGSwitchActivity.this).readECGSwitchStatus(writeResponse, ECGSwitchActivity.this); 42 | } 43 | }); 44 | 45 | btnOpen.setOnClickListener(new View.OnClickListener() { 46 | @Override 47 | public void onClick(View v) { 48 | VPOperateManager.getMangerInstance(ECGSwitchActivity.this).openECGSwitch(writeResponse, ECGSwitchActivity.this); 49 | } 50 | }); 51 | 52 | btnClose.setOnClickListener(new View.OnClickListener() { 53 | @Override 54 | public void onClick(View v) { 55 | VPOperateManager.getMangerInstance(ECGSwitchActivity.this).closeECGSwitch(writeResponse, ECGSwitchActivity.this); 56 | } 57 | }); 58 | 59 | } 60 | 61 | @Override 62 | protected void onResume() { 63 | super.onResume(); 64 | VPOperateManager.getMangerInstance(ECGSwitchActivity.this).readECGSwitchStatus(writeResponse, ECGSwitchActivity.this); 65 | Toast.makeText(this, "reading ecg function supportable...", Toast.LENGTH_SHORT).show(); 66 | } 67 | 68 | private boolean isSupport = false; 69 | 70 | @Override 71 | public void onECGSwitchStatusChanged(EFunctionStatus eFunctionStatus) { 72 | if (eFunctionStatus == EFunctionStatus.UNSUPPORT) { 73 | Toast.makeText(this, "device not support ecg function", Toast.LENGTH_SHORT).show(); 74 | tvInfo.setText("ecg not support "); 75 | isSupport = false; 76 | } else { 77 | if (eFunctionStatus == EFunctionStatus.SUPPORT_OPEN) { 78 | isSupport = true; 79 | Toast.makeText(this, "ecg function is open", Toast.LENGTH_SHORT).show(); 80 | tvInfo.setText("ecg open success "); 81 | 82 | } else if (eFunctionStatus == EFunctionStatus.SUPPORT_CLOSE) { 83 | isSupport = true; 84 | Toast.makeText(this, "ecg function is close", Toast.LENGTH_SHORT).show(); 85 | tvInfo.setText("ecg close success "); 86 | 87 | } 88 | } 89 | 90 | } 91 | 92 | 93 | private IBleWriteResponse writeResponse = new IBleWriteResponse() { 94 | @Override 95 | public void onResponse(int code) { 96 | 97 | } 98 | }; 99 | } 100 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/activity/EcgDetectActivity.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.activity; 2 | 3 | import android.app.Activity; 4 | import android.content.Context; 5 | import android.os.Bundle; 6 | import androidx.annotation.Nullable; 7 | import android.view.View; 8 | import android.widget.Button; 9 | 10 | import com.orhanobut.logger.Logger; 11 | import com.timaimee.vpdemo.R; 12 | import com.veepoo.protocol.VPOperateManager; 13 | import com.veepoo.protocol.listener.base.IBleWriteResponse; 14 | import com.veepoo.protocol.listener.data.IECGDetectListener; 15 | import com.veepoo.protocol.model.datas.EcgDetectInfo; 16 | import com.veepoo.protocol.model.datas.EcgDetectResult; 17 | import com.veepoo.protocol.model.datas.EcgDetectState; 18 | import com.veepoo.protocol.model.datas.EcgDiagnosis; 19 | 20 | import java.util.Arrays; 21 | 22 | public class EcgDetectActivity extends Activity implements View.OnClickListener { 23 | private final static String TAG = EcgDetectActivity.class.getSimpleName(); 24 | EcgHeartRealthView mEcgHeartView; 25 | Button start, stop; 26 | Button notify; 27 | Context mContext; 28 | WriteResponse writeResponse = new WriteResponse(); 29 | 30 | @Override 31 | protected void onCreate(@Nullable Bundle savedInstanceState) { 32 | super.onCreate(savedInstanceState); 33 | setContentView(R.layout.activity_ecgdetect); 34 | mContext = EcgDetectActivity.this; 35 | mEcgHeartView = (EcgHeartRealthView) findViewById(R.id.ecg_real_view); 36 | notify = (Button) findViewById(R.id.greenlightdata); 37 | start = (Button) findViewById(R.id.start); 38 | stop = (Button) findViewById(R.id.stop); 39 | 40 | notify.setOnClickListener(this); 41 | start.setOnClickListener(this); 42 | stop.setOnClickListener(this); 43 | } 44 | 45 | @Override 46 | public void onClick(View v) { 47 | int id = v.getId(); 48 | switch (id) { 49 | case R.id.start: 50 | VPOperateManager.getInstance().startDetectECG(writeResponse, true, new IECGDetectListener() { 51 | @Override 52 | public void onEcgDetectInfoChange(EcgDetectInfo ecgDetectInfo) { 53 | String message = "-onEcgDetectInfoChange-:" + ecgDetectInfo.toString(); 54 | Logger.t(TAG).i(message); 55 | } 56 | 57 | @Override 58 | public void onEcgDetectStateChange(EcgDetectState ecgDetectState) { 59 | String message = "-onEcgDetectStateChange-:" + ecgDetectState.toString(); 60 | Logger.t(TAG).i(message); 61 | } 62 | 63 | @Override 64 | public void onEcgDetectResultChange(EcgDetectResult ecgDetectResult) { 65 | String message = "-onEcgDetectResultChange-:" + ecgDetectResult.toString(); 66 | Logger.t(TAG).i(message); 67 | } 68 | 69 | // @Override 70 | // public void onEcgADCChange(int[] ecgData) { 71 | // String message = "-onEcgADCChange-:" + Arrays.toString(ecgData); 72 | // Logger.t(TAG).i(message); 73 | //// mEcgHeartView.changeData(ecgData, 20); 74 | // } 75 | 76 | @Override 77 | public void onEcgDetectDiagnosisChange(EcgDiagnosis ecgDiagnosis) { 78 | Logger.t(TAG).i("ecg多诊断 :: = " + ecgDiagnosis.toString()); 79 | } 80 | 81 | @Override 82 | public void onEcgADCChange(int[] ints, int[] ints1) { 83 | 84 | } 85 | }); 86 | break; 87 | case R.id.stop: 88 | mEcgHeartView.clearData(); 89 | VPOperateManager.getMangerInstance(mContext).stopDetectECG(writeResponse, true, null); 90 | break; 91 | } 92 | } 93 | 94 | /** 95 | * 写入的状态返回 96 | */ 97 | class WriteResponse implements IBleWriteResponse { 98 | 99 | @Override 100 | public void onResponse(int code) { 101 | Logger.t(TAG).i("write cmd status:" + code); 102 | 103 | } 104 | } 105 | } 106 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/activity/F2DebugActivity.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.activity; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | import androidx.annotation.Nullable; 6 | import android.view.View; 7 | import android.widget.Button; 8 | import android.widget.TextView; 9 | import android.widget.Toast; 10 | 11 | import com.timaimee.vpdemo.R; 12 | import com.veepoo.protocol.VPOperateManager; 13 | import com.veepoo.protocol.listener.base.IBleWriteResponse; 14 | import com.veepoo.protocol.listener.data.IECGSwitchListener; 15 | import com.veepoo.protocol.listener.data.IF2DebugListener; 16 | import com.veepoo.protocol.model.enums.DebugCmd; 17 | import com.veepoo.protocol.model.enums.EFunctionStatus; 18 | 19 | /** 20 | * Author: YWX 21 | * Date: 2022/3/17 15:36 22 | * Description: ecg开关状态 23 | */ 24 | public class F2DebugActivity extends Activity implements IF2DebugListener { 25 | 26 | Button btnCmd1, btnCmd2, btnCmd3, btnCmd4; 27 | TextView tvInfo; 28 | 29 | @Override 30 | protected void onCreate(@Nullable Bundle savedInstanceState) { 31 | super.onCreate(savedInstanceState); 32 | setContentView(R.layout.activity_f2_debug); 33 | btnCmd1 = findViewById(R.id.btnCmd1); 34 | btnCmd2 = findViewById(R.id.btnCmd2); 35 | btnCmd3 = findViewById(R.id.btnCmd3); 36 | btnCmd4 = findViewById(R.id.btnCmd4); 37 | tvInfo = findViewById(R.id.tvInfo); 38 | btnCmd1.setText(DebugCmd.CMD1.des); 39 | btnCmd2.setText(DebugCmd.CMD2.des); 40 | btnCmd3.setText(DebugCmd.CMD3.des); 41 | btnCmd4.setText(DebugCmd.CMD4.des); 42 | 43 | // btnCmd1.setOnClickListener(new View.OnClickListener() { 44 | // @Override 45 | // public void onClick(View v) { 46 | // VPOperateManager.getMangerInstance(F2DebugActivity.this).sendF2DebugCmd(writeResponse, DebugCmd.CMD1, F2DebugActivity.this); 47 | // } 48 | // }); 49 | // 50 | // btnCmd2.setOnClickListener(new View.OnClickListener() { 51 | // @Override 52 | // public void onClick(View v) { 53 | // VPOperateManager.getMangerInstance(F2DebugActivity.this).sendF2DebugCmd(writeResponse, DebugCmd.CMD2, F2DebugActivity.this); 54 | // } 55 | // }); 56 | // 57 | // btnCmd3.setOnClickListener(new View.OnClickListener() { 58 | // @Override 59 | // public void onClick(View v) { 60 | // VPOperateManager.getMangerInstance(F2DebugActivity.this).sendF2DebugCmd(writeResponse, DebugCmd.CMD3, F2DebugActivity.this); 61 | // } 62 | // }); 63 | // 64 | // btnCmd4.setOnClickListener(new View.OnClickListener() { 65 | // @Override 66 | // public void onClick(View v) { 67 | // VPOperateManager.getMangerInstance(F2DebugActivity.this).sendF2DebugCmd(writeResponse, DebugCmd.CMD4, F2DebugActivity.this); 68 | // } 69 | // }); 70 | } 71 | 72 | @Override 73 | protected void onResume() { 74 | super.onResume(); 75 | } 76 | 77 | private IBleWriteResponse writeResponse = new IBleWriteResponse() { 78 | @Override 79 | public void onResponse(int code) { 80 | 81 | } 82 | }; 83 | 84 | @Override 85 | public void onIF2DebugStatusChanged(boolean isSuccess, DebugCmd debugCmd) { 86 | tvInfo.setText(debugCmd.toString() + ", 是否成功:" + isSuccess); 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/activity/FunctionSwitchActivity.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.activity; 2 | 3 | import android.os.Bundle; 4 | import androidx.annotation.Nullable; 5 | import androidx.appcompat.app.AppCompatActivity; 6 | import android.widget.TextView; 7 | 8 | import com.timaimee.vpdemo.R; 9 | import com.veepoo.protocol.VPOperateManager; 10 | import com.veepoo.protocol.listener.data.IDeviceFunctionStatusChangeListener; 11 | import com.veepoo.protocol.model.enums.EFunctionStatus; 12 | import com.veepoo.protocol.util.VPLogger; 13 | 14 | import org.jetbrains.annotations.NotNull; 15 | 16 | public class FunctionSwitchActivity extends AppCompatActivity { 17 | 18 | TextView tv; 19 | 20 | @Override 21 | protected void onCreate(@Nullable Bundle savedInstanceState) { 22 | super.onCreate(savedInstanceState); 23 | setContentView(R.layout.activity_function_swtich); 24 | tv = findViewById(R.id.tv); 25 | if (OperaterActivity.des != null) { 26 | tv.setText(OperaterActivity.des + "::::" + (OperaterActivity.currentState == EFunctionStatus.SUPPORT_OPEN ? "开" : "关")); 27 | } 28 | VPOperateManager.getInstance().setDeviceFunctionStatusChangeListener(new IDeviceFunctionStatusChangeListener() { 29 | @Override 30 | public void onFunctionStatusChanged(@NotNull DeviceFunction function, @NotNull EFunctionStatus status) { 31 | VPLogger.e("未设置设备功能状态改变监听:" + function.getDes() + " - " + status); 32 | runOnUiThread(new Runnable() { 33 | @Override 34 | public void run() { 35 | OperaterActivity.currentState = status; 36 | OperaterActivity.des = function.getDes(); 37 | tv.setText(OperaterActivity.des + "::::" + (OperaterActivity.currentState == EFunctionStatus.SUPPORT_OPEN ? "开" : "关")); 38 | } 39 | }); 40 | } 41 | }); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/activity/G15QRCodeActivity.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.activity; 2 | 3 | import androidx.annotation.Nullable; 4 | import androidx.appcompat.app.AppCompatActivity; 5 | import android.view.View; 6 | import android.widget.EditText; 7 | import android.widget.RadioGroup; 8 | import android.widget.Toast; 9 | 10 | import com.orhanobut.logger.Logger; 11 | import com.timaimee.vpdemo.R; 12 | import com.veepoo.protocol.VPOperateManager; 13 | import com.veepoo.protocol.listener.base.IBleWriteResponse; 14 | import com.veepoo.protocol.listener.data.IG15QRCodeSendListener; 15 | import com.veepoo.protocol.model.G15QRCode; 16 | import com.veepoo.protocol.util.VPLogger; 17 | 18 | /** 19 | * Author: YWX 20 | * Date: 2022/2/15 10:06 21 | * Description: 22 | */ 23 | public class G15QRCodeActivity extends AppCompatActivity { 24 | 25 | public static final String TAG = G15QRCodeActivity.class.getSimpleName(); 26 | 27 | EditText etContent; 28 | EditText etName; 29 | EditText etNumber; 30 | EditText etGroup; 31 | RadioGroup rgType; 32 | 33 | private int checkType = 0x00; 34 | 35 | @Override 36 | protected void onCreate(@Nullable android.os.Bundle savedInstanceState) { 37 | super.onCreate(savedInstanceState); 38 | setContentView(R.layout.activity_g15_qrcode); 39 | { 40 | etContent = findViewById(R.id.etContent); 41 | etName = findViewById(R.id.etName); 42 | etNumber = findViewById(R.id.etNumber); 43 | etGroup = findViewById(R.id.etGroup); 44 | rgType = findViewById(R.id.rgQRCode); 45 | } 46 | rgType.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 47 | @Override 48 | public void onCheckedChanged(RadioGroup group, int checkedId) { 49 | if (checkedId == R.id.rbHz) { 50 | checkType = 0x00; 51 | } else if (checkedId == R.id.rbSk) { 52 | checkType = 0x01; 53 | } 54 | } 55 | }); 56 | } 57 | 58 | public void sendQRCode(View view) { 59 | G15QRCode qrCode = getG15QRCode(); 60 | if (qrCode == null) return; 61 | try { 62 | VPOperateManager.getMangerInstance(this).sendG15QRCode(new IBleWriteResponse() { 63 | @Override 64 | public void onResponse(int code) { 65 | Logger.t(TAG).e("sendG15QRCode-------------->" + code); 66 | } 67 | }, qrCode, new IG15QRCodeSendListener() { 68 | @Override 69 | public void onG15QRCodeSendSuccess() { 70 | Toast.makeText(G15QRCodeActivity.this, "二维码发送成功", Toast.LENGTH_SHORT).show(); 71 | } 72 | 73 | @Override 74 | public void onG15QRCodeSendFailed() { 75 | Toast.makeText(G15QRCodeActivity.this, "二维码发送失败", Toast.LENGTH_SHORT).show(); 76 | } 77 | }); 78 | } catch (Exception e) { 79 | e.printStackTrace(); 80 | } 81 | } 82 | 83 | 84 | private G15QRCode getG15QRCode() { 85 | String qrContent = etContent.getText().toString().trim(); 86 | String qrName = etName.getText().toString().trim(); 87 | String qrNumber = etNumber.getText().toString().trim(); 88 | String qrGroup = etGroup.getText().toString().trim(); 89 | try { 90 | G15QRCode qrCode = new G15QRCode(checkType, qrContent, qrName, qrGroup, qrNumber); 91 | VPLogger.e("二维码:" + qrCode.toString()); 92 | return qrCode; 93 | } catch (Exception e) { 94 | Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show(); 95 | return null; 96 | } 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/activity/HealthRemindActivity.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.activity; 2 | 3 | import android.os.Bundle; 4 | import android.widget.Toast; 5 | 6 | import androidx.annotation.Nullable; 7 | import androidx.appcompat.app.AppCompatActivity; 8 | import androidx.recyclerview.widget.LinearLayoutManager; 9 | import androidx.recyclerview.widget.RecyclerView; 10 | 11 | import com.timaimee.vpdemo.R; 12 | import com.timaimee.vpdemo.adapter.HealthRemindAdapter; 13 | import com.veepoo.protocol.VPOperateManager; 14 | import com.veepoo.protocol.listener.IHealthRemindListener; 15 | import com.veepoo.protocol.listener.base.IBleWriteResponse; 16 | import com.veepoo.protocol.model.datas.HealthRemind; 17 | import com.veepoo.protocol.model.enums.HealthRemindType; 18 | 19 | import org.jetbrains.annotations.NotNull; 20 | 21 | import java.util.ArrayList; 22 | import java.util.List; 23 | 24 | public class HealthRemindActivity extends AppCompatActivity implements HealthRemindAdapter.OnHealthRemindToggleChangeListener, IHealthRemindListener { 25 | RecyclerView mRecyclerView; 26 | HealthRemindAdapter mAdapter; 27 | List mSettings = new ArrayList<>(); 28 | 29 | @Override 30 | protected void onCreate(@Nullable Bundle savedInstanceState) { 31 | super.onCreate(savedInstanceState); 32 | setContentView(R.layout.activity_health_remind); 33 | initHealthRemindView(); 34 | VPOperateManager.getInstance().readHealthRemind(HealthRemindType.ALL, this, new IBleWriteResponse() { 35 | @Override 36 | public void onResponse(int code) { 37 | 38 | } 39 | }); 40 | } 41 | 42 | private void initHealthRemindView() { 43 | mSettings.clear(); 44 | mRecyclerView = findViewById(R.id.rvHealthRemind); 45 | mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); 46 | mAdapter = new HealthRemindAdapter(mSettings, this); 47 | mRecyclerView.setAdapter(mAdapter); 48 | } 49 | 50 | @Override 51 | protected void onDestroy() { 52 | super.onDestroy(); 53 | } 54 | 55 | @Override 56 | public void onToggleChanged(HealthRemind setting) { 57 | VPOperateManager.getInstance().settingHealthRemind(setting, this, new IBleWriteResponse() { 58 | @Override 59 | public void onResponse(int code) { 60 | 61 | } 62 | }); 63 | } 64 | 65 | @Override 66 | public void functionNotSupport() { 67 | showMsg("暂不支持该功能"); 68 | } 69 | 70 | @Override 71 | public void onHealthRemindRead(@NotNull HealthRemind healthRemind) { 72 | if (!mSettings.contains(healthRemind)) { 73 | mSettings.add(healthRemind); 74 | mAdapter.notifyDataSetChanged(); 75 | } 76 | } 77 | 78 | @Override 79 | public void onHealthRemindSettingSuccess(@NotNull HealthRemind healthRemind) { 80 | showMsg("设置成功:" + healthRemind.toString()); 81 | } 82 | 83 | @Override 84 | public void onHealthRemindReadFailed() { 85 | showMsg("读取失败"); 86 | } 87 | 88 | @Override 89 | public void onHealthRemindSettingFailed(@NotNull HealthRemindType healthRemindType) { 90 | showMsg("设置失败:" + healthRemindType.getDes()); 91 | } 92 | 93 | public void showMsg(String msg) { 94 | Toast.makeText(HealthRemindActivity.this, msg, Toast.LENGTH_SHORT).show(); 95 | } 96 | 97 | @Override 98 | public void onHealthRemindReport(@NotNull HealthRemind healthRemind) { 99 | showMsg("健康提醒上报:" + healthRemind.toString()); 100 | } 101 | 102 | @Override 103 | public void onHealthRemindReportFailed() { 104 | showMsg("健康提醒上报:failed" ); 105 | } 106 | 107 | @Override 108 | public void onHealthRemindReadingComplete() { 109 | 110 | } 111 | } 112 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/activity/InstitutionActivity.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.activity; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | import android.text.TextUtils; 6 | import android.view.View; 7 | import android.widget.Button; 8 | import android.widget.EditText; 9 | import android.widget.TextView; 10 | 11 | import com.orhanobut.logger.Logger; 12 | import com.timaimee.vpdemo.R; 13 | import com.veepoo.protocol.util.InstitutionUtil; 14 | 15 | /** 16 | * Created by timaimee on 2017/4/24. 17 | */ 18 | public class InstitutionActivity extends Activity implements View.OnClickListener { 19 | private final static String TAG = AimSportCalcActivity.class.getSimpleName(); 20 | TextView tv; 21 | EditText heightEd, weightEd, distanceEd; 22 | 23 | int height = 175, weight = 50, distance = 50; 24 | Button update; 25 | 26 | @Override 27 | protected void onCreate(Bundle savedInstanceState) { 28 | super.onCreate(savedInstanceState); 29 | setContentView(R.layout.activity_institution); 30 | tv = (TextView) findViewById(R.id.institution_tv); 31 | 32 | heightEd = (EditText) findViewById(R.id.institution_person_height); 33 | weightEd = (EditText) findViewById(R.id.institution_person_weight); 34 | distanceEd = (EditText) findViewById(R.id.institution_distance); 35 | update = (Button) findViewById(R.id.institution_update); 36 | update.setOnClickListener(this); 37 | 38 | String institutionStr = getInstitution(height, weight, distance); 39 | tv.setText(institutionStr); 40 | Logger.t(TAG).i(institutionStr); 41 | } 42 | 43 | private String getInstitution(int height, int weight, int distance) { 44 | 45 | StringBuffer sb = new StringBuffer(); 46 | 47 | 48 | int lbcm = InstitutionUtil.cmToLBCM(height); 49 | String cmToLbcm = "公制cm-->英制cm," + height + "cm->" + lbcm / 12 + "\'" + lbcm % 12 + "\'\'"; 50 | String lbcmTocm = "英制cm-->公制cm," + lbcm / 12 + "\'" + lbcm % 12 + "\'\'->" + InstitutionUtil.lbcmToCM(lbcm) + "cm"; 51 | 52 | float lbkg = InstitutionUtil.kgToLBKG(weight); 53 | String kgToLbkg = "公制kg-->英制kg, " + weight + "kg->" + lbkg + "Lbs"; 54 | String lbkgTokg = "英制kg-->公制kg, " + lbkg + "Lbs->" + InstitutionUtil.lbkgToKG(lbkg) + "kg"; 55 | 56 | double lbkm1 = InstitutionUtil.kmToLBKM1(distance); 57 | double lbkm2 = InstitutionUtil.kmToLBKM2(distance); 58 | String kmToLbkm1 = "公制km-->英制km,一位小数," + distance + "km->" + lbkm1 + "mile"; 59 | String kmToLbkm2 = "公制km-->英制km,二位小数," + distance + "km->" + InstitutionUtil.kmToLBKM2(distance) + "mile"; 60 | String LbkmTokm = "英制km-->公制km,2位小数," + lbkm2 + "mile->" + InstitutionUtil.LBkmTokm(lbkm2) + "km"; 61 | 62 | sb.append(kmToLbkm1); 63 | sb.append("\n"); 64 | sb.append(kmToLbkm2); 65 | sb.append("\n"); 66 | sb.append(LbkmTokm); 67 | sb.append("\n"); 68 | sb.append("\n"); 69 | sb.append("\n"); 70 | sb.append(cmToLbcm); 71 | sb.append("\n"); 72 | sb.append(lbcmTocm); 73 | sb.append("\n"); 74 | sb.append("\n"); 75 | sb.append("\n"); 76 | sb.append(kgToLbkg); 77 | sb.append("\n"); 78 | sb.append(lbkgTokg); 79 | sb.append("\n"); 80 | 81 | return sb.toString(); 82 | } 83 | 84 | @Override 85 | public void onClick(View v) { 86 | String heightStr = heightEd.getText().toString(); 87 | if (!TextUtils.isEmpty(heightStr)) { 88 | height = Integer.valueOf(heightStr); 89 | } 90 | 91 | String weightStr = weightEd.getText().toString(); 92 | if (!TextUtils.isEmpty(weightStr)) { 93 | weight = Integer.valueOf(weightStr); 94 | } 95 | 96 | String stepStr = distanceEd.getText().toString(); 97 | if (!TextUtils.isEmpty(stepStr)) { 98 | distance = Integer.valueOf(stepStr); 99 | } 100 | String institutionStr = getInstitution(height, weight, distance); 101 | tv.setText(institutionStr); 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/activity/WorldClockAddListAdapter.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.activity; 2 | 3 | import android.view.LayoutInflater; 4 | import android.view.View; 5 | import android.view.ViewGroup; 6 | import android.widget.TextView; 7 | 8 | import androidx.annotation.NonNull; 9 | import androidx.recyclerview.widget.RecyclerView; 10 | 11 | import com.timaimee.vpdemo.R; 12 | import com.timaimee.vpdemo.adapter.OnRecycleViewClickCallback; 13 | import com.timaimee.vpdemo.bean.TimeZoneBean; 14 | 15 | import java.util.List; 16 | 17 | /** 18 | * Description 世界时钟适配 19 | * 20 | * @author KYM. 21 | * @date 2024/4/10 16:25 22 | */ 23 | public class WorldClockAddListAdapter extends RecyclerView.Adapter { 24 | 25 | private final List list; 26 | private final OnRecycleViewClickCallback onDragItemClick; 27 | 28 | public WorldClockAddListAdapter(List list, OnRecycleViewClickCallback onDragItemClick) { 29 | this.onDragItemClick = onDragItemClick; 30 | this.list = list; 31 | } 32 | 33 | class MyViewHolder extends RecyclerView.ViewHolder { 34 | private final TextView tvName; 35 | 36 | public MyViewHolder(View itemView) { 37 | super(itemView); 38 | 39 | tvName = (TextView) itemView.findViewById(R.id.tvName); 40 | 41 | itemView.setOnClickListener(new View.OnClickListener() { 42 | @Override 43 | public void onClick(View v) { 44 | int position = getAdapterPosition(); 45 | onDragItemClick.OnRecycleViewClick(position); 46 | } 47 | }); 48 | 49 | tvName.setOnClickListener(new View.OnClickListener() { 50 | @Override 51 | public void onClick(View v) { 52 | int position = getAdapterPosition(); 53 | onDragItemClick.OnRecycleViewClick(position); 54 | } 55 | }); 56 | } 57 | } 58 | 59 | @NonNull 60 | @Override 61 | public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 62 | View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_add_clock_list, parent, false); 63 | return new MyViewHolder(view); 64 | } 65 | 66 | @Override 67 | public int getItemViewType(int position) { 68 | return 0; 69 | } 70 | 71 | @Override 72 | public void onBindViewHolder(MyViewHolder holder, int position) { 73 | TimeZoneBean worldClock = list.get(position); 74 | holder.tvName.setText(worldClock.getCityName()); 75 | } 76 | 77 | @Override 78 | public int getItemCount() { 79 | return list.size(); 80 | } 81 | 82 | 83 | } 84 | 85 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/adapter/BleScanViewAdapter.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.adapter; 2 | 3 | import android.content.Context; 4 | import androidx.recyclerview.widget.RecyclerView; 5 | import android.util.Log; 6 | import android.view.LayoutInflater; 7 | import android.view.View; 8 | import android.view.ViewGroup; 9 | import android.widget.TextView; 10 | 11 | import com.inuker.bluetooth.library.search.SearchResult; 12 | import com.timaimee.vpdemo.R; 13 | 14 | import java.util.List; 15 | 16 | 17 | /** 18 | * Created by timaimee on 2016/7/25. 19 | */ 20 | public class BleScanViewAdapter extends RecyclerView.Adapter { 21 | private final LayoutInflater mLayoutInflater; 22 | List itemData; 23 | OnRecycleViewClickCallback mBleCallback; 24 | 25 | public BleScanViewAdapter(Context context, List data) { 26 | this.itemData = data; 27 | mLayoutInflater = LayoutInflater.from(context); 28 | } 29 | 30 | @Override 31 | public NormalTextViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 32 | return new NormalTextViewHolder(mLayoutInflater.inflate(R.layout.item_main, parent, false)); 33 | } 34 | 35 | @Override 36 | public void onBindViewHolder(NormalTextViewHolder holder, int position) { 37 | holder.mBleRssi.setText(itemData.get(position).getName() + "-" + itemData.get(position).getAddress() + "-" + itemData.get(position).rssi); 38 | 39 | } 40 | 41 | 42 | @Override 43 | public int getItemCount() { 44 | return itemData == null ? 0 : itemData.size(); 45 | } 46 | 47 | 48 | public void setBleItemOnclick(OnRecycleViewClickCallback bleCallback) { 49 | this.mBleCallback = bleCallback; 50 | } 51 | 52 | 53 | public class NormalTextViewHolder extends RecyclerView.ViewHolder { 54 | 55 | TextView mBleRssi; 56 | 57 | 58 | NormalTextViewHolder(View view) { 59 | super(view); 60 | mBleRssi = (TextView) view.findViewById(R.id.tv); 61 | view.setOnClickListener(new View.OnClickListener() { 62 | @Override 63 | public void onClick(View v) { 64 | mBleCallback.OnRecycleViewClick(getPosition()); 65 | Log.d("NormalTextViewHolder", "onClick--> position = " + getPosition()); 66 | } 67 | }); 68 | } 69 | } 70 | } -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/adapter/ContactAdapter.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.adapter; 2 | 3 | import android.view.LayoutInflater; 4 | import android.view.View; 5 | import android.view.ViewGroup; 6 | import android.widget.ImageView; 7 | import android.widget.TextView; 8 | 9 | import androidx.annotation.NonNull; 10 | import androidx.recyclerview.widget.RecyclerView; 11 | 12 | import com.timaimee.vpdemo.R; 13 | import com.veepoo.protocol.model.datas.Contact; 14 | 15 | import java.util.List; 16 | 17 | /** 18 | * Created by Administrator on 2018/12/22. 19 | */ 20 | 21 | public class ContactAdapter extends RecyclerView.Adapter { 22 | 23 | private final List list; 24 | private final OnRecycleViewClickCallback onDragItemClick; 25 | private final int contactType; 26 | 27 | public ContactAdapter(List list, OnRecycleViewClickCallback onDragItemClick, int contactType) { 28 | this.onDragItemClick = onDragItemClick; 29 | this.list = list; 30 | this.contactType = contactType; 31 | } 32 | 33 | class MyViewHolder extends RecyclerView.ViewHolder { 34 | private final TextView contactName; 35 | private final TextView contactPhone; 36 | private final TextView contactSOS; 37 | 38 | public MyViewHolder(View itemView) { 39 | super(itemView); 40 | 41 | contactName = (TextView) itemView.findViewById(R.id.iv_contact_name); 42 | contactPhone = (TextView) itemView.findViewById(R.id.iv_contact_phone); 43 | ImageView contactDelete = (ImageView) itemView.findViewById(R.id.iv_contact_delte); 44 | contactSOS = (TextView) itemView.findViewById(R.id.tvSOS); 45 | contactSOS.setVisibility(contactType == 2 ? View.VISIBLE : View.GONE); 46 | 47 | contactDelete.setOnClickListener(new View.OnClickListener() { 48 | @Override 49 | public void onClick(View v) { 50 | int position = getAdapterPosition(); 51 | onDragItemClick.OnRecycleViewClick(0x00 | position); 52 | } 53 | }); 54 | 55 | contactSOS.setOnClickListener(new View.OnClickListener() { 56 | @Override 57 | public void onClick(View v) { 58 | int position = getAdapterPosition(); 59 | onDragItemClick.OnRecycleViewClick(0x10 | position); 60 | } 61 | }); 62 | } 63 | } 64 | 65 | @NonNull 66 | @Override 67 | public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 68 | View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_contact, parent, false); 69 | return new MyViewHolder(view); 70 | } 71 | 72 | @Override 73 | public int getItemViewType(int position) { 74 | return 0; 75 | } 76 | 77 | @Override 78 | public void onBindViewHolder(MyViewHolder holder, int position) { 79 | Contact contact = list.get(position); 80 | holder.contactName.setText(contact.getName()); 81 | holder.contactPhone.setText(contact.getPhoneNumber()); 82 | holder.contactSOS.setTextColor(holder.itemView.getResources().getColor(contact.isSettingSOS() ? R.color.real_red : R.color.black_30)); 83 | if(contactType == 2) { 84 | if (!contact.isSettingSOS()) { 85 | holder.contactSOS.setVisibility(isNeedGoneGreySOSTag() ? View.GONE : View.VISIBLE); 86 | } else { 87 | holder.contactSOS.setVisibility(View.VISIBLE); 88 | } 89 | } else { 90 | holder.contactSOS.setVisibility(View.GONE); 91 | } 92 | } 93 | 94 | @Override 95 | public int getItemCount() { 96 | return list.size(); 97 | } 98 | 99 | private boolean isNeedGoneGreySOSTag() { 100 | int sosCount = 0; 101 | for (Contact contact : list) { 102 | if (contact.isSettingSOS()) { 103 | sosCount++; 104 | } 105 | } 106 | return contactType == 2 && sosCount >= 5; 107 | } 108 | } 109 | 110 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/adapter/CustomLogAdapter.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.adapter; 2 | 3 | import android.util.Log; 4 | 5 | import com.orhanobut.logger.LogAdapter; 6 | 7 | /** 8 | * Created by timaimee on 2016/7/19. 9 | */ 10 | public class CustomLogAdapter implements LogAdapter { 11 | @Override public void d(String tag, String message) { 12 | Log.d(tag, message); 13 | } 14 | 15 | @Override public void e(String tag, String message) { 16 | Log.e(tag, message); 17 | } 18 | 19 | @Override public void w(String tag, String message) { 20 | Log.w(tag, message); 21 | } 22 | 23 | @Override public void i(String tag, String message) { 24 | Log.i(tag, message); 25 | } 26 | 27 | @Override public void v(String tag, String message) { 28 | Log.v(tag, message); 29 | } 30 | 31 | @Override public void wtf(String tag, String message) { 32 | Log.wtf(tag, message); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/adapter/DividerItemDecoration.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.adapter; 2 | 3 | import android.content.Context; 4 | import android.content.res.TypedArray; 5 | import android.graphics.Canvas; 6 | import android.graphics.Rect; 7 | import android.graphics.drawable.Drawable; 8 | import android.view.View; 9 | 10 | import androidx.recyclerview.widget.LinearLayoutManager; 11 | import androidx.recyclerview.widget.RecyclerView; 12 | 13 | /** 14 | * Created by timaimee on 2016/8/10. 15 | */ 16 | public class DividerItemDecoration extends RecyclerView.ItemDecoration { 17 | private final static String TAG = DividerItemDecoration.class.getSimpleName(); 18 | private static final int[] ATTRS = new int[]{ 19 | android.R.attr.listDivider 20 | }; 21 | public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL; 22 | public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL; 23 | private Drawable mDivider; 24 | private int mOrientation; 25 | private boolean isDrawLastLine = true; 26 | 27 | public DividerItemDecoration(Context context, int orientation) { 28 | final TypedArray a = context.obtainStyledAttributes(ATTRS); 29 | mDivider = a.getDrawable(0); 30 | a.recycle(); 31 | setOrientation(orientation); 32 | } 33 | 34 | public DividerItemDecoration(Context context, int orientation, boolean isDrawLastLine) { 35 | this(context, orientation); 36 | this.isDrawLastLine = isDrawLastLine; 37 | } 38 | 39 | public void setOrientation(int orientation) { 40 | if (orientation != HORIZONTAL_LIST && orientation != VERTICAL_LIST) { 41 | throw new IllegalArgumentException("invalid orientation"); 42 | } 43 | mOrientation = orientation; 44 | } 45 | 46 | @Override 47 | public void onDraw(Canvas c, RecyclerView parent) { 48 | 49 | if (mOrientation == VERTICAL_LIST) { 50 | drawVertical(c, parent, isDrawLastLine); 51 | } else { 52 | drawHorizontal(c, parent, isDrawLastLine); 53 | } 54 | 55 | } 56 | 57 | 58 | public void drawVertical(Canvas c, RecyclerView parent, boolean isDrawLastLine) { 59 | final int left = parent.getPaddingLeft(); 60 | final int right = parent.getWidth() - parent.getPaddingRight(); 61 | 62 | final int childCount = parent.getChildCount(); 63 | for (int i = 0; i < childCount; i++) { 64 | if (!isDrawLastLine && i == childCount - 1) { 65 | return; 66 | } 67 | final View child = parent.getChildAt(i); 68 | RecyclerView v = new RecyclerView(parent.getContext()); 69 | final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child 70 | .getLayoutParams(); 71 | final int top = child.getBottom() + params.bottomMargin; 72 | final int bottom = top + mDivider.getIntrinsicHeight(); 73 | mDivider.setBounds(left, top, right, bottom); 74 | mDivider.draw(c); 75 | 76 | } 77 | } 78 | 79 | public void drawHorizontal(Canvas c, RecyclerView parent, boolean isDrawLastLine) { 80 | final int top = parent.getPaddingTop(); 81 | final int bottom = parent.getHeight() - parent.getPaddingBottom(); 82 | 83 | final int childCount = parent.getChildCount(); 84 | 85 | for (int i = 0; i < childCount; i++) { 86 | if (!isDrawLastLine && i == childCount - 1) { 87 | //划最后一条 88 | return; 89 | } 90 | final View child = parent.getChildAt(i); 91 | final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child 92 | .getLayoutParams(); 93 | final int left = child.getRight() + params.rightMargin; 94 | final int right = left + mDivider.getIntrinsicHeight(); 95 | mDivider.setBounds(left, top, right, bottom); 96 | mDivider.draw(c); 97 | 98 | } 99 | } 100 | 101 | @Override 102 | public void getItemOffsets(Rect outRect, int itemPosition, RecyclerView parent) { 103 | if (mOrientation == VERTICAL_LIST) { 104 | outRect.set(0, 0, 0, mDivider.getIntrinsicHeight()); 105 | } else { 106 | outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0); 107 | } 108 | } 109 | } -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/adapter/GridAdatper.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.adapter; 2 | 3 | import android.content.Context; 4 | import android.graphics.Color; 5 | import android.view.LayoutInflater; 6 | import android.view.View; 7 | import android.view.ViewGroup; 8 | import android.widget.BaseAdapter; 9 | import android.widget.TextView; 10 | 11 | import com.timaimee.vpdemo.R; 12 | import com.timaimee.vpdemo.activity.Oprate; 13 | 14 | import java.util.List; 15 | import java.util.Map; 16 | 17 | /** 18 | * Created by timaimee on 2016/12/21. 19 | */ 20 | public class GridAdatper extends BaseAdapter { 21 | private List> mGridData; 22 | LayoutInflater mLayoutInflater; 23 | 24 | 25 | public GridAdatper(Context context, List> itemData) { 26 | this.mGridData = itemData; 27 | mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 28 | } 29 | 30 | 31 | @Override 32 | public int getCount() { 33 | return mGridData.size(); 34 | } 35 | 36 | @Override 37 | public Object getItem(int i) { 38 | 39 | return mGridData.get(i); 40 | } 41 | 42 | @Override 43 | public long getItemId(int i) { 44 | return i; 45 | } 46 | 47 | @Override 48 | public View getView(int i, View convertView, ViewGroup viewGroup) { 49 | GridHold mGridHold; 50 | if (null == convertView) { 51 | convertView = mLayoutInflater.inflate(R.layout.item_grid, null); 52 | mGridHold = new GridHold(); 53 | mGridHold.mButton = (TextView) convertView.findViewById(R.id.gridbutton); 54 | convertView.setTag(mGridHold); 55 | } else { 56 | mGridHold = (GridHold) convertView.getTag(); 57 | } 58 | Map map = mGridData.get(i); 59 | mGridHold.mButton.setText(map.get("str")); 60 | if (i % 4 == 0) { 61 | mGridHold.mButton.setBackgroundColor(Color.parseColor("#FF7032")); 62 | } else if (i % 4 == 1) { 63 | mGridHold.mButton.setBackgroundColor(Color.parseColor("#3F51B5")); 64 | } else if (i % 4 == 2) { 65 | mGridHold.mButton.setBackgroundColor(Color.parseColor("#2695f0")); 66 | } else if (i % 4 == 3) { 67 | mGridHold.mButton.setBackgroundColor(Color.parseColor("#852BFE")); 68 | } 69 | 70 | if (mGridHold.mButton.getText().toString().equals(Oprate.SHARE_LOG)) { 71 | mGridHold.mButton.setBackgroundColor(Color.RED); 72 | } 73 | if (mGridHold.mButton.getText().toString().equals(Oprate.READ_HEALTH_ORIGINAL)) { 74 | mGridHold.mButton.setBackgroundColor(Color.RED); 75 | } 76 | if (mGridHold.mButton.getText().toString().equals(Oprate.JL_DEVICE)) { 77 | mGridHold.mButton.setBackgroundColor(Color.parseColor("#A5FB3E")); 78 | } 79 | if (mGridHold.mButton.getText().toString().equals(Oprate.ALARM_NEW_)) { 80 | mGridHold.mButton.setBackgroundColor(Color.parseColor("#F5CF0E")); 81 | } 82 | return convertView; 83 | } 84 | 85 | 86 | static class GridHold { 87 | TextView mButton; 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/adapter/HealthRemindAdapter.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.adapter; 2 | 3 | import android.view.LayoutInflater; 4 | import android.view.View; 5 | import android.view.ViewGroup; 6 | import android.widget.TextView; 7 | 8 | import androidx.annotation.NonNull; 9 | import androidx.recyclerview.widget.RecyclerView; 10 | 11 | import com.timaimee.vpdemo.R; 12 | import com.timaimee.vpdemo.activity.SwitchView; 13 | import com.veepoo.protocol.model.datas.HealthRemind; 14 | 15 | import java.util.List; 16 | 17 | /** 18 | * Author: YWX 19 | * Date: 2021/9/30 17:05 20 | * Description: 21 | */ 22 | public class HealthRemindAdapter extends RecyclerView.Adapter { 23 | 24 | private List settings; 25 | 26 | public HealthRemindAdapter(List data, OnHealthRemindToggleChangeListener listener) { 27 | settings = data; 28 | this.listener = listener; 29 | } 30 | 31 | @NonNull 32 | @Override 33 | public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { 34 | return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_health_remind, parent,false)); 35 | } 36 | 37 | @Override 38 | public void onBindViewHolder(@NonNull ViewHolder holder, int position) { 39 | holder.updateUI(settings.get(position), listener); 40 | } 41 | 42 | @Override 43 | public int getItemCount() { 44 | return settings.size(); 45 | } 46 | 47 | static class ViewHolder extends RecyclerView.ViewHolder { 48 | TextView tvHealthRemindInfo; 49 | TextView tvHealthTime; 50 | SwitchView sv; 51 | 52 | public ViewHolder(View itemView) { 53 | super(itemView); 54 | tvHealthRemindInfo = itemView.findViewById(R.id.tvHealthInfo); 55 | tvHealthTime = itemView.findViewById(R.id.tvTime); 56 | sv = itemView.findViewById(R.id.sv); 57 | } 58 | 59 | public void updateUI(final HealthRemind setting, final OnHealthRemindToggleChangeListener listener) { 60 | tvHealthRemindInfo.setText(setting.getRemindType().getDes() + "提醒 间隔(分钟):" + setting.getInterval()); 61 | tvHealthTime.setText("时间范围:" + setting.getStartTime().getColck() + "-" + setting.getEndTime().getColck()); 62 | sv.setOpened(setting.getStatus()); 63 | sv.setOnStateChangedListener(new SwitchView.OnStateChangedListener() { 64 | @Override 65 | public void toggleToOn(SwitchView view) { 66 | setting.setStatus(true); 67 | view.setOpened(true); 68 | if (listener != null) { 69 | listener.onToggleChanged(setting); 70 | } 71 | } 72 | 73 | @Override 74 | public void toggleToOff(SwitchView view) { 75 | setting.setStatus(false); 76 | view.setOpened(false); 77 | if (listener != null) { 78 | listener.onToggleChanged(setting); 79 | } 80 | } 81 | }); 82 | } 83 | } 84 | 85 | public interface OnHealthRemindToggleChangeListener { 86 | void onToggleChanged(HealthRemind setting); 87 | } 88 | 89 | private OnHealthRemindToggleChangeListener listener; 90 | 91 | } 92 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/adapter/ListViewAdatper.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.adapter; 2 | 3 | import android.content.Context; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | import android.widget.BaseAdapter; 8 | import android.widget.TextView; 9 | 10 | import com.inuker.bluetooth.library.search.SearchResult; 11 | import com.timaimee.vpdemo.R; 12 | 13 | import java.util.List; 14 | 15 | /** 16 | * Created by timaimee on 2016/12/21. 17 | */ 18 | public class ListViewAdatper extends BaseAdapter { 19 | private List mData; 20 | LayoutInflater mLayoutInflater; 21 | 22 | 23 | public ListViewAdatper(Context context, List itemData) { 24 | this.mData = itemData; 25 | mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 26 | } 27 | 28 | 29 | @Override 30 | public int getCount() { 31 | return mData.size(); 32 | } 33 | 34 | @Override 35 | public Object getItem(int i) { 36 | 37 | return mData.get(i); 38 | } 39 | 40 | @Override 41 | public long getItemId(int i) { 42 | return i; 43 | } 44 | 45 | @Override 46 | public View getView(int i, View convertView, ViewGroup viewGroup) { 47 | TextViewHold textViewHold; 48 | if (null == convertView) { 49 | convertView = mLayoutInflater.inflate(R.layout.item_main, null); 50 | textViewHold = new TextViewHold(); 51 | textViewHold.mTView = (TextView) convertView.findViewById(R.id.tv); 52 | convertView.setTag(textViewHold); 53 | } else { 54 | textViewHold = (TextViewHold) convertView.getTag(); 55 | } 56 | 57 | textViewHold.mTView.setText(mData.get(i).getName() + "-" + mData.get(i).getAddress() + "-" + mData.get(i).rssi); 58 | return convertView; 59 | } 60 | 61 | 62 | static class TextViewHold { 63 | TextView mTView; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/adapter/NewAlarmAdapter.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.adapter; 2 | 3 | import android.view.LayoutInflater; 4 | import android.view.View; 5 | import android.view.ViewGroup; 6 | import android.widget.TextView; 7 | 8 | import androidx.annotation.NonNull; 9 | import androidx.recyclerview.widget.RecyclerView; 10 | 11 | import com.timaimee.vpdemo.R; 12 | import com.timaimee.vpdemo.activity.SwitchView; 13 | import com.veepoo.protocol.model.settings.Alarm2Setting; 14 | 15 | import java.util.List; 16 | 17 | /** 18 | * Author: YWX 19 | * Date: 2021/9/30 17:05 20 | * Description: 21 | */ 22 | public class NewAlarmAdapter extends RecyclerView.Adapter { 23 | 24 | private List settings; 25 | 26 | public NewAlarmAdapter(List data, OnNewAlarmToggleChangeListener listener) { 27 | settings = data; 28 | this.listener = listener; 29 | } 30 | 31 | @NonNull 32 | @Override 33 | public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { 34 | return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_new_alarm, null)); 35 | } 36 | 37 | @Override 38 | public void onBindViewHolder(@NonNull ViewHolder holder, int position) { 39 | holder.updateUI(settings.get(position), listener); 40 | } 41 | 42 | @Override 43 | public int getItemCount() { 44 | return settings.size(); 45 | } 46 | 47 | static class ViewHolder extends RecyclerView.ViewHolder { 48 | TextView tvAlarmID; 49 | TextView tvAlarmRepeat; 50 | TextView tvAlarmTime; 51 | SwitchView sv; 52 | 53 | public ViewHolder(View itemView) { 54 | super(itemView); 55 | tvAlarmID = itemView.findViewById(R.id.tvAlarmId); 56 | tvAlarmRepeat = itemView.findViewById(R.id.tvAlarmRepeat); 57 | tvAlarmTime = itemView.findViewById(R.id.tvAlarmTime); 58 | sv = itemView.findViewById(R.id.sv); 59 | } 60 | 61 | public void updateUI(final Alarm2Setting setting, final OnNewAlarmToggleChangeListener listener) { 62 | tvAlarmID.setText("" + setting.getAlarmId()); 63 | tvAlarmRepeat.setText(setting.getRepeatStatus()); 64 | tvAlarmTime.setText(setting.getAlarmHour() + ":" + setting.getAlarmMinute()); 65 | sv.setOpened(setting.isOpen); 66 | sv.setOnStateChangedListener(new SwitchView.OnStateChangedListener() { 67 | @Override 68 | public void toggleToOn(SwitchView view) { 69 | setting.setOpen(true); 70 | if (listener != null) { 71 | listener.onToggleChanged(setting); 72 | } 73 | } 74 | 75 | @Override 76 | public void toggleToOff(SwitchView view) { 77 | setting.setOpen(false); 78 | if (listener != null) { 79 | listener.onToggleChanged(setting); 80 | } 81 | } 82 | }); 83 | } 84 | } 85 | 86 | public interface OnNewAlarmToggleChangeListener { 87 | void onToggleChanged(Alarm2Setting setting); 88 | } 89 | 90 | private OnNewAlarmToggleChangeListener listener; 91 | 92 | } 93 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/adapter/OnRecycleViewClickCallback.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.adapter; 2 | 3 | /** 4 | * Created by timaimee on 2016/7/25. 5 | */ 6 | public interface OnRecycleViewClickCallback { 7 | void OnRecycleViewClick(int position); 8 | } 9 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/adapter/TextAlarmAdapter.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.adapter; 2 | 3 | import androidx.annotation.NonNull; 4 | import androidx.recyclerview.widget.RecyclerView; 5 | import android.view.LayoutInflater; 6 | import android.view.View; 7 | import android.view.ViewGroup; 8 | import android.widget.TextView; 9 | 10 | import com.timaimee.vpdemo.R; 11 | import com.timaimee.vpdemo.activity.SwitchView; 12 | import com.veepoo.protocol.model.settings.TextAlarm2Setting; 13 | 14 | import java.util.List; 15 | 16 | /** 17 | * Author: YWX 18 | * Date: 2021/9/30 17:05 19 | * Description: 20 | */ 21 | public class TextAlarmAdapter extends RecyclerView.Adapter { 22 | 23 | private List settings; 24 | 25 | public TextAlarmAdapter(List data, OnTextAlarmToggleChangeListener listener) { 26 | settings = data; 27 | this.listener = listener; 28 | } 29 | 30 | @NonNull 31 | @Override 32 | public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { 33 | return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_text_alarm, null)); 34 | } 35 | 36 | @Override 37 | public void onBindViewHolder(@NonNull ViewHolder holder, int position) { 38 | holder.updateUI(settings.get(position), listener); 39 | } 40 | 41 | @Override 42 | public int getItemCount() { 43 | return settings.size(); 44 | } 45 | 46 | static class ViewHolder extends RecyclerView.ViewHolder { 47 | TextView tvAlarmID; 48 | TextView tvAlarmRepeat; 49 | TextView tvAlarmContent; 50 | TextView tvAlarmTime; 51 | SwitchView sv; 52 | 53 | public ViewHolder(View itemView) { 54 | super(itemView); 55 | tvAlarmID = itemView.findViewById(R.id.tvAlarmId); 56 | tvAlarmRepeat = itemView.findViewById(R.id.tvAlarmRepeat); 57 | tvAlarmContent = itemView.findViewById(R.id.tvAlarmContent); 58 | tvAlarmTime = itemView.findViewById(R.id.tvAlarmTime); 59 | sv = itemView.findViewById(R.id.sv); 60 | } 61 | public void updateUI(final TextAlarm2Setting setting, final OnTextAlarmToggleChangeListener listener) { 62 | tvAlarmID.setText("" + setting.getAlarmId()); 63 | tvAlarmContent.setText(setting.getContent()); 64 | tvAlarmRepeat.setText(setting.getRepeatStatus()); 65 | tvAlarmTime.setText(setting.getAlarmHour() + ":" + setting.getAlarmMinute()); 66 | sv.setOpened(setting.isOpen); 67 | sv.setOnStateChangedListener(new SwitchView.OnStateChangedListener() { 68 | @Override 69 | public void toggleToOn(SwitchView view) { 70 | setting.setOpen(true); 71 | if (listener != null) { 72 | listener.onToggleChanged(setting); 73 | } 74 | } 75 | 76 | @Override 77 | public void toggleToOff(SwitchView view) { 78 | setting.setOpen(false); 79 | if (listener != null) { 80 | listener.onToggleChanged(setting); 81 | } 82 | } 83 | }); 84 | } 85 | } 86 | 87 | public interface OnTextAlarmToggleChangeListener { 88 | void onToggleChanged(TextAlarm2Setting setting); 89 | } 90 | 91 | 92 | private OnTextAlarmToggleChangeListener listener; 93 | 94 | 95 | } 96 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/bean/TimeZoneBean.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.bean; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * @author KYM 7 | * on 2024/4/10 8 | */ 9 | public class TimeZoneBean implements Serializable { 10 | private String abbreviation; 11 | private String cityName; 12 | private String originalTimeZoneName; 13 | private String shortGenericTimeZoneName; 14 | private int id; 15 | 16 | public TimeZoneBean() { 17 | } 18 | 19 | public TimeZoneBean(String abbreviation, String cityName, String originalTimeZoneName, String shortGenericTimeZoneName) { 20 | this.abbreviation = abbreviation; 21 | this.cityName = cityName; 22 | this.originalTimeZoneName = originalTimeZoneName; 23 | this.shortGenericTimeZoneName = shortGenericTimeZoneName; 24 | } 25 | 26 | public String getAbbreviation() { 27 | return abbreviation; 28 | } 29 | 30 | public void setAbbreviation(String abbreviation) { 31 | this.abbreviation = abbreviation; 32 | } 33 | 34 | public String getCityName() { 35 | return cityName; 36 | } 37 | 38 | public void setCityName(String cityName) { 39 | this.cityName = cityName; 40 | } 41 | 42 | public String getOriginalTimeZoneName() { 43 | return originalTimeZoneName; 44 | } 45 | 46 | public void setOriginalTimeZoneName(String originalTimeZoneName) { 47 | this.originalTimeZoneName = originalTimeZoneName; 48 | } 49 | 50 | public String getShortGenericTimeZoneName() { 51 | return shortGenericTimeZoneName; 52 | } 53 | 54 | public void setShortGenericTimeZoneName(String shortGenericTimeZoneName) { 55 | this.shortGenericTimeZoneName = shortGenericTimeZoneName; 56 | } 57 | 58 | public int getId() { 59 | return id; 60 | } 61 | 62 | public void setId(int id) { 63 | this.id = id; 64 | } 65 | 66 | public int getT15Min() { 67 | if (abbreviation.equals("GMT")) { 68 | return 0; 69 | } else { 70 | if (abbreviation.contains("+")) { 71 | String timeStr = abbreviation.replace("GMT", "").replace("+", "").trim().toString(); 72 | String[] dat = timeStr.split(":"); 73 | int hour = Integer.parseInt(dat[0].toString()); 74 | int minute = Integer.parseInt(dat[1].toString()); 75 | return (hour * 60 + minute) / 15; 76 | } else { 77 | String timeStr = abbreviation.replace("GMT", "").replace("-", "").trim().toString(); 78 | String[] dat = timeStr.split(":"); 79 | int hour = Integer.parseInt(dat[0].toString()); 80 | int minute = Integer.parseInt(dat[1].toString()); 81 | return -(hour * 60 + minute) / 15; 82 | } 83 | } 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/oad/activity/NotificationActivity.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.oad.activity; 2 | 3 | import android.app.Activity; 4 | import android.content.Intent; 5 | import android.os.Bundle; 6 | 7 | /** 8 | * Created by timaimee on 2016/9/6. 9 | */ 10 | public class NotificationActivity extends Activity { 11 | 12 | @Override 13 | protected void onCreate(Bundle savedInstanceState) { 14 | super.onCreate(savedInstanceState); 15 | 16 | if (isTaskRoot()) { 17 | final Intent intent = new Intent(this, OadActivity.class); 18 | intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 19 | intent.putExtras(getIntent().getExtras()); // copy all extras 20 | startActivity(intent); 21 | } 22 | finish(); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/java/com/timaimee/vpdemo/oad/service/DfuService.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo.oad.service; 2 | 3 | import android.app.Activity; 4 | 5 | import com.timaimee.vpdemo.oad.activity.NotificationActivity; 6 | 7 | import vpno.nordicsemi.android.dfu.DfuBaseService; 8 | 9 | 10 | /** 11 | * Created by timaimee on 2016/9/6. 12 | */ 13 | public class DfuService extends DfuBaseService { 14 | @Override 15 | protected Class extends Activity> getNotificationTarget() { 16 | return NotificationActivity.class; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/jniLibs/arm64-v8a/libnative-lib.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/jniLibs/arm64-v8a/libnative-lib.so -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/jniLibs/armeabi-v7a/libnative-lib.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/jniLibs/armeabi-v7a/libnative-lib.so -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/jniLibs/armeabi/libnative-lib.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/jniLibs/armeabi/libnative-lib.so -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/jniLibs/mips/libnative-lib.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/jniLibs/mips/libnative-lib.so -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/jniLibs/mips64/libnative-lib.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/jniLibs/mips64/libnative-lib.so -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/jniLibs/x86/libnative-lib.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/jniLibs/x86/libnative-lib.so -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/jniLibs/x86_64/libnative-lib.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/jniLibs/x86_64/libnative-lib.so -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/drawable/contacts_icon_nodata.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/drawable/contacts_icon_nodata.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/drawable/fit_dialog_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/drawable/fit_move_point.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/drawable/fit_move_point.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/drawable/fit_start_point.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/drawable/fit_start_point.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/drawable/hband_home_module_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/drawable/hband_home_module_delete.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/drawable/hband_home_module_drag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/drawable/hband_home_module_drag.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/drawable/ic_action_notify_cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/drawable/ic_action_notify_cancel.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/drawable/login_button.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/drawable/login_button_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/drawable/login_button_normal.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/drawable/login_button_press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/drawable/login_button_press.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/drawable/login_button_press1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/drawable/login_button_press1.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/drawable/refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/drawable/refresh.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/activity_add_clock.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 15 | 16 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/activity_ecg.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/activity_ecg_switch.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 16 | 17 | 28 | 29 | 40 | 41 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/activity_ecgdetect.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 21 | 22 | 23 | 24 | 25 | 29 | 30 | 38 | 39 | 46 | 47 | 54 | 55 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/activity_f2_debug.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 15 | 16 | 24 | 25 | 33 | 34 | 42 | 43 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/activity_function_swtich.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 17 | 18 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/activity_gps_report.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 20 | 21 | 22 | 23 | 29 | 30 | 34 | 35 | 43 | 44 | 52 | 53 | 54 | 58 | 59 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/activity_health_remind.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 14 | 15 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 11 | 12 | 20 | 21 | 31 | 32 | 33 | 39 | 40 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/activity_notification_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | 19 | 20 | 21 | 30 | 31 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/activity_operate.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | 19 | 20 | 21 | 31 | 42 | 43 | 48 | 49 | 54 | 55 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/activity_ptt.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 21 | 22 | 23 | 24 | 25 | 29 | 30 | 31 | 41 | 42 | 49 | 50 | 57 | 58 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/activity_show_log.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | 18 | 30 | 31 | 43 | 55 | 56 | 68 | 69 | 81 | 82 | 92 | 93 | 101 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/activity_test.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | 18 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/activity_text_alarm.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 20 | 21 | 25 | 26 | 33 | 34 | 41 | 42 | 48 | 49 | 54 | 55 | 56 | 57 | 58 | 62 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/activity_uiupdate_agps.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 21 | 22 | 23 | 24 | 28 | 29 | 33 | 34 | 44 | 45 | 53 | 54 | 64 | 65 | 70 | 71 | 80 | 81 | 82 | 83 | 92 | 93 | 102 | 103 | 104 | 105 | 106 | 107 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/activity_uiupdate_g15img.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | 16 | 17 | 25 | 26 | 27 | 35 | 36 | 44 | 45 | 54 | 55 | 64 | 65 | 74 | 75 | 84 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/activity_world_clock.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 19 | 20 | 31 | 32 | 43 | 44 | 54 | 55 | 64 | 65 | 79 | 80 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/dialog_connect_progress.xml: -------------------------------------------------------------------------------- 1 | 10 | 11 | 17 | 18 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/item_add_clock_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/item_contact.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 13 | 14 | 22 | 23 | 24 | 32 | 33 | 41 | 42 | 43 | 52 | 53 | 62 | 63 | 64 | 65 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/item_dropdown.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/item_grid.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 15 | 16 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/item_health_remind.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 23 | 24 | 34 | 35 | 46 | 47 | 60 | 61 | 68 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/item_log.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 14 | 15 | 21 | 22 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/item_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 14 | 15 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/item_new_alarm.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 22 | 23 | 33 | 34 | 44 | 45 | 46 | 54 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/item_notify.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 15 | 16 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/item_select.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/item_text_alarm.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 22 | 23 | 33 | 43 | 44 | 56 | 57 | 65 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/layout/item_world_clock.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 21 | 22 | 23 | 31 | 32 | 40 | 41 | 42 | 51 | 52 | 62 | 63 | 64 | 65 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/menu/menu_main.xml: -------------------------------------------------------------------------------- 1 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/mipmap-hdpi/ic_launcher_d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/mipmap-hdpi/ic_launcher_d.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/mipmap-mdpi/ic_launcher_d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/mipmap-mdpi/ic_launcher_d.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/mipmap-xhdpi/ic_launcher_d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/mipmap-xhdpi/ic_launcher_d.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/mipmap-xxhdpi/ic_launcher_d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/mipmap-xxhdpi/ic_launcher_d.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/mipmap-xxxhdpi/ic_launcher_d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/mipmap-xxxhdpi/ic_launcher_d.png -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/values-v21/strings_dfu.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | Starting bootloader... 18 | Waiting for bootloader %s... 19 | Uploading part %d/%d... 20 | Aborted 21 | Transmitting components to %s... 22 | Abort 23 | DFU 24 | File Size: 25 | Initializing... 26 | Connecting... 27 | Starting DFU... 28 | Uploading... 29 | Validating... 30 | Disonnecting... 31 | Done 32 | Aborted 33 | Upload failed 34 | Connecting to %s... 35 | Initializing DFU process %s ... 36 | Transmitting application to %s... 37 | Validating application %s 38 | Application has been send successfully. 39 | Disconnecting from %s... 40 | Application upload has been canceled. 41 | DFU process failed. 42 | DFU options 43 | unnamed device 44 | Uploading... 45 | 0% 46 | Application Uploading 47 | Are you sure to cancel upload? 48 | Select device: 49 | No device found 50 | Scan 51 | Cancel 52 | BONDED DEVICES: 53 | AVAILABLE DEVICES: 54 | n/a 55 | Device doesn\'t have BLE support! 56 | No profiles found. 57 | Open 58 | Close 59 | nRF Master Control Panel 60 | 61 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | #FC5F64 7 | #66333333 8 | #10666666 9 | #B7B2B2 10 | #f00 11 | #4B000000 12 | 13 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 16dp 6 | 70dp 7 | 8 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | VPSdk 3 | Settings 4 | 5 | 6 | 脉冲磁疗 7 | 常规磁疗 8 | 9 | 10 | 11 | 开启 12 | 关闭 13 | 14 | 15 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/values/strings_dfu.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | Starting bootloader... 18 | Waiting for bootloader %s... 19 | Uploading part %d/%d... 20 | Aborted 21 | Transmitting components to %s... 22 | Abort 23 | DFU 24 | File Size: 25 | Initializing... 26 | Connecting... 27 | Starting DFU... 28 | Uploading... 29 | Validating... 30 | Disonnecting... 31 | Done 32 | Aborted 33 | Upload failed 34 | Connecting to %s... 35 | Initializing DFU process %s ... 36 | Transmitting application to %s... 37 | Validating application %s 38 | Application has been send successfully. 39 | Disconnecting from %s... 40 | Application upload has been canceled. 41 | DFU process failed. 42 | DFU options 43 | unnamed device 44 | Uploading... 45 | 0% 46 | Application Uploading 47 | Are you sure to cancel upload? 48 | Select device: 49 | No device found 50 | Scan 51 | Cancel 52 | BONDED DEVICES: 53 | AVAILABLE DEVICES: 54 | n/a 55 | Device doesn\'t have BLE support! 56 | No profiles found. 57 | Open 58 | Close 59 | nRF Master Control Panel 60 | 61 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 15 | 16 | 17 | 18 | 19 | 26 | 27 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/main/res/xml/file_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/app/src/test/java/com/timaimee/vpdemo/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.timaimee.vpdemo; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * To work on unit tests, switch the Test Artifact in the Build Variants view. 9 | */ 10 | public class ExampleUnitTest { 11 | @Test 12 | public void addition_isCorrect() throws Exception { 13 | assertEquals(4, 2 + 2); 14 | } 15 | } -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | ext.kotlin_version = '1.3.61' 5 | repositories { 6 | // google() 7 | // jcenter() 8 | // maven { url "https://jitpack.io" } 9 | // maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } 10 | // mavenCentral() 11 | // mavenCentral() 12 | // maven { url 'https://plugins.gradle.org/m2/' } 13 | // maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' } 14 | // maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } 15 | // maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'} 16 | 17 | jcenter() 18 | maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' } 19 | maven { url "https://jitpack.io" } 20 | mavenCentral() 21 | google() 22 | } 23 | dependencies { 24 | //classpath 'com.android.tools.build:gradle:3.0.1' 25 | // classpath 'com.android.tools.build:gradle:4.0.1' 26 | classpath 'com.android.tools.build:gradle:7.1.2' 27 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 28 | classpath 'org.jetbrains.dokka:dokka-gradle-plugin:0.10.1' 29 | // NOTE: Do not place your application dependencies here; they belong 30 | // in the individual module build.gradle files 31 | } 32 | 33 | } 34 | 35 | 36 | allprojects { 37 | repositories { 38 | // google() 39 | // jcenter() 40 | // maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } 41 | // maven { url "https://jitpack.io" } 42 | // mavenCentral() 43 | // mavenCentral() 44 | // maven { url 'https://plugins.gradle.org/m2/' } 45 | // maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' } 46 | // maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } 47 | // maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'} 48 | 49 | jcenter() 50 | maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' } 51 | maven { url "https://jitpack.io" } 52 | mavenCentral() 53 | google() 54 | } 55 | } 56 | 57 | task clean(type: Delete) { 58 | delete rootProject.buildDir 59 | } 60 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true 19 | android.enableD8=true 20 | #android.enableJetifier=true 21 | #android.enableAapt2=false 22 | android.enableD8.desugaring=true 23 | #????androidx 24 | android.useAndroidX=true 25 | #????????????android.support????androidx 26 | android.enableJetifier=true -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/Demo/VpBluetoothSDK/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Feb 27 16:04:55 CST 2019 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | #distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip 7 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip 8 | 9 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | set DIRNAME=%~dp0 12 | if "%DIRNAME%" == "" set DIRNAME=. 13 | set APP_BASE_NAME=%~n0 14 | set APP_HOME=%DIRNAME% 15 | 16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 17 | set DEFAULT_JVM_OPTS= 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windows variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | 53 | :win9xME_args 54 | @rem Slurp the command line arguments. 55 | set CMD_LINE_ARGS= 56 | set _SKIP=2 57 | 58 | :win9xME_args_slurp 59 | if "x%~1" == "x" goto execute 60 | 61 | set CMD_LINE_ARGS=%* 62 | 63 | :execute 64 | @rem Setup the command line 65 | 66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 67 | 68 | @rem Execute Gradle 69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 70 | 71 | :end 72 | @rem End local scope for the variables with windows NT shell 73 | if "%ERRORLEVEL%"=="0" goto mainEnd 74 | 75 | :fail 76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 77 | rem the _cmd.exe /c_ return code! 78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 79 | exit /b 1 80 | 81 | :mainEnd 82 | if "%OS%"=="Windows_NT" endlocal 83 | 84 | :omega 85 | -------------------------------------------------------------------------------- /android_sdk_source/Demo/VpBluetoothSDK/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' -------------------------------------------------------------------------------- /android_sdk_source/apidoc/com/veepoo/protocol/jl/classic/impl/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.veepoo.protocol.jl.classic.impl 8 | 9 | 10 | 11 | 12 | 13 | 14 | com.veepoo.protocol.jl.classic.impl 15 | 16 | 类 17 | 18 | BluetoothBrEdr 19 | BluetoothPair 20 | BluetoothSpp 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /android_sdk_source/apidoc/com/veepoo/protocol/jl/classic/interfaces/listener/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.veepoo.protocol.jl.classic.interfaces.listener 8 | 9 | 10 | 11 | 12 | 13 | 14 | com.veepoo.protocol.jl.classic.interfaces.listener 15 | 16 | 接口 17 | 18 | OnBrEdrListener 19 | OnBtDevicePairListener 20 | OnBtDiscoveryListener 21 | OnBtSppListener 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /android_sdk_source/apidoc/com/veepoo/protocol/jl/classic/interfaces/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.veepoo.protocol.jl.classic.interfaces 8 | 9 | 10 | 11 | 12 | 13 | 14 | com.veepoo.protocol.jl.classic.interfaces 15 | 16 | 接口 17 | 18 | IBluetoothBase 19 | IBluetoothBrEdr 20 | IBluetoothDiscovery 21 | IBluetoothEventCallback 22 | IBluetoothOperation 23 | IBluetoothPair 24 | IBluetoothSpp 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /android_sdk_source/apidoc/com/veepoo/protocol/jl/classic/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.veepoo.protocol.jl.classic 8 | 9 | 10 | 11 | 12 | 13 | 14 | com.veepoo.protocol.jl.classic 15 | 16 | 类 17 | 18 | BluetoothConstant 19 | BluetoothEventCallback 20 | BluetoothOption 21 | BluetoothUtil 22 | ClassicBTManager 23 | ErrorInfo 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /android_sdk_source/apidoc/com/veepoo/protocol/jl/classic/tool/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.veepoo.protocol.jl.classic.tool 8 | 9 | 10 | 11 | 12 | 13 | 14 | com.veepoo.protocol.jl.classic.tool 15 | 16 | 类 17 | 18 | BluetoothDiscovery 19 | BluetoothEventCbManager 20 | BrEdrEventCbManager 21 | BtDiscoveryCbManager 22 | BtPairEventCbManager 23 | CHexConverter 24 | ReceiveSppDataThread 25 | SppEventCbManager 26 | Utils 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /android_sdk_source/apidoc/com/veepoo/protocol/jl/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.veepoo.protocol.jl 8 | 9 | 10 | 11 | 12 | 13 | 14 | com.veepoo.protocol.jl 15 | 16 | 接口 17 | 18 | JLBleConstant 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /android_sdk_source/apidoc/com/veepoo/protocol/jl/send/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.veepoo.protocol.jl.send 8 | 9 | 10 | 11 | 12 | 13 | 14 | com.veepoo.protocol.jl.send 15 | 16 | 接口 17 | 18 | IBleOp 19 | OnThreadStateListener 20 | OnWriteDataCallback 21 | 22 | 类 23 | 24 | SendBleDataThread 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /android_sdk_source/apidoc/com/veepoo/protocol/listener/base/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.veepoo.protocol.listener.base 8 | 9 | 10 | 11 | 12 | 13 | 14 | com.veepoo.protocol.listener.base 15 | 16 | 接口 17 | 18 | IBleSendWriteMsgListener 19 | IBleWriteResponse 20 | ICallBack 21 | IConnectResponse 22 | IHandler 23 | IListener 24 | INotifyResponse 25 | IOperate 26 | ISend 27 | IUpdateSdkResponse 28 | 29 | 类 30 | 31 | IABleConnectStatusListener 32 | IABluetoothStateListener 33 | IBleNotifyResponse 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /android_sdk_source/apidoc/com/veepoo/protocol/listener/oad/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.veepoo.protocol.listener.oad 8 | 9 | 10 | 11 | 12 | 13 | 14 | com.veepoo.protocol.listener.oad 15 | 16 | 接口 17 | 18 | OnDownLoadListener 19 | OnFindOadDeviceListener 20 | OnGetOadVersionListener 21 | OnUpdateCheckListener 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /android_sdk_source/apidoc/com/veepoo/protocol/listener/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.veepoo.protocol.listener 8 | 9 | 10 | 11 | 12 | 13 | 14 | com.veepoo.protocol.listener 15 | 16 | 接口 17 | 18 | IHealthRemindListener 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /android_sdk_source/apidoc/com/veepoo/protocol/model/datas/ecg/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.veepoo.protocol.model.datas.ecg 8 | 9 | 10 | 11 | 12 | 13 | 14 | com.veepoo.protocol.model.datas.ecg 15 | 16 | 类 17 | 18 | FiveMinuteData 19 | HRVFiveMinuteData 20 | Spo2hMinuteData 21 | SportFiveMinuteData 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /android_sdk_source/apidoc/com/veepoo/protocol/model/datas/weather/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.veepoo.protocol.model.datas.weather 8 | 9 | 10 | 11 | 12 | 13 | 14 | com.veepoo.protocol.model.datas.weather 15 | 16 | 类 17 | 18 | WeatherData 19 | WeatherEvery3Hour 20 | WeatherEveryDay 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /android_sdk_source/apidoc/com/veepoo/protocol/model/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.veepoo.protocol.model 8 | 9 | 10 | 11 | 12 | 13 | 14 | com.veepoo.protocol.model 15 | 16 | 类 17 | 18 | G15QRCode 19 | OadFileBean 20 | SingleSleepItem 21 | TUiTheme 22 | 23 | 枚举 24 | 25 | DayState 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /android_sdk_source/apidoc/com/veepoo/protocol/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.veepoo.protocol 8 | 9 | 10 | 11 | 12 | 13 | 14 | com.veepoo.protocol 15 | 16 | 类 17 | 18 | VPOperateAbstract 19 | VPOperateFactory 20 | VPOperateListener 21 | VPOperateManager 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /android_sdk_source/apidoc/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 生成的文档 (无标题) 8 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 您的浏览器已禁用 JavaScript。 71 | 72 | 框架预警 73 | 请使用框架功能查看此文档。如果看到此消息, 则表明您使用的是不支持框架的 Web 客户机。链接到非框架版本。 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /android_sdk_source/apidoc/overview-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 概览列表 8 | 9 | 10 | 11 | 12 | 13 | 14 | 所有类 15 | 16 | 程序包 17 | 18 | com.veepoo.protocol 19 | com.veepoo.protocol.jl 20 | com.veepoo.protocol.jl.classic 21 | com.veepoo.protocol.jl.classic.impl 22 | com.veepoo.protocol.jl.classic.interfaces 23 | com.veepoo.protocol.jl.classic.interfaces.listener 24 | com.veepoo.protocol.jl.classic.tool 25 | com.veepoo.protocol.jl.send 26 | com.veepoo.protocol.listener 27 | com.veepoo.protocol.listener.base 28 | com.veepoo.protocol.listener.data 29 | com.veepoo.protocol.listener.oad 30 | com.veepoo.protocol.model 31 | com.veepoo.protocol.model.datas 32 | com.veepoo.protocol.model.datas.ecg 33 | com.veepoo.protocol.model.datas.weather 34 | com.veepoo.protocol.model.enums 35 | com.veepoo.protocol.model.settings 36 | com.veepoo.protocol.util 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /android_sdk_source/apidoc/package-list: -------------------------------------------------------------------------------- 1 | com.veepoo.protocol 2 | com.veepoo.protocol.jl 3 | com.veepoo.protocol.jl.classic 4 | com.veepoo.protocol.jl.classic.impl 5 | com.veepoo.protocol.jl.classic.interfaces 6 | com.veepoo.protocol.jl.classic.interfaces.listener 7 | com.veepoo.protocol.jl.classic.tool 8 | com.veepoo.protocol.jl.send 9 | com.veepoo.protocol.listener 10 | com.veepoo.protocol.listener.base 11 | com.veepoo.protocol.listener.data 12 | com.veepoo.protocol.listener.oad 13 | com.veepoo.protocol.model 14 | com.veepoo.protocol.model.datas 15 | com.veepoo.protocol.model.datas.ecg 16 | com.veepoo.protocol.model.datas.weather 17 | com.veepoo.protocol.model.enums 18 | com.veepoo.protocol.model.settings 19 | com.veepoo.protocol.util 20 | -------------------------------------------------------------------------------- /android_sdk_source/apidoc/script.js: -------------------------------------------------------------------------------- 1 | function show(type) 2 | { 3 | count = 0; 4 | for (var key in methods) { 5 | var row = document.getElementById(key); 6 | if ((methods[key] & type) != 0) { 7 | row.style.display = ''; 8 | row.className = (count++ % 2) ? rowColor : altColor; 9 | } 10 | else 11 | row.style.display = 'none'; 12 | } 13 | updateTabs(type); 14 | } 15 | 16 | function updateTabs(type) 17 | { 18 | for (var value in tabs) { 19 | var sNode = document.getElementById(tabs[value][0]); 20 | var spanNode = sNode.firstChild; 21 | if (value == type) { 22 | sNode.className = activeTableTab; 23 | spanNode.innerHTML = tabs[value][1]; 24 | } 25 | else { 26 | sNode.className = tableTab; 27 | spanNode.innerHTML = "" + tabs[value][1] + ""; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /android_sdk_source/jar_base/gson-2.2.4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/jar_base/gson-2.2.4.jar -------------------------------------------------------------------------------- /android_sdk_source/jar_base/libble-0.5.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/jar_base/libble-0.5.aar -------------------------------------------------------------------------------- /android_sdk_source/jar_base/libcomx-0.5.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/jar_base/libcomx-0.5.jar -------------------------------------------------------------------------------- /android_sdk_source/jar_base/libdfu-1.5.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/jar_base/libdfu-1.5.aar -------------------------------------------------------------------------------- /android_sdk_source/jar_base/libfastdfu-0.5.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/jar_base/libfastdfu-0.5.aar -------------------------------------------------------------------------------- /android_sdk_source/jar_base/vpbluetooth_1.0.4.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/jar_base/vpbluetooth_1.0.4.jar -------------------------------------------------------------------------------- /android_sdk_source/jar_core/BmpConvert_V1.2.1-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/jar_core/BmpConvert_V1.2.1-release.aar -------------------------------------------------------------------------------- /android_sdk_source/jar_core/JL_Watch_V1.10.0-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/jar_core/JL_Watch_V1.10.0-release.aar -------------------------------------------------------------------------------- /android_sdk_source/jar_core/jl_bt_ota_V1.9.3-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/jar_core/jl_bt_ota_V1.9.3-release.aar -------------------------------------------------------------------------------- /android_sdk_source/jar_core/jl_rcsp_V0.5.2-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/jar_core/jl_rcsp_V0.5.2-release.aar -------------------------------------------------------------------------------- /android_sdk_source/jar_core/vpbluetooth-1.16.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/jar_core/vpbluetooth-1.16.aar -------------------------------------------------------------------------------- /android_sdk_source/jar_core/vpprotocol-2.3.19.15.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/jar_core/vpprotocol-2.3.19.15.aar -------------------------------------------------------------------------------- /android_sdk_source/jniLibs/arm64-v8a/libnative-lib.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/jniLibs/arm64-v8a/libnative-lib.so -------------------------------------------------------------------------------- /android_sdk_source/jniLibs/armeabi-v7a/libnative-lib.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/jniLibs/armeabi-v7a/libnative-lib.so -------------------------------------------------------------------------------- /android_sdk_source/jniLibs/x86/libnative-lib.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/jniLibs/x86/libnative-lib.so -------------------------------------------------------------------------------- /android_sdk_source/jniLibs/x86_64/libnative-lib.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/jniLibs/x86_64/libnative-lib.so -------------------------------------------------------------------------------- /android_sdk_source/readme.md: -------------------------------------------------------------------------------- 1 | # SDK 最新版本 2 | ## [Version:2.1.71.15](https://github.com/HBandSDK/Android_Ble_SDK/blob/master/android_sdk_source/jar_core) 3 | 4 | # 目录说明 5 | 6 | * -apidoc 是javadoc的文档,从index.html进入主页 7 | * -demo 是示例的代码工程 8 | * -jar_core 是使用此工程需要主要的引用包,此文件下会放置迭代的各个版本的jar包 9 | * -jar_base 是使用此工程需要的基础包 10 | * -jniLibs ECG功能需要用到JNI,具体配置参考demo工程 11 | * -sdkdoc 包含了此工程一些必要的说明 12 | ## 注意:当jar_core的版本大于等于2.1.38.15时,需要配置上kotlin编译环境 13 | 项目中的部分代码使用Kotlin编译的,所以需要配置上kotlin环境,不然某些功能会报错Didn't find class "kotlin.jvm.internal.Intrinsics"。 14 | 配置如下 15 | 16 | ### project的bulid.gradle文件 17 | 18 | ```java 19 | 20 | buildscript { 21 | ext.kotlin_version = '1.3.61' 22 | repositories { 23 | google() 24 | jcenter() 25 | mavenCentral() 26 | } 27 | dependencies { 28 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 29 | } 30 | } 31 | allprojects { 32 | repositories { 33 | google() 34 | jcenter() 35 | mavenCentral() 36 | } 37 | 38 | } 39 | ``` 40 | 41 | ### module的bulid.gradle文件 42 | 43 | ```java 44 | 45 | apply plugin: 'kotlin-android' 46 | apply plugin: 'kotlin-android-extensions' 47 | dependencies { 48 | implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" 49 | } 50 | 51 | ``` 52 | 53 | ## 注意:由2.1.56.15及以上的版本,java_core的jar包文件变成了aar文件&&java_base的jar包升级到1.0.4了 54 | 55 | ## 注意:由1.x.x.x升级到2.x.x.x,需要修改以下内容 56 | 57 | 58 | 因SDK前期设计的不合理,为了保证内部的枚举类不被混淆,且保持类名的统一, 59 | 此次更新将在com.veepoo.protocol.operate包下的所有的内部枚举类全部转移到com.veepoo.protocol.model.enums包下。 60 | 如果您使用到以下枚举,那么您将需要修改类名且重新导包 61 | 62 | 63 | | 涉及的功能| 修改前com.veepoo.protocol.operate.*| 修改后com.veepoo.protocol.model.enums.* | 64 | | :------| :------: | :------: | 65 | | 01.闹钟 | AlarmOperater.AOStatus | EAalarmStatus | 66 | | 02.血压模式 | BPModelOprate.BPStatus | EBPStatus | 67 | | 03.血压检测 | BPOperater.BPDetectStatus| EBPDetectStatus | 68 | | 04.拍照 | CameraOperater.COStatus | ECameraStatus | 69 | | 05.倒计时 | CountDownOprate.DCStatus | ECustomStatus | 70 | | 06.疲劳度 | FatigueOperate.FatigueStatus | EFatigueStatus | 71 | | 07.查找设备 | FindDeviceOperater.FDStatus | EFindDeviceStatus | 72 | | 08.心率 | HeartOperater.HeartStatus| EHeartStatus | 73 | | 09.心率异常 | HeartWarningOperate.HWStatus | EHeartWaringStatus | 74 | | 10.久坐 | LongSeatOperater.LSStatus| ELongSeatStatus | 75 | | 11.夜间转腕 | NightTurnWristOperate.NTStatus | ENightTurnWristeStatus | 76 | | 12.血氧检测 | Spo2hDetectOperate.SPO2HStatus | ESPO2HStatus | 77 | | 13.女性 | WomenOperater.OperateStatus | EWomenOprateStatus | 78 | 79 | -------------------------------------------------------------------------------- /android_sdk_source/sdkdoc/veepooSDK_Bug反馈文档.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/sdkdoc/veepooSDK_Bug反馈文档.doc -------------------------------------------------------------------------------- /android_sdk_source/sdkdoc/veepooSDK_Bug反馈文档.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/sdkdoc/veepooSDK_Bug反馈文档.pdf -------------------------------------------------------------------------------- /android_sdk_source/sdkdoc/veepooSDK接入文档.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/sdkdoc/veepooSDK接入文档.doc -------------------------------------------------------------------------------- /android_sdk_source/sdkdoc/veepooSDK接入文档.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/sdkdoc/veepooSDK接入文档.pdf -------------------------------------------------------------------------------- /android_sdk_source/sdkdoc/交互log/睡眠数据.txt: -------------------------------------------------------------------------------- 1 | 06-23 11:31:07.853 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:day=0,packagenumber=0 2 | 06-23 11:31:07.863 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:progress=0.33333334 3 | 06-23 11:31:07.993 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:day=1,packagenumber=5 4 | 06-23 11:31:07.993 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:progress=0.33333334 5 | 06-23 11:31:08.043 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:day=1,packagenumber=4 6 | 06-23 11:31:08.043 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:progress=0.4 7 | 06-23 11:31:08.093 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:day=1,packagenumber=3 8 | 06-23 11:31:08.093 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:progress=0.46666667 9 | 06-23 11:31:08.143 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:day=1,packagenumber=2 10 | 06-23 11:31:08.143 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:progress=0.53333336 11 | 06-23 11:31:08.193 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:day=1,packagenumber=1 12 | 06-23 11:31:08.193 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:progress=0.6 13 | 06-23 11:31:08.233 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:day=1,packagenumber=0 14 | 06-23 11:31:08.233 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:progress=0.6666667 15 | 06-23 11:31:08.433 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:day=2,packagenumber=5 16 | 06-23 11:31:08.433 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:progress=0.6666667 17 | 06-23 11:31:08.483 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:day=2,packagenumber=4 18 | 06-23 11:31:08.483 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:progress=0.73333335 19 | 06-23 11:31:08.533 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:day=2,packagenumber=3 20 | 06-23 11:31:08.533 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:progress=0.8 21 | 06-23 11:31:08.583 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:day=2,packagenumber=2 22 | 06-23 11:31:08.583 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:progress=0.8666667 23 | 06-23 11:31:08.633 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:day=2,packagenumber=1 24 | 06-23 11:31:08.633 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:progress=0.9333334 25 | 06-23 11:31:08.683 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:day=2,packagenumber=0 26 | 06-23 11:31:08.713 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-读取进度:progress=1.0 27 | 28 | 06-23 11:31:08.253 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-返回:SleepData{, date='2017-06-22', cali_flag=0, sleepQulity=2, wakeCount=4, deepSleepTime=85, lowSleepTime=310, allSleepTime=395, sleepLine='0020020002222202200000011011011000001111000000000011111000000000000110000000000', sleepDown=TimeData [2017-06-23-01:10], sleepUp=TimeData [2017-06-23-07:45]} 29 | 06-23 11:31:08.703 13995-13995/com.timaimee.vpdemo I/timaimee-OperaterActivity: ║ 睡眠数据-返回:SleepData{, date='2017-06-21', cali_flag=0, sleepQulity=2, wakeCount=0, deepSleepTime=90, lowSleepTime=180, allSleepTime=270, sleepLine='000000000000000011000000110011110111111000000000000000', sleepDown=TimeData [2017-06-22-01:05], sleepUp=TimeData [2017-06-22-05:35]} 30 | -------------------------------------------------------------------------------- /android_sdk_source/vpsdk_1.2.3.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HBandSDK/Android_Ble_SDK/2a3d0ef26e10723735c00ab2b125145889c40e80/android_sdk_source/vpsdk_1.2.3.apk -------------------------------------------------------------------------------- /sh.exe.stackdump: -------------------------------------------------------------------------------- 1 | Stack trace: 2 | Frame Function Args 3 | 00000010002 0018006021E (00180241C10, 001802340B9, 00000010002, 000FFFFBA20) 4 | 00000010002 00180048859 (00000000002, 00180328FB8, 00000000002, 00180328FB8) 5 | 00000010002 00180048892 (00000000002, 001803292C8, 00000010002, 00000000008) 6 | 00000010002 001800598BC (000FFFFCC72, 000FFFFCC55, 00000000000, 001802343AF) 7 | 000FFFFCCD0 00180059960 (645C655C725C635C, 695C745C6E5C655C, 6D5C2D5C6C5C615C, 675C615C6E5C615C) 8 | 000FFFFCCD0 00180048FE1 (00000000000, 00000000000, 00000000000, 00000000000) 9 | 00000000000 00180047963 (00000000000, 00000000000, 00000000000, 00000000000) 10 | 000FFFFFFF0 00180047A14 (00000000000, 00000000000, 00000000000, 00000000000) 11 | End of stack trace 12 | --------------------------------------------------------------------------------
请使用框架功能查看此文档。如果看到此消息, 则表明您使用的是不支持框架的 Web 客户机。链接到非框架版本。