gitextract_p5rasqxh/ ├── .gitignore ├── README.md ├── app/ │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── com/ │ │ └── bhm/ │ │ └── demo/ │ │ └── ExampleInstrumentedTest.kt │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── com/ │ │ │ └── bhm/ │ │ │ └── demo/ │ │ │ ├── BaseActivity.kt │ │ │ ├── adapter/ │ │ │ │ ├── DetailsExpandAdapter.kt │ │ │ │ ├── DeviceListAdapter.kt │ │ │ │ └── LoggerListAdapter.kt │ │ │ ├── constants/ │ │ │ │ └── Constants.kt │ │ │ ├── entity/ │ │ │ │ ├── CharacteristicNode.kt │ │ │ │ ├── LogEntity.kt │ │ │ │ ├── OperateType.kt │ │ │ │ ├── RefreshBleDevice.kt │ │ │ │ └── ServiceNode.kt │ │ │ ├── ui/ │ │ │ │ ├── DetailOperateActivity.kt │ │ │ │ ├── MainActivity.kt │ │ │ │ └── OptionSettingActivity.kt │ │ │ └── vm/ │ │ │ ├── DetailViewModel.kt │ │ │ └── MainViewModel.kt │ │ └── res/ │ │ ├── drawable/ │ │ │ └── ic_launcher_background.xml │ │ ├── drawable-v24/ │ │ │ └── ic_launcher_foreground.xml │ │ ├── layout/ │ │ │ ├── activity_detail.xml │ │ │ ├── activity_main.xml │ │ │ ├── activity_setting.xml │ │ │ ├── layout_recycler_characteristic.xml │ │ │ ├── layout_recycler_item.xml │ │ │ ├── layout_recycler_log.xml │ │ │ └── layout_recycler_service.xml │ │ ├── values/ │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── themes.xml │ │ ├── values-night/ │ │ │ └── themes.xml │ │ └── xml/ │ │ ├── backup_rules.xml │ │ └── data_extraction_rules.xml │ └── test/ │ └── java/ │ └── com/ │ └── bhm/ │ └── demo/ │ └── ExampleUnitTest.kt ├── ble/ │ ├── .gitignore │ ├── build.gradle │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ └── java/ │ └── com/ │ └── bhm/ │ └── ble/ │ ├── BleManager.kt │ ├── attribute/ │ │ └── BleOptions.kt │ ├── callback/ │ │ ├── BleBaseCallback.kt │ │ ├── BleConnectCallback.kt │ │ ├── BleEventCallback.kt │ │ ├── BleIndicateCallback.kt │ │ ├── BleMtuChangedCallback.kt │ │ ├── BleNotifyCallback.kt │ │ ├── BleReadCallback.kt │ │ ├── BleRssiCallback.kt │ │ ├── BleScanCallback.kt │ │ ├── BleWriteCallback.kt │ │ └── BluetoothCallback.kt │ ├── control/ │ │ ├── BleLruHashMap.kt │ │ ├── BleTask.kt │ │ ├── BleTaskList.kt │ │ └── BleTaskQueue.kt │ ├── data/ │ │ ├── BleConnectFailType.kt │ │ ├── BleConnectLastState.kt │ │ ├── BleDescriptorGetType.kt │ │ ├── BleException.kt │ │ ├── BleScanFailType.kt │ │ ├── BleTaskQueueType.kt │ │ ├── BleWriteData.kt │ │ ├── BleWriteQueueData.kt │ │ └── Constants.kt │ ├── device/ │ │ ├── BleConnectedDevice.kt │ │ ├── BleConnectedDeviceManager.kt │ │ └── BleDevice.kt │ ├── log/ │ │ ├── BleLogEvent.kt │ │ ├── BleLogLevel.kt │ │ ├── BleLogManager.kt │ │ └── BleLogger.kt │ ├── receiver/ │ │ └── BluetoothReceiver.kt │ ├── request/ │ │ ├── BleConnectRequest.kt │ │ ├── BleIndicateRequest.kt │ │ ├── BleMtuRequest.kt │ │ ├── BleNotifyRequest.kt │ │ ├── BleReadRequest.kt │ │ ├── BleRssiRequest.kt │ │ ├── BleScanRequest.kt │ │ ├── BleSetPriorityRequest.kt │ │ ├── BleWriteRequest.kt │ │ └── base/ │ │ ├── BleBaseRequest.kt │ │ ├── BleRequestImp.kt │ │ ├── BleTaskQueueRequest.kt │ │ └── Request.kt │ └── utils/ │ └── BleUtil.kt ├── build.gradle ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── jitpack.yml ├── maven_upload.gradle ├── settings.gradle └── support/ ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src/ └── main/ ├── AndroidManifest.xml ├── java/ │ └── com/ │ └── bhm/ │ └── support/ │ └── sdk/ │ ├── common/ │ │ ├── BaseActivity.kt │ │ ├── BaseApplication.kt │ │ ├── BaseFragment.kt │ │ ├── BaseVBActivity.kt │ │ ├── BaseVBFragment.kt │ │ ├── BaseViewModel.kt │ │ └── DefaultViewPagerAdapter.kt │ ├── constants/ │ │ ├── AppConstants.kt │ │ └── PermissionConstants.kt │ ├── core/ │ │ ├── AppTheme.kt │ │ ├── GlideCircleTransform.kt │ │ ├── GlideRoundTransform.kt │ │ ├── GridSpacingItemDecoration.kt │ │ ├── MyStaggeredGridLayoutManager.kt │ │ └── WeakHandler.kt │ ├── entity/ │ │ └── MessageEvent.kt │ ├── utils/ │ │ ├── ActivityUtil.kt │ │ ├── DateUtil.kt │ │ ├── DisplayUtil.kt │ │ ├── NotificationUtil.kt │ │ ├── SPUtil.kt │ │ └── ViewUtil.kt │ └── widget/ │ └── ChoseView.kt └── res/ └── values/ ├── attrs.xml ├── colors.xml └── ids.xml