From bccabc2cb03cc52f5835554e04c01661cfaa08cb Mon Sep 17 00:00:00 2001 From: Takayuki Hoshi Date: Thu, 5 Mar 2020 11:57:18 +0900 Subject: [PATCH] =?UTF-8?q?Hitoe=E3=83=97=E3=83=A9=E3=82=B0=E3=82=A4?= =?UTF-8?q?=E3=83=B3=E3=81=AE=E7=A7=BB=E5=8B=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 更新内容 * DeviceConnect-OldにHitoeプラグインを移動する。 --- README.md | 2 - .../dConnectDeviceHitoe/.gitignore | 9 - .../dConnectDeviceHitoe/README.md | 23 - .../dConnectDeviceHitoe/app/.gitignore | 2 - .../dConnectDeviceHitoe/app/build.gradle | 67 - .../app/proguard-rules.pro | 17 - .../deviceplugin/hitoe/ApplicationTest.java | 13 - .../app/src/main/AndroidManifest.xml | 68 - .../deviceplugin/hitoe/HitoeApplication.java | 40 - .../hitoe/HitoeDeviceService.java | 235 --- .../hitoe/HitoeDeviceServiceProvider.java | 25 - .../deviceplugin/hitoe/HitoeService.java | 58 - .../activity/HitoeAddDeviceActivity.java | 249 --- .../activity/HitoeDeviceControlActivity.java | 230 --- .../activity/HitoeDeviceListActivity.java | 206 -- .../hitoe/activity/HitoeListActivity.java | 524 ----- .../hitoe/activity/package-info.java | 12 - .../hitoe/data/AccelerationData.java | 223 --- .../deviceplugin/hitoe/data/HeartData.java | 242 --- .../hitoe/data/HeartRateData.java | 114 -- .../hitoe/data/HitoeConstants.java | 171 -- .../hitoe/data/HitoeDBHelper.java | 198 -- .../deviceplugin/hitoe/data/HitoeDevice.java | 415 ---- .../deviceplugin/hitoe/data/HitoeManager.java | 1760 ----------------- .../hitoe/data/PoseEstimationData.java | 97 - .../hitoe/data/StressEstimationData.java | 93 - .../hitoe/data/TargetDeviceData.java | 270 --- .../deviceplugin/hitoe/data/TempExData.java | 65 - .../hitoe/data/WalkStateData.java | 175 -- .../deviceplugin/hitoe/data/package-info.java | 12 - .../fragment/HitoeProfileBatteryFragment.java | 108 - ...HitoeProfileDeviceOrientationFragment.java | 283 --- .../fragment/HitoeProfileECGFragment.java | 265 --- .../fragment/HitoeProfileHealthFragment.java | 105 - .../fragment/HitoeProfileListFragment.java | 85 - .../HitoeProfilePoseEstimationFragment.java | 124 -- .../HitoeProfileStressEstimationFragment.java | 140 -- .../HitoeProfileWalkStateFragment.java | 126 -- .../dialog/DefaultDialogFragment.java | 167 -- .../fragment/dialog/ErrorDialogFragment.java | 102 - .../dialog/PinCodeDialogFragment.java | 105 - .../dialog/ProgressDialogFragment.java | 68 - .../hitoe/fragment/dialog/package-info.java | 12 - .../hitoe/fragment/package-info.java | 12 - .../deviceplugin/hitoe/package-info.java | 12 - .../hitoe/profile/HitoeBatteryProfile.java | 107 - .../HitoeDeviceOrientationProfile.java | 234 --- .../hitoe/profile/HitoeECGProfile.java | 222 --- .../hitoe/profile/HitoeHealthProfile.java | 339 ---- .../profile/HitoePoseEstimationProfile.java | 223 --- .../profile/HitoeServiceDiscoveryProfile.java | 105 - .../profile/HitoeStressEstimationProfile.java | 227 --- .../hitoe/profile/HitoeSystemProfile.java | 25 - .../hitoe/profile/HitoeWalkStateProfile.java | 223 --- .../hitoe/profile/package-info.java | 12 - .../deviceplugin/hitoe/util/BleUtils.java | 128 -- .../hitoe/util/HitoeScheduler.java | 99 - .../hitoe/util/MDERFloatConvreterUtils.java | 73 - .../hitoe/util/RawDataParseUtils.java | 309 --- .../deviceplugin/hitoe/util/UserSettings.java | 75 - .../deviceplugin/hitoe/util/package-info.java | 12 - .../android/event/EventDispatcher.java | 25 - .../android/event/EventDispatcherFactory.java | 38 - .../android/event/EventDispatcherManager.java | 44 - .../event/ImmediateEventDispatcher.java | 27 - .../event/IntervalEventDispatcher.java | 73 - .../android/profile/ECGProfile.java | 130 -- .../android/profile/HealthProfile.java | 274 --- .../profile/PoseEstimationProfile.java | 86 - .../profile/StressEstimationProfile.java | 87 - .../android/profile/WalkStateProfile.java | 121 -- .../profile/ECGProfileConstants.java | 62 - .../profile/HealthProfileConstants.java | 147 -- .../PoseEstimationProfileConstants.java | 85 - .../StressEstimationProfileConstants.java | 41 - .../profile/WalkStateProfileConstants.java | 90 - .../res/drawable/bg_orientation_graph.png | Bin 429 -> 0 bytes .../app/src/main/res/drawable/bg_stress.xml | 9 - .../app/src/main/res/drawable/button_blue.xml | 40 - .../app/src/main/res/drawable/button_red.xml | 40 - .../src/main/res/drawable/hitoe_explain.png | Bin 13672 -> 0 bytes .../src/main/res/drawable/hitoe_input_pin.png | Bin 16611 -> 0 bytes .../app/src/main/res/drawable/hitoe_set.png | Bin 12596 -> 0 bytes .../src/main/res/drawable/mark_battery01.png | Bin 2931 -> 0 bytes .../src/main/res/drawable/mark_battery02.png | Bin 2904 -> 0 bytes .../src/main/res/drawable/mark_battery03.png | Bin 2884 -> 0 bytes .../src/main/res/drawable/mark_battery04.png | Bin 2841 -> 0 bytes .../src/main/res/drawable/mark_battery05.png | Bin 2563 -> 0 bytes .../src/main/res/drawable/mark_heartrate.png | Bin 10177 -> 0 bytes .../src/main/res/drawable/pose_backward.png | Bin 5247 -> 0 bytes .../src/main/res/drawable/pose_default.png | Bin 1637 -> 0 bytes .../src/main/res/drawable/pose_facedown.png | Bin 8452 -> 0 bytes .../src/main/res/drawable/pose_faceleft.png | Bin 6116 -> 0 bytes .../src/main/res/drawable/pose_faceright.png | Bin 6162 -> 0 bytes .../app/src/main/res/drawable/pose_faceup.png | Bin 8321 -> 0 bytes .../src/main/res/drawable/pose_forward.png | Bin 5377 -> 0 bytes .../src/main/res/drawable/pose_leftside.png | Bin 6669 -> 0 bytes .../src/main/res/drawable/pose_rightside.png | Bin 6831 -> 0 bytes .../src/main/res/drawable/pose_running.png | Bin 5315 -> 0 bytes .../src/main/res/drawable/pose_standing.png | Bin 3118 -> 0 bytes .../src/main/res/drawable/pose_walking.png | Bin 5127 -> 0 bytes .../main/res/layout/activity_control_main.xml | 7 - .../res/layout/activity_hitoe_device_list.xml | 38 - .../src/main/res/layout/dialog_hitoe_on.xml | 51 - .../src/main/res/layout/dialog_hitoe_pin.xml | 48 - .../src/main/res/layout/dialog_hitoe_set.xml | 36 - .../src/main/res/layout/dialog_progress.xml | 45 - .../layout/fragment_battery_instructions.xml | 70 - .../layout/fragment_bluetooth_settings.xml | 86 - .../main/res/layout/fragment_device_list.xml | 67 - .../res/layout/fragment_ecg_instructions.xml | 70 - .../fragment_heartrate_instructions.xml | 79 - .../layout/fragment_hitoe_instructions.xml | 47 - .../fragment_orientation_instructions.xml | 70 - .../res/layout/fragment_pose_instructions.xml | 71 - .../layout/fragment_stress_instructions.xml | 81 - .../src/main/res/layout/fragment_summary.xml | 44 - .../res/layout/fragment_walk_instructions.xml | 188 -- .../src/main/res/layout/item_hitoe_device.xml | 47 - .../src/main/res/layout/item_hitoe_error.xml | 26 - .../main/res/layout/item_hitoe_searching.xml | 21 - .../main/res/mipmap-hdpi/dconnect_icon.png | Bin 6896 -> 0 bytes .../main/res/mipmap-mdpi/dconnect_icon.png | Bin 4413 -> 0 bytes .../main/res/mipmap-xhdpi/dconnect_icon.png | Bin 8995 -> 0 bytes .../main/res/mipmap-xxhdpi/dconnect_icon.png | Bin 14173 -> 0 bytes .../main/res/mipmap-xxxhdpi/dconnect_icon.png | Bin 14173 -> 0 bytes .../app/src/main/res/values-w820dp/dimens.xml | 6 - .../app/src/main/res/values/colors.xml | 7 - .../app/src/main/res/values/dimens.xml | 10 - .../app/src/main/res/values/strings.xml | 84 - .../app/src/main/res/values/styles.xml | 14 - ...viceconnect_android_deviceplugin_hitoe.xml | 83 - .../deviceplugin/hitoe/ExampleUnitTest.java | 15 - .../dConnectDeviceHitoe/build.gradle | 25 - .../dConnectDeviceHitoe/gradle.properties | 22 - .../gradle/wrapper/gradle-wrapper.jar | Bin 53636 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - .../dConnectDeviceHitoe/gradlew | 160 -- .../dConnectDeviceHitoe/gradlew.bat | 90 - .../dConnectDeviceHitoe/settings.gradle | 1 - readme.en.md | 2 - 141 files changed, 12878 deletions(-) delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/.gitignore delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/README.md delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/.gitignore delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/proguard-rules.pro delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/androidTest/java/org/deviceconnect/android/deviceplugin/hitoe/ApplicationTest.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/AndroidManifest.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/HitoeApplication.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/HitoeDeviceService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/HitoeDeviceServiceProvider.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/HitoeService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/activity/HitoeAddDeviceActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/activity/HitoeDeviceControlActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/activity/HitoeDeviceListActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/activity/HitoeListActivity.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/activity/package-info.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/AccelerationData.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HeartData.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HeartRateData.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HitoeConstants.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HitoeDBHelper.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HitoeDevice.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HitoeManager.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/PoseEstimationData.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/StressEstimationData.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/TargetDeviceData.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/TempExData.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/WalkStateData.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/package-info.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileBatteryFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileDeviceOrientationFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileECGFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileHealthFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileListFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfilePoseEstimationFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileStressEstimationFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileWalkStateFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/dialog/DefaultDialogFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/dialog/ErrorDialogFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/dialog/PinCodeDialogFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/dialog/ProgressDialogFragment.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/dialog/package-info.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/package-info.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/package-info.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeBatteryProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeDeviceOrientationProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeECGProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeHealthProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoePoseEstimationProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeServiceDiscoveryProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeStressEstimationProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeSystemProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeWalkStateProfile.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/package-info.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/BleUtils.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/HitoeScheduler.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/MDERFloatConvreterUtils.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/RawDataParseUtils.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/UserSettings.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/package-info.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/event/EventDispatcher.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/event/EventDispatcherFactory.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/event/EventDispatcherManager.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/event/ImmediateEventDispatcher.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/event/IntervalEventDispatcher.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/profile/ECGProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/profile/HealthProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/profile/PoseEstimationProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/profile/StressEstimationProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/profile/WalkStateProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/profile/ECGProfileConstants.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/profile/HealthProfileConstants.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/profile/PoseEstimationProfileConstants.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/profile/StressEstimationProfileConstants.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/profile/WalkStateProfileConstants.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/bg_orientation_graph.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/bg_stress.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/button_blue.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/button_red.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/hitoe_explain.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/hitoe_input_pin.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/hitoe_set.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/mark_battery01.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/mark_battery02.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/mark_battery03.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/mark_battery04.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/mark_battery05.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/mark_heartrate.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_backward.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_default.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_facedown.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_faceleft.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_faceright.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_faceup.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_forward.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_leftside.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_rightside.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_running.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_standing.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_walking.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/layout/activity_control_main.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/layout/activity_hitoe_device_list.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/layout/dialog_hitoe_on.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/layout/dialog_hitoe_pin.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/layout/dialog_hitoe_set.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/layout/dialog_progress.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/layout/fragment_battery_instructions.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/layout/fragment_bluetooth_settings.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/layout/fragment_device_list.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/layout/fragment_ecg_instructions.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/layout/fragment_heartrate_instructions.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/layout/fragment_hitoe_instructions.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/layout/fragment_orientation_instructions.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/layout/fragment_pose_instructions.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/layout/fragment_stress_instructions.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/layout/fragment_summary.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/layout/fragment_walk_instructions.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/layout/item_hitoe_device.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/layout/item_hitoe_error.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/layout/item_hitoe_searching.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/mipmap-hdpi/dconnect_icon.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/mipmap-mdpi/dconnect_icon.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/mipmap-xhdpi/dconnect_icon.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/mipmap-xxhdpi/dconnect_icon.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/mipmap-xxxhdpi/dconnect_icon.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/values-w820dp/dimens.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/values/colors.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/values/dimens.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/values/strings.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/values/styles.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/xml/org_deviceconnect_android_deviceplugin_hitoe.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/app/src/test/java/org/deviceconnect/android/deviceplugin/hitoe/ExampleUnitTest.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/gradle.properties delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/gradle/wrapper/gradle-wrapper.jar delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/gradle/wrapper/gradle-wrapper.properties delete mode 100755 dConnectDevicePlugin/dConnectDeviceHitoe/gradlew delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/gradlew.bat delete mode 100644 dConnectDevicePlugin/dConnectDeviceHitoe/settings.gradle diff --git a/README.md b/README.md index 705e47277c..2ae3aa0b89 100755 --- a/README.md +++ b/README.md @@ -133,7 +133,6 @@ curl -X GET \ |[dConnectDeviceChromeCast](dConnectDevicePlugin/dConnectDeviceChromeCast)|Chromecastのデバイスプラグイン。 | |[dConnectDeviceFaBo](dConnectDevicePlugin/dConnectDeviceFaBo)|FaBoのデバイスプラグイン。| |[dConnectDeviceHeartRate](dConnectDevicePlugin/dConnectDeviceHeartRate)|Mio AlphaなどのHeartRateのデバイスプラグイン。| -|[dConnectDeviceHitoe](dConnectDevicePlugin/dConnectDeviceHitoe)|Hitoeのデバイスプラグイン。| |[dConnectDeviceHOGP](dConnectDevicePlugin/dConnectDeviceHOGP)|HOGPのデバイスプラグイン。| |[dConnectDeviceHost](dConnectDevicePlugin/dConnectDeviceHost)|Androidのデバイスプラグイン。| |[dConnectDeviceHue](dConnectDevicePlugin/dConnectDeviceHue)|Hueのデバイスプラグイン。| @@ -213,7 +212,6 @@ Device Connect Managerや各デバイスプラグインを開発したい人は * [ChromeCast](https://github.com/DeviceConnect/DeviceConnect-Android/wiki/ChromeCast-Build) * [FaBo](https://github.com/DeviceConnect/DeviceConnect-Android/wiki/FaBo-Build) * [HeartRate](https://github.com/DeviceConnect/DeviceConnect-Android/wiki/HeartRateDevice-Build) -* [Hitoe](https://github.com/DeviceConnect/DeviceConnect-Android/wiki/Hitoe-Build) * [HOGP](https://github.com/DeviceConnect/DeviceConnect-Android/wiki/HOGP-Build) * [Host](https://github.com/DeviceConnect/DeviceConnect-Android/wiki/Host-Build) * [Hue](https://github.com/DeviceConnect/DeviceConnect-Android/wiki/Hue-Build) diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/.gitignore b/dConnectDevicePlugin/dConnectDeviceHitoe/.gitignore deleted file mode 100644 index 9b9038d6fe..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -*.iml -.gradle -/local.properties -/.idea/workspace.xml -/.idea/libraries -.DS_Store -/build -/captures -/libs \ No newline at end of file diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/README.md b/dConnectDevicePlugin/dConnectDeviceHitoe/README.md deleted file mode 100644 index 6b2d39616b..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Hitoeプラグイン - -このHitoeプラグインでは、hitoeトランスミッターから心拍数や心電図などの値を取得するための機能を提供します。 - -## 開発環境 -Android Studio 2.2.1以上 - -## ビルドマニュアル -- [Hitoeビルドマニュアル](https://github.com/DeviceConnect/DeviceConnect-Android/wiki/Hitoe-Build) - -## サポートするプロファイル - -* battery -* deviceOrientation -* ecg -* health -* poseEstimation -* stressEstimation -* walkState - -## 関連 - -* [Hitoe](https://www.nttdocomo.co.jp/service/developer/smart_phone/device/hitoe/) diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/.gitignore b/dConnectDevicePlugin/dConnectDeviceHitoe/app/.gitignore deleted file mode 100644 index c23e5a2d89..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/build -/libs \ No newline at end of file diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/build.gradle b/dConnectDevicePlugin/dConnectDeviceHitoe/app/build.gradle deleted file mode 100644 index 0a9cf93be6..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/build.gradle +++ /dev/null @@ -1,67 +0,0 @@ -apply plugin: 'com.android.application' - -android { - compileSdkVersion 29 - - def getVersionName = { -> - def version - if (System.getProperty('os.name').toLowerCase().contains('windows')) { - version = ["cmd", "/c", "git describe --tags --long"].execute().in.text.trim() - } else { - version = ["sh", "-c", "git describe --tags --long"].execute().in.text.trim() - } - version = version.empty ? "2.1.0" : version - return "${version}" - } - - defaultConfig { - applicationId "org.deviceconnect.android.deviceplugin.hitoe" - minSdkVersion 21 - targetSdkVersion 29 - versionCode 1 - versionName getVersionName() - } - - signingConfigs { - releaseConfig { - storeFile=file(project.properties.storeFile) - storePassword=project.properties.storePassword - keyAlias=project.properties.keyAlias - keyPassword=project.properties.keyPassword - } - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - signingConfig signingConfigs.releaseConfig - } - } - - packagingOptions { - exclude 'LICENSE.txt' - exclude 'META-INF/DEPENDENCIES' - exclude 'META-INF/LICENSE' - exclude 'META-INF/NOTICE' - } - tasks.withType(JavaCompile) { - options.encoding = 'UTF-8' - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - -} - -repositories { - maven { url 'https://raw.githubusercontent.com/DeviceConnect/DeviceConnect-Android/master/dConnectSDK/dConnectSDKForAndroid/repository/' } - maven { url 'https://raw.githubusercontent.com/DeviceConnect/DeviceConnect-Android/master/dConnectDevicePlugin/dConnectDevicePluginSDK/repository/' } - maven { url 'file://' + rootDir + '/../../dConnectSDK/dConnectSDKForAndroid/repository/' } - maven { url 'file://' + rootDir + '/../../dConnectDevicePlugin/dConnectDevicePluginSDK/repository/' }} - -dependencies { - implementation fileTree(include: '*.jar', dir: 'libs') - implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.8.3' -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/proguard-rules.pro b/dConnectDevicePlugin/dConnectDeviceHitoe/app/proguard-rules.pro deleted file mode 100644 index 06c213e006..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/proguard-rules.pro +++ /dev/null @@ -1,17 +0,0 @@ -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in /Applications/android/sdk/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the proguardFiles -# directive in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# Add any project specific keep options here: - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/androidTest/java/org/deviceconnect/android/deviceplugin/hitoe/ApplicationTest.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/androidTest/java/org/deviceconnect/android/deviceplugin/hitoe/ApplicationTest.java deleted file mode 100644 index e8ce785469..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/androidTest/java/org/deviceconnect/android/deviceplugin/hitoe/ApplicationTest.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.deviceconnect.android.deviceplugin.hitoe; - -import android.app.Application; -import android.test.ApplicationTestCase; - -/** - * Testing Fundamentals - */ -public class ApplicationTest extends ApplicationTestCase { - public ApplicationTest() { - super(Application.class); - } -} \ No newline at end of file diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/AndroidManifest.xml b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/AndroidManifest.xml deleted file mode 100644 index a57a05c62c..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/HitoeApplication.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/HitoeApplication.java deleted file mode 100644 index 8fc7d6ba1c..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/HitoeApplication.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - HitoeApplication - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe; - -import android.app.Application; - -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; - -/** - * Implementation of Application. - * @author NTT DOCOMO, INC. - */ -public class HitoeApplication extends Application { - /** - * Instance of HitoeManager. - */ - private HitoeManager mMgr; - - /** - * Initialize the HitoeApplication. - */ - public void initialize() { - if (mMgr == null) { - mMgr = new HitoeManager(getApplicationContext()); - } - } - - /** - * Gets a instance of HitoeManager. - * @return HitoeManager - */ - public HitoeManager getHitoeManager() { - return mMgr; - } - -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/HitoeDeviceService.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/HitoeDeviceService.java deleted file mode 100644 index 13f3a73454..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/HitoeDeviceService.java +++ /dev/null @@ -1,235 +0,0 @@ -/* - HitoeDeviceService - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe; - -import android.bluetooth.BluetoothAdapter; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.os.Handler; -import android.util.Log; - -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeDevice; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; -import org.deviceconnect.android.deviceplugin.hitoe.profile.HitoeServiceDiscoveryProfile; -import org.deviceconnect.android.deviceplugin.hitoe.profile.HitoeSystemProfile; -import org.deviceconnect.android.event.EventManager; -import org.deviceconnect.android.event.cache.MemoryCacheController; -import org.deviceconnect.android.message.DConnectMessageService; -import org.deviceconnect.android.profile.SystemProfile; -import org.deviceconnect.android.service.DConnectService; - -import java.util.List; - -/** - * This service provide Hitoe Profile. - * @author NTT DOCOMO, INC. - */ -public class HitoeDeviceService extends DConnectMessageService { - /** - * Tag. - */ - private final String TAG = "HitoeDeviceService"; - /** - * Instance of handler. - */ - private final Handler mHandler = new Handler(); - - /** - * Received a event that Bluetooth has been changed. - */ - private final BroadcastReceiver mSensorReceiver = new BroadcastReceiver() { - @Override - public void onReceive(final Context context, final Intent intent) { - String action = intent.getAction(); - if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) { - int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1); - if (state == BluetoothAdapter.STATE_ON) { - getManager().start(); - } else if (state == BluetoothAdapter.STATE_OFF) { - getManager().stop(); - } - } - } - }; - /** - * Connected Hitoe's info listener. - */ - private final HitoeManager.OnHitoeConnectionListener mOnHitoeConnectionListener - = new HitoeManager.OnHitoeConnectionListener() { - @Override - public void onConnected(final HitoeDevice device) { - DConnectService service = new HitoeService(getManager(), device); - service.setOnline(true); - getServiceProvider().addService(service); - } - - @Override - public void onConnectFailed(final HitoeDevice device) { - if (device == null) { - return; - } - DConnectService service = getServiceProvider().getService(device.getId()); - if (service != null) { - service.setOnline(false); - } - } - - @Override - public void onDiscovery(final List devices) { - for (HitoeDevice device: devices) { - if (device.getPinCode() != null) { - DConnectService service = new HitoeService(getManager(), device); - getServiceProvider().addService(service); - } - } - } - - @Override - public void onDisconnected(final int res, final HitoeDevice device) { - DConnectService service = getServiceProvider().getService(device.getId()); - if (service != null) { - service.setOnline(false); - } - } - - @Override - public void onDeleted(final HitoeDevice device) { - DConnectService service = getServiceProvider().getService(device.getId()); - if (service != null) { - getServiceProvider().removeService(service); - } - } - - }; - - @Override - public void onCreate() { - super.onCreate(); - HitoeApplication app = (HitoeApplication) getApplication(); - app.initialize(); - EventManager.INSTANCE.setController(new MemoryCacheController()); - getManager().addHitoeConnectionListener(mOnHitoeConnectionListener); - registerBluetoothFilter(); - addProfile(new HitoeServiceDiscoveryProfile(getServiceProvider())); - HitoeManager mgr = getManager(); - if (mgr != null) { - List devices = mgr.getRegisterDevices(); - for (HitoeDevice device : devices) { - if (device.getPinCode() != null) { - getServiceProvider().addService(new HitoeService(mgr, device)); - } - } - } - } - - @Override - public void onDestroy() { - super.onDestroy(); - unregisterBluetoothFilter(); - getManager().stop(); - - } - - @Override - protected SystemProfile getSystemProfile() { - return new HitoeSystemProfile(); - } - - @Override - protected void onManagerUninstalled() { - if (BuildConfig.DEBUG) { - Log.d(TAG, "onManagerUninstalled"); - } - getManager().stop(); - EventManager.INSTANCE.removeAll(); - removeAllServices(); - - } - - @Override - protected void onManagerTerminated() { - if (BuildConfig.DEBUG) { - Log.d(TAG, "onManagerTerminated"); - } - EventManager.INSTANCE.removeAll(); - removeAllServices(); - } - - @Override - protected void onManagerEventTransmitDisconnected(final String sessionKey) { - if (BuildConfig.DEBUG) { - Log.d(TAG, "onManagerEventTransmitDisconnected: " + sessionKey); - } - - if (sessionKey != null) { - EventManager.INSTANCE.removeEvents(sessionKey); - } else { - EventManager.INSTANCE.removeAll(); - } - } - - @Override - protected void onDevicePluginReset() { - if (BuildConfig.DEBUG) { - Log.d(TAG, "onDevicePluginReset"); - } - resetService(); - } - /** - * Register a BroadcastReceiver of Bluetooth event. - */ - private void registerBluetoothFilter() { - IntentFilter filter = new IntentFilter(); - filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); - registerReceiver(mSensorReceiver, filter, null, mHandler); - } - /** - * Unregister a previously registered BroadcastReceiver. - */ - private void unregisterBluetoothFilter() { - unregisterReceiver(mSensorReceiver); - } - - /** - * Gets a instance of HeartRateManager. - * - * @return HeartRateManager - */ - private HitoeManager getManager() { - HitoeApplication app = (HitoeApplication) getApplication(); - return app.getHitoeManager(); - } - - /** - * Remove All service. - */ - private void removeAllServices() { - List services = getServiceProvider().getServiceList(); - for (DConnectService service : services) { - getServiceProvider().removeService(service); - } - } - - /** - * Reset service. - */ - private void resetService() { - removeAllServices(); - HitoeManager mgr = getManager(); - if (mgr != null) { - List devices = mgr.getRegisterDevices(); - for (HitoeDevice device : devices) { - if (device.getPinCode() != null) { - getServiceProvider().addService(new HitoeService(mgr, device)); - } - } - } - } - -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/HitoeDeviceServiceProvider.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/HitoeDeviceServiceProvider.java deleted file mode 100644 index 88dc8f10e4..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/HitoeDeviceServiceProvider.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - HitoeDeviceServiceProvider - Copyright (c) 2014 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe; - -import android.app.Service; - -import org.deviceconnect.android.message.DConnectMessageServiceProvider; - -/** - * Hitoe Device Plug-in. - * @param - * @author NTT DOCOMO, INC. - */ -public class HitoeDeviceServiceProvider extends DConnectMessageServiceProvider { - @SuppressWarnings("unchecked") - @Override - protected Class getServiceClass() { - Class clazz = HitoeDeviceService.class; - return (Class) clazz; - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/HitoeService.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/HitoeService.java deleted file mode 100644 index 63251335ad..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/HitoeService.java +++ /dev/null @@ -1,58 +0,0 @@ - -/* - HitoeService - Copyright (c) 2015 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe; - -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeDevice; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; -import org.deviceconnect.android.deviceplugin.hitoe.profile.HitoeBatteryProfile; -import org.deviceconnect.android.deviceplugin.hitoe.profile.HitoeDeviceOrientationProfile; -import org.deviceconnect.android.deviceplugin.hitoe.profile.HitoeECGProfile; -import org.deviceconnect.android.deviceplugin.hitoe.profile.HitoeHealthProfile; -import org.deviceconnect.android.deviceplugin.hitoe.profile.HitoePoseEstimationProfile; -import org.deviceconnect.android.deviceplugin.hitoe.profile.HitoeStressEstimationProfile; -import org.deviceconnect.android.deviceplugin.hitoe.profile.HitoeWalkStateProfile; -import org.deviceconnect.android.service.DConnectService; - -/** - * Implement Hitoe's information. - * @author NTT DOCOMO, INC. - */ -public class HitoeService extends DConnectService { - /** - * コンストラクタ. - * - * @param id サービスID - */ - private final HitoeDevice mEntity; - - /** - * Construcotr. - * @param manager HitoeManager - * @param entity HitoeDevice - */ - public HitoeService(final HitoeManager manager, final HitoeDevice entity) { - super(entity.getId()); - setName(entity.getName()); - setNetworkType(NetworkType.BLE); - setConfig(""); - setOnline(entity.isRegisterFlag()); - addProfile(new HitoeHealthProfile(manager)); - addProfile(new HitoeDeviceOrientationProfile(manager)); - addProfile(new HitoeBatteryProfile()); - addProfile(new HitoeECGProfile(manager)); - addProfile(new HitoeStressEstimationProfile(manager)); - addProfile(new HitoePoseEstimationProfile(manager)); - addProfile(new HitoeWalkStateProfile(manager)); - mEntity = entity; - } - @Override - public boolean isOnline() { - return mEntity.isRegisterFlag(); - } - -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/activity/HitoeAddDeviceActivity.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/activity/HitoeAddDeviceActivity.java deleted file mode 100644 index 470e78ee56..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/activity/HitoeAddDeviceActivity.java +++ /dev/null @@ -1,249 +0,0 @@ -/* - HitoeAddDeviceActivity - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.activity; - -import android.bluetooth.BluetoothAdapter; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.res.Resources; -import android.os.Build; -import android.os.Bundle; -import android.os.Handler; -import android.view.View; -import android.widget.AdapterView; -import android.widget.Button; -import android.widget.TextView; - -import org.deviceconnect.android.deviceplugin.hitoe.R; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeConstants; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeDevice; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; -import org.deviceconnect.android.deviceplugin.hitoe.fragment.dialog.DefaultDialogFragment; -import org.deviceconnect.android.deviceplugin.hitoe.fragment.dialog.PinCodeDialogFragment; -import org.deviceconnect.android.deviceplugin.hitoe.util.BleUtils; -import org.deviceconnect.android.deviceplugin.hitoe.util.HitoeScheduler; - -import java.util.List; - -/** - * This activity is Add Device screen. - * @author NTT DOCOMO, INC. - */ -public class HitoeAddDeviceActivity extends HitoeListActivity implements HitoeManager.OnHitoeConnectionListener, - AdapterView.OnItemClickListener, - HitoeScheduler.OnRegularNotify { - - /** - * Periodic processing object. - */ - private HitoeScheduler mScheduler; - /** - * Received a event that Bluetooth has been changed. - */ - private final BroadcastReceiver mSensorReceiver = new BroadcastReceiver() { - @Override - public void onReceive(final Context context, final Intent intent) { - String action = intent.getAction(); - if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) { - int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1); - if (state == BluetoothAdapter.STATE_ON) { - addFooterView(); - getManager().addHitoeConnectionListener(HitoeAddDeviceActivity.this); - mScheduler.scanHitoeDevice(true); - } else if (state == BluetoothAdapter.STATE_OFF) { - addFooterView(); - getManager().addHitoeConnectionListener(null); - mScheduler.scanHitoeDevice(false); - } - } - } - }; - - - @Override - protected void onCreate(final Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } - - - @Override - public void onResume() { - super.onResume(); - mEnableConnectedBtn = false; - mDeviceAdapter.clear(); - mDeviceAdapter.notifyDataSetChanged(); - mListView.setOnItemClickListener(this); - mScheduler = new HitoeScheduler(this, -1, -1); - DefaultDialogFragment.showHitoeONStateDialog(this); - registerBluetoothFilter(); - getManager().addHitoeConnectionListener(this); - - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - mScheduler.scanHitoeDevice(true); - } else { - if (BleUtils.isBLEPermission(this)) { - mScheduler.scanHitoeDevice(true); - } - } - } - - @Override - public void onPause() { - super.onPause(); - getManager().removeHitoeConnectionListener(this); - mScheduler.scanHitoeDevice(false); - dismissProgressDialog(); - dismissErrorDialog(); - unregisterBluetoothFilter(); - } - - @Override - protected void setUI() { - TextView title = (TextView) findViewById(R.id.view_title); - title.setText(R.string.add_device_view); - Button btn = (Button) findViewById(R.id.btn_add_open); - btn.setText(R.string.action_search); - btn.setOnClickListener((view) -> { - getManager().addHitoeConnectionListener(HitoeAddDeviceActivity.this); - getManager().discoveryHitoeDevices(); - }); - } - - - /** - * Register a BroadcastReceiver of Bluetooth event. - */ - private void registerBluetoothFilter() { - IntentFilter filter = new IntentFilter(); - filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); - registerReceiver(mSensorReceiver, filter, null, mHandler); - } - - /** - * Unregister a previously registered BroadcastReceiver. - */ - private void unregisterBluetoothFilter() { - unregisterReceiver(mSensorReceiver); - } - - - - @Override - public void onConnected(final HitoeDevice device) { - - runOnUiThread(() -> { - if (mCheckDialog) { - DefaultDialogFragment.showHitoeSetShirtDialog(HitoeAddDeviceActivity.this); - } - dismissProgressDialog(); - mDeviceAdapter.remove(device); - mDeviceAdapter.notifyDataSetChanged(); - }); - } - - @Override - public void onConnectFailed(final HitoeDevice device) { - runOnUiThread(() -> { - dismissProgressDialog(); - if (device == null) { - if (mConnectingDevice != null) { - HitoeDevice container = findDeviceContainerByAddress(mConnectingDevice.getId()); - if (container != null) { - container.setPinCode(null); - mDeviceAdapter.notifyDataSetChanged(); - } - Resources res = getResources(); - showErrorDialog(res.getString(R.string.hitoe_setting_dialog_error_message03)); - } - } else { - showErrorDialogNotConnect(device.getName()); - } - }); - } - - @Override - public void onDiscovery(final List devices) { - if (mDeviceAdapter == null) { - return; - } - runOnUiThread(() -> { - mDeviceAdapter.clear(); - for (HitoeDevice device : devices) { - if (device.getPinCode() == null) { - mDeviceAdapter.add(device); - } - } - mDeviceAdapter.notifyDataSetChanged(); - }); - } - - @Override - public void onDisconnected(final int res, final HitoeDevice device) { - } - - @Override - public void onDeleted(final HitoeDevice device) { - - } - - @Override - public void onItemClick(final AdapterView adapterView, final View view, - final int i, final long l) { - final HitoeDevice hitoe = (HitoeDevice) adapterView.getItemAtPosition(i); - if (hitoe == null) { - return; - } - mConnectingDevice = hitoe; - if (hitoe.getPinCode() == null) { - final Resources res = getResources(); - PinCodeDialogFragment pinDialog = PinCodeDialogFragment.newInstance(); - pinDialog.show(getSupportFragmentManager(), "pin_dialog"); - pinDialog.setOnPinCodeListener((pin) -> { - if (pin.isEmpty()) { - showErrorDialog(res.getString(R.string.hitoe_setting_dialog_error_message02)); - return; - } - hitoe.setPinCode(pin); - for (HitoeDevice d: getManager().getRegisterDevices()) { - if (!d.getName().equals(hitoe.getName()) && d.isRegisterFlag()) { - getManager().disconnectHitoeDevice(d); - } - } - - connectDevice(hitoe); - }); - } - new Handler().postDelayed(() -> { - if (mCheckDialog) { - HitoeDevice containar = findDeviceContainerByAddress(hitoe.getId()); - if (containar != null) { - containar.setPinCode(null); - } - - runOnUiThread(() -> { - dismissProgressDialog(); - Resources res = getResources(); - showErrorDialog(res.getString(R.string.hitoe_setting_dialog_error_message04)); - }); - } - }, HitoeConstants.DISCOVERY_CYCLE_TIME); - - } - - @Override - public void onRegularNotify() { - if (BleUtils.isEnabled(this)) { - addFooterView(); - getManager().addHitoeConnectionListener(this); - getManager().discoveryHitoeDevices(); - } else { - mScheduler.scanHitoeDevice(false); - } - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/activity/HitoeDeviceControlActivity.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/activity/HitoeDeviceControlActivity.java deleted file mode 100644 index 1ba1ab59c3..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/activity/HitoeDeviceControlActivity.java +++ /dev/null @@ -1,230 +0,0 @@ -package org.deviceconnect.android.deviceplugin.hitoe.activity; - -import android.app.ActionBar; -import android.bluetooth.BluetoothAdapter; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.os.Bundle; -import android.os.Handler; -import android.view.MenuItem; - -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentActivity; -import androidx.fragment.app.FragmentTransaction; - -import org.deviceconnect.android.deviceplugin.hitoe.HitoeApplication; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; -import org.deviceconnect.android.deviceplugin.hitoe.fragment.HitoeProfileBatteryFragment; -import org.deviceconnect.android.deviceplugin.hitoe.fragment.HitoeProfileDeviceOrientationFragment; -import org.deviceconnect.android.deviceplugin.hitoe.fragment.HitoeProfileECGFragment; -import org.deviceconnect.android.deviceplugin.hitoe.fragment.HitoeProfileHealthFragment; -import org.deviceconnect.android.deviceplugin.hitoe.fragment.HitoeProfileListFragment; -import org.deviceconnect.android.deviceplugin.hitoe.fragment.HitoeProfilePoseEstimationFragment; -import org.deviceconnect.android.deviceplugin.hitoe.fragment.HitoeProfileStressEstimationFragment; -import org.deviceconnect.android.deviceplugin.hitoe.fragment.HitoeProfileWalkStateFragment; - -/** - * This activity is hitoe debug screen. - * @author NTT DOCOMO, INC. - */ -public class HitoeDeviceControlActivity extends FragmentActivity { - /** - * Feature serviceId. - */ - public static final String FEATURE_SERVICE_ID = "org.deviceconnect.android.hitoe.SERVICEID"; - - /** - * Default title. - */ - public static final String DEFAULT_TITLE = "CLOSE"; - - /** - * Main control page. - */ - public static final int CONTROL_PAGE_MAIN = 0; - /** - * Heartrate control page. - */ - public static final int CONTROL_PAGE_HEARTRATE = 1; - /** - * Battery control page. - */ - public static final int CONTROL_PAGE_BATTERY = 2; - /** - * DeviceOrientation control page. - */ - public static final int CONTROL_PAGE_DEVICEORIENTATION = 3; - /** - * ECG control page. - */ - public static final int CONTROL_PAGE_ECG = 4; - /** - * Stress Estimation control page. - */ - public static final int CONTROL_PAGE_STRESS = 5; - /** - * Pose Estimation control page. - */ - public static final int CONTROL_PAGE_POSE = 6; - /** - * Walk State control page. - */ - public static final int CONTROL_PAGE_WALK = 7; - - /** - * Selected control page no. - */ - private int mPage = CONTROL_PAGE_MAIN; - /** - * Handler. - */ - private final Handler mHandler = new Handler(); - - /** - * Received a event that Bluetooth has been changed. - */ - private final BroadcastReceiver mSensorReceiver = new BroadcastReceiver() { - @Override - public void onReceive(final Context context, final Intent intent) { - String action = intent.getAction(); - if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) { - int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1); - if (state == BluetoothAdapter.STATE_OFF) { - finish(); - } - } - } - }; - - @Override - protected void onCreate(final Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - HitoeApplication app = (HitoeApplication) getApplication(); - app.initialize(); - if (getActionBar() != null) { - getActionBar().setDisplayHomeAsUpEnabled(true); - getActionBar().setDisplayOptions(0, ActionBar.DISPLAY_SHOW_HOME); - getActionBar().setTitle(DEFAULT_TITLE); - } - if (savedInstanceState == null) { - movePage(CONTROL_PAGE_MAIN); - } - } - - @Override - public void onResume() { - super.onResume(); - IntentFilter filter = new IntentFilter(); - filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); - registerReceiver(mSensorReceiver, filter, null, mHandler); - } - - @Override - public void onPause() { - super.onPause(); - unregisterReceiver(mSensorReceiver); - } - @Override - public boolean onOptionsItemSelected(final MenuItem item) { - - if (item.getItemId() == android.R.id.home) { - if (mPage == CONTROL_PAGE_MAIN) { - finish(); - } else { - movePage(CONTROL_PAGE_MAIN); - } - return true; - } - - return super.onOptionsItemSelected(item); - } - - /** - * Move Page. - * @param page page no - */ - public void movePage(final int page) { - Bundle args = new Bundle(); - Intent device = getIntent(); - if (device == null) { - return; - } - mPage = page; - String serviceId = device.getStringExtra(FEATURE_SERVICE_ID); - args.putString(FEATURE_SERVICE_ID, serviceId); - switch (page) { - case CONTROL_PAGE_MAIN: - HitoeProfileListFragment profile = new HitoeProfileListFragment(); - moveFragment(true, profile); - profile.setArguments(args); - break; - case CONTROL_PAGE_HEARTRATE: - HitoeProfileHealthFragment heartRateProfile = new HitoeProfileHealthFragment(); - moveFragment(false, heartRateProfile); - heartRateProfile.setArguments(args); - break; - case CONTROL_PAGE_BATTERY: - HitoeProfileBatteryFragment batteryProfile = new HitoeProfileBatteryFragment(); - moveFragment(false, batteryProfile); - batteryProfile.setArguments(args); - break; - case CONTROL_PAGE_DEVICEORIENTATION: - HitoeProfileDeviceOrientationFragment deviceOrientationProfile - = new HitoeProfileDeviceOrientationFragment(); - moveFragment(false, deviceOrientationProfile); - deviceOrientationProfile.setArguments(args); - break; - case CONTROL_PAGE_ECG: - HitoeProfileECGFragment ecgProfile = new HitoeProfileECGFragment(); - moveFragment(false, ecgProfile); - ecgProfile.setArguments(args); - break; - case CONTROL_PAGE_STRESS: - HitoeProfileStressEstimationFragment stressProfile = new HitoeProfileStressEstimationFragment(); - moveFragment(false, stressProfile); - stressProfile.setArguments(args); - break; - case CONTROL_PAGE_POSE: - HitoeProfilePoseEstimationFragment poseProfile = new HitoeProfilePoseEstimationFragment(); - moveFragment(false, poseProfile); - poseProfile.setArguments(args); - break; - case CONTROL_PAGE_WALK: - HitoeProfileWalkStateFragment walkProfile = new HitoeProfileWalkStateFragment(); - moveFragment(false, walkProfile); - walkProfile.setArguments(args); - break; - default: - - } - - } - /** - * Gets a instance of HitoeManager. - * - * @return HitoeManager - */ - public HitoeManager getManager() { - HitoeApplication application = - (HitoeApplication) super.getApplication(); - return application.getHitoeManager(); - } - - /** - * Move Fragment. - * @param isFirst true:main, false:sub - * @param f Fragment - */ - private void moveFragment(final boolean isFirst, final Fragment f) { - FragmentTransaction t = getSupportFragmentManager().beginTransaction(); - t.setTransition(FragmentTransaction.TRANSIT_NONE); - t.replace(android.R.id.content, f); - if (!isFirst) { - t.addToBackStack(null); - } - t.commit(); - } - -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/activity/HitoeDeviceListActivity.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/activity/HitoeDeviceListActivity.java deleted file mode 100644 index f9ed85bc90..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/activity/HitoeDeviceListActivity.java +++ /dev/null @@ -1,206 +0,0 @@ -/* - HitoeDeviceListActivity - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.activity; - -import android.bluetooth.BluetoothAdapter; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.res.Resources; -import android.os.Bundle; -import android.view.View; -import android.widget.AdapterView; -import android.widget.Button; -import android.widget.TextView; -import android.widget.Toast; - -import org.deviceconnect.android.deviceplugin.hitoe.R; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeDevice; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; -import org.deviceconnect.android.deviceplugin.hitoe.fragment.dialog.DefaultDialogFragment; - -import java.util.List; - -/** - * This activity is device list screen. - * @author NTT DOCOMO, INC. - */ -public class HitoeDeviceListActivity extends HitoeListActivity implements - HitoeManager.OnHitoeConnectionListener, - AdapterView.OnItemClickListener, - AdapterView.OnItemLongClickListener { - - /** - * Received a event that Bluetooth has been changed. - */ - private final BroadcastReceiver mSensorReceiver = new BroadcastReceiver() { - @Override - public void onReceive(final Context context, final Intent intent) { - String action = intent.getAction(); - if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) { - addFooterView(); - } - } - }; - - @Override - protected void onCreate(final Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - } - - - @Override - public void onResume() { - super.onResume(); - mDeviceAdapter.clear(); - mEnableConnectedBtn = true; - mDeviceAdapter.addAll(createDeviceContainers()); - mDeviceAdapter.notifyDataSetChanged(); - mListView.setOnItemClickListener(this); - mListView.setOnItemLongClickListener(this); - getManager().addHitoeConnectionListener(this); - addFooterView(); - IntentFilter filter = new IntentFilter(); - filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); - registerReceiver(mSensorReceiver, filter, null, mHandler); - DefaultDialogFragment.showHitoeWarningMessageDialog(this); - } - - @Override - public void onPause() { - super.onPause(); - getManager().removeHitoeConnectionListener(this); - unregisterReceiver(mSensorReceiver); - } - - - @Override - protected void setUI() { - TextView title = (TextView) findViewById(R.id.view_title); - title.setText(R.string.device_list_view); - Button btn = (Button) findViewById(R.id.btn_add_open); - btn.setText(R.string.add_device_button); - btn.setOnClickListener((view) -> { - Intent intent = new Intent(); - intent.setClass(HitoeDeviceListActivity.this, HitoeAddDeviceActivity.class); - startActivity(intent); - }); - } - - @Override - public void onItemClick(final AdapterView adapterView, final View view, - final int i, final long l) { - final HitoeDevice hitoe = (HitoeDevice) adapterView.getItemAtPosition(i); - if (hitoe == null || !hitoe.isRegisterFlag()) { - Toast.makeText(this, R.string.error_disconnected_hitoe, Toast.LENGTH_SHORT).show(); - return; - } - Intent intent = new Intent(); - intent.putExtra(HitoeDeviceControlActivity.FEATURE_SERVICE_ID, hitoe.getId()); - intent.setClass(HitoeDeviceListActivity.this, HitoeDeviceControlActivity.class); - startActivity(intent); - } - - @Override - public boolean onItemLongClick(final AdapterView adapterView, final View view, - final int i, final long l) { - final HitoeDevice hitoe = (HitoeDevice) adapterView.getItemAtPosition(i); - if (hitoe == null) { - return false; - } - mConnectingDevice = hitoe; - DefaultDialogFragment.showConfirmAlert(this, hitoe.getName(), getString(R.string.confirm_delete_device), - getString(R.string.ok), (dialogInterface, ii) -> { - runOnUiThread(() -> { - disconnectDevice(hitoe); - getManager().deleteHitoeDevice(hitoe); - mDeviceAdapter.remove(hitoe); - mDeviceAdapter.notifyDataSetChanged(); - addFooterView(); - }); - }); - return true; - } - - @Override - public void onConnected(final HitoeDevice device) { - - runOnUiThread(() -> { - if (!mCheckDialog) { - return; - } - HitoeDevice container = findDeviceContainerByAddress(device.getId()); - if (container != null) { - container.setRegisterFlag(true); - container.setSessionId(device.getSessionId()); - mDeviceAdapter.notifyDataSetChanged(); - } - - dismissProgressDialog(); - }); - } - - @Override - public void onConnectFailed(final HitoeDevice device) { - runOnUiThread(() -> { - if (!mCheckDialog) { - return; - } - if (device == null && mConnectingDevice != null) { - HitoeDevice container = findDeviceContainerByAddress(mConnectingDevice.getId()); - if (container != null) { - container.setPinCode(null); - mDeviceAdapter.notifyDataSetChanged(); - } - Resources res = getResources(); - showErrorDialog(res.getString(R.string.hitoe_setting_dialog_error_message03)); - - } else if (device != null) { - showErrorDialogNotConnect(device.getName()); - } - dismissProgressDialog(); - }); - } - - @Override - public void onDiscovery(final List devices) { - if (mDeviceAdapter == null) { - return; - } - runOnUiThread(() -> { - for (HitoeDevice device : devices) { - if (!containAddressForAdapter(device.getId()) - && !device.isRegisterFlag()) { - mDeviceAdapter.add(device); - } - } - mDeviceAdapter.notifyDataSetChanged(); - }); - } - - @Override - public void onDisconnected(final int res, final HitoeDevice device) { - HitoeDevice container = findDeviceContainerByAddress(device.getId()); - if (container != null) { - if (res != 0) { - container.setRegisterFlag(true); - } - runOnUiThread(() -> { - mDeviceAdapter.notifyDataSetChanged(); - }); - } - - } - - @Override - public void onDeleted(final HitoeDevice device) { - - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/activity/HitoeListActivity.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/activity/HitoeListActivity.java deleted file mode 100644 index e430af8d45..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/activity/HitoeListActivity.java +++ /dev/null @@ -1,524 +0,0 @@ -package org.deviceconnect.android.deviceplugin.hitoe.activity; - -import android.app.ActionBar; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.res.Resources; -import android.os.Bundle; -import android.os.Handler; -import android.provider.Settings; -import android.view.LayoutInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.Button; -import android.widget.ListView; -import android.widget.TextView; - -import androidx.fragment.app.FragmentActivity; - -import org.deviceconnect.android.activity.PermissionUtility; -import org.deviceconnect.android.deviceplugin.hitoe.BuildConfig; -import org.deviceconnect.android.deviceplugin.hitoe.HitoeApplication; -import org.deviceconnect.android.deviceplugin.hitoe.R; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeConstants; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeDevice; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; -import org.deviceconnect.android.deviceplugin.hitoe.fragment.dialog.ErrorDialogFragment; -import org.deviceconnect.android.deviceplugin.hitoe.fragment.dialog.PinCodeDialogFragment; -import org.deviceconnect.android.deviceplugin.hitoe.fragment.dialog.ProgressDialogFragment; -import org.deviceconnect.android.deviceplugin.hitoe.util.BleUtils; - -import java.util.ArrayList; -import java.util.List; - -/** - * This activity is hitoe list screen. - * @author NTT DOCOMO, INC. - */ - -public abstract class HitoeListActivity extends FragmentActivity { - /** - * デフォルトのタイトル文字列. - */ - public static final String DEFAULT_TITLE = "サービス一覧"; - - /** - * Adapter. - */ - protected DeviceAdapter mDeviceAdapter; - /** - * Error Dialog. - */ - private ErrorDialogFragment mErrorDialogFragment; - /** - * Progress Dialog. - */ - private ProgressDialogFragment mProgressDialogFragment; - /** - * Handler. - */ - protected final Handler mHandler = new Handler(); - /** - * Bluetooth device list view. - */ - protected ListView mListView; - /** - * footer view. - */ - protected View mFooterView; - - /** - * Enabled connected button. - */ - protected boolean mEnableConnectedBtn; - /** - * Progress dialog flag. - */ - protected boolean mCheckDialog; - /** - * Now connecting device. - */ - protected HitoeDevice mConnectingDevice; - - @Override - protected void onCreate(final Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_hitoe_device_list); - HitoeApplication app = (HitoeApplication) getApplication(); - app.initialize(); - setUI(); - - mDeviceAdapter = new DeviceAdapter(this, createDeviceContainers()); - mListView = (ListView) findViewById(R.id.device_list_view); - mListView.setAdapter(mDeviceAdapter); - mListView.setItemsCanFocus(true); - - LayoutInflater inflater = getLayoutInflater(); - mFooterView = inflater.inflate(R.layout.item_hitoe_searching, null); - if (getActionBar() != null) { - getActionBar().setDisplayHomeAsUpEnabled(true); - - getActionBar().setDisplayOptions(0, ActionBar.DISPLAY_SHOW_HOME); - getActionBar().setTitle(DEFAULT_TITLE); - } - - } - - /** - * Initialize sub classs's ui. - */ - protected abstract void setUI(); - - @Override - protected void onResume() { - super.onResume(); - addFooterView(); - } - - @Override - protected void onPause() { - super.onPause(); - mHandler.removeCallbacksAndMessages(null); - - } - /** - * Gets a instance of HitoeManager. - * - * @return HitoeManager - */ - protected HitoeManager getManager() { - HitoeApplication application = - (HitoeApplication) getApplication(); - return application.getHitoeManager(); - } - - - @Override - public boolean onOptionsItemSelected(final MenuItem item) { - - if (item.getItemId() == android.R.id.home) { - finish(); - return true; - } - - return super.onOptionsItemSelected(item); - } - - /** - * Added the view at ListView. - */ - protected void addFooterView() { - runOnUiThread(new Runnable() { - @Override - public void run() { - LayoutInflater inflater = getLayoutInflater(); - - if (mFooterView != null) { - mListView.removeFooterView(mFooterView); - } - - if (!BleUtils.isBLEPermission(HitoeListActivity.this)) { - Button btn = (Button) findViewById(R.id.btn_add_open); - btn.setVisibility(View.GONE); - mFooterView = inflater.inflate(R.layout.item_hitoe_error, null); - TextView textView = (TextView) mFooterView.findViewById(R.id.error_message); - textView.setText(getString(R.string.hitoe_setting_dialog_error_permission)); - Button permission = (Button) mFooterView.findViewById(R.id.button_permission); - permission.setVisibility(View.VISIBLE); - permission.setText(R.string.bluetooth_settings_ble_permission_off); - permission.setOnClickListener((view) -> { - PermissionUtility.requestPermissions(HitoeListActivity.this, mHandler, - BleUtils.BLE_PERMISSIONS, - new PermissionUtility.PermissionRequestCallback() { - @Override - public void onSuccess() { - } - - @Override - public void onFail(final String deniedPermission) { - } - }); - }); - - mListView.addFooterView(mFooterView); - - } else if (!BleUtils.isEnabled(HitoeListActivity.this)) { - Button btn = findViewById(R.id.btn_add_open); - btn.setVisibility(View.GONE); - - mFooterView = inflater.inflate(R.layout.item_hitoe_error, null); - TextView textView = mFooterView.findViewById(R.id.error_message); - textView.setText(getString(R.string.hitoe_setting_dialog_disable_bluetooth)); - Button bluetooth = mFooterView.findViewById(R.id.button_permission); - bluetooth.setVisibility(View.VISIBLE); - bluetooth.setText(R.string.bluetooth_settings_button); - bluetooth.setOnClickListener((view) -> { - Intent intent = new Intent(); - intent.setAction(Settings.ACTION_BLUETOOTH_SETTINGS); - startActivity(intent); - }); - mDeviceAdapter.clear(); - mDeviceAdapter.notifyDataSetChanged(); - - mListView.addFooterView(mFooterView); - } else if (BleUtils.isEnabled(HitoeListActivity.this) - && !mEnableConnectedBtn) { - mFooterView = inflater.inflate(R.layout.item_hitoe_searching, null); - mListView.addFooterView(mFooterView); - } else if (BleUtils.isEnabled(HitoeListActivity.this) - && mEnableConnectedBtn && createDeviceContainers().size() == 0) { - Button btn = findViewById(R.id.btn_add_open); - btn.setVisibility(View.VISIBLE); - - mFooterView = inflater.inflate(R.layout.item_hitoe_error, null); - TextView textView = (TextView) mFooterView.findViewById(R.id.error_message); - textView.setText(getString(R.string.alert_add_device)); - Button bluetooth = mFooterView.findViewById(R.id.button_permission); - bluetooth.setVisibility(View.GONE); - - mListView.addFooterView(mFooterView); - } else { - Button btn = findViewById(R.id.btn_add_open); - btn.setVisibility(View.VISIBLE); - mDeviceAdapter.clear(); - mDeviceAdapter.addAll(createDeviceContainers()); - mDeviceAdapter.notifyDataSetChanged(); - - } - } - }); - } - /** - * Create a list of device. - * - * @return list of device - */ - protected List createDeviceContainers() { - getManager().readHitoeDeviceForDB(); - List resDevice = new ArrayList(); - for (HitoeDevice device:getManager().getRegisterDevices()) { - if (device.getPinCode() != null && mEnableConnectedBtn) { - resDevice.add(device); - } else if (device.getPinCode() == null && !mEnableConnectedBtn) { - resDevice.add(device); - } - } - return resDevice; - } - - /** - * Connect to the BLE device that have heart rate service. - * - * @param device BLE device that have heart rate service. - */ - protected void connectDevice(final HitoeDevice device) { - if (BleUtils.isEnabled(this) && !mCheckDialog) { - mConnectingDevice = device; - showProgressDialog(device.getName()); - getManager().connectHitoeDevice(device); - } - } - - /** - * Disconnect to the BLE device that have heart rate service. - * - * @param device BLE device that have heart rate service. - */ - protected void disconnectDevice(final HitoeDevice device) { - runOnUiThread(() -> { - getManager().disconnectHitoeDevice(device); - HitoeDevice container = findDeviceContainerByAddress(device.getId()); - if (container != null) { - container.setRegisterFlag(false); - mDeviceAdapter.notifyDataSetChanged(); - } - }); - } - - - - /** - * Display the dialog of connecting a ble device. - * - * @param name device name - */ - protected void showProgressDialog(final String name) { - dismissProgressDialog(); - - Resources res = getResources(); - String title = res.getString(R.string.hitoe_setting_connecting_title); - String message = res.getString(R.string.hitoe_setting_connecting_message, name); - mProgressDialogFragment = ProgressDialogFragment.newInstance(title, message); - mProgressDialogFragment.show(getSupportFragmentManager(), "dialog"); - mCheckDialog = true; - } - - /** - * Dismiss the dialog of connecting a ble device. - */ - protected void dismissProgressDialog() { - mCheckDialog = false; - mHandler.removeCallbacksAndMessages(null); - - if (mProgressDialogFragment != null) { - mProgressDialogFragment.dismiss(); - mProgressDialogFragment = null; - } - } - - /** - * Display the error dialog of not connect device. - * - * @param name device name - */ - protected void showErrorDialogNotConnect(final String name) { - Resources res = getResources(); - String message; - if (name == null) { - message = res.getString(R.string.hitoe_setting_dialog_error_message, - getString(R.string.hitoe_setting_default_name)); - } else { - message = res.getString(R.string.hitoe_setting_dialog_error_message, name); - } - showErrorDialog(message); - } - - - /** - * Display the error dialog. - * - * @param message error message - */ - protected void showErrorDialog(final String message) { - dismissErrorDialog(); - try { - Resources res = getResources(); - String title = res.getString(R.string.hitoe_setting_dialog_error_title); - mErrorDialogFragment = ErrorDialogFragment.newInstance(title, message); - mErrorDialogFragment.show(getSupportFragmentManager(), "error_dialog"); - mErrorDialogFragment.setOnDismissListener((dialog) -> { - mErrorDialogFragment = null; - }); - } catch (IllegalStateException e) { - if (BuildConfig.DEBUG) { - e.printStackTrace(); - } - } - } - - /** - * Dismiss the error dialog. - */ - protected void dismissErrorDialog() { - try { - if (mErrorDialogFragment != null) { - mErrorDialogFragment.dismiss(); - mErrorDialogFragment = null; - } - } catch (IllegalStateException e) { - if (BuildConfig.DEBUG) { - e.printStackTrace(); - } - - } - } - - - /** - * Look for a DeviceContainer with the given address. - * - * @param address address of device - * @return The DeviceContainer that has the given address or null - */ - protected HitoeDevice findDeviceContainerByAddress(final String address) { - int size = mDeviceAdapter.getCount(); - for (int i = 0; i < size; i++) { - HitoeDevice container = mDeviceAdapter.getItem(i); - if (container.getId().equalsIgnoreCase(address)) { - return container; - } - } - return null; - } - - - /** - * Returns true if this address contains the mDeviceAdapter. - * - * @param address address of device - * @return true if address is an element of mDeviceAdapter, false otherwise - */ - protected boolean containAddressForAdapter(final String address) { - int size = mDeviceAdapter.getCount(); - for (int i = 0; i < size; i++) { - HitoeDevice container = mDeviceAdapter.getItem(i); - if (container.getId().equals(address)) { - return true; - } - } - return false; - } - - /** - * Returns true if this address contains the mDeviceAdapter. - * - * @param address address of device - * @return true if address is an element of mDeviceAdapter, false otherwise - */ - protected boolean containAddressForList(final String address) { - List devices = createDeviceContainers(); - int size = devices.size(); - for (int i = 0; i < size; i++) { - HitoeDevice container = devices.get(i); - if (container.getId().equals(address)) { - return true; - } - } - return false; - } - - /** - * Device List's adapter. - */ - protected class DeviceAdapter extends ArrayAdapter { - /** - * Adapter inflater. - */ - private LayoutInflater mInflater; - - /** - * Constructor. - * @param context context - * @param objects hitoe's list - */ - public DeviceAdapter(final Context context, final List objects) { - super(context, 0, objects); - mInflater = (LayoutInflater) context.getSystemService( - Context.LAYOUT_INFLATER_SERVICE); - } - - @Override - public View getView(final int position, View convertView, final ViewGroup parent) { - if (convertView == null) { - convertView = mInflater.inflate(R.layout.item_hitoe_device, null); - } - - final HitoeDevice device = getItem(position); - String name = device.getName(); - if (device.isRegisterFlag()) { - if (getManager().containConnectedHitoeDevice(device.getId())) { - name += "\n" + getResources().getString(R.string.hitoe_setting_online); - } else { - name += "\n" + getResources().getString(R.string.hitoe_setting_offline); - } - } - - TextView nameView = convertView.findViewById(R.id.device_name); - nameView.setText(name); - - TextView addressView = convertView.findViewById(R.id.device_address); - addressView.setText(device.getId()); - final Button btn = convertView.findViewById(R.id.btn_connect_device); - - if (mEnableConnectedBtn) { - btn.setVisibility(View.VISIBLE); - - if (device.isRegisterFlag()) { - btn.setBackgroundResource(R.drawable.button_red); - btn.setText(R.string.hitoe_setting_disconnect); - } else { - btn.setBackgroundResource(R.drawable.button_blue); - btn.setText(R.string.hitoe_setting_connect); - } - btn.setOnClickListener((v) -> { - for (HitoeDevice d: getManager().getRegisterDevices()) { - if (!d.getName().equals(device.getName()) && d.isRegisterFlag()) { - getManager().disconnectHitoeDevice(d); - } - } - - if (device.isRegisterFlag()) { - btn.setBackgroundResource(R.drawable.button_blue); - btn.setText(R.string.hitoe_setting_connect); - disconnectDevice(device); - } else { - if (device.getPinCode() == null) { - final Resources res = getResources(); - PinCodeDialogFragment pinDialog = PinCodeDialogFragment.newInstance(); - pinDialog.show(getSupportFragmentManager(), "pin_dialog"); - pinDialog.setOnPinCodeListener((pin) -> { - if (pin.isEmpty()) { - showErrorDialog( - res.getString(R.string.hitoe_setting_dialog_error_message02)); - return; - } - device.setPinCode(pin); - connectDevice(device); - }); - } else { - connectDevice(device); - } - mHandler.postDelayed(() -> { - if (mCheckDialog) { - device.setPinCode(null); - runOnUiThread(() -> { - dismissProgressDialog(); - Resources res = getResources(); - showErrorDialog( - res.getString(R.string.hitoe_setting_dialog_error_message04)); - }); - } - }, HitoeConstants.DISCOVERY_CYCLE_TIME); - - } - }); - } else { - btn.setVisibility(View.GONE); - } - return convertView; - } - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/activity/package-info.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/activity/package-info.java deleted file mode 100755 index 48e9c799dc..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/activity/package-info.java +++ /dev/null @@ -1,12 +0,0 @@ -/* -org.deviceconnect.android.deviceplugin.hitoe.activity -Copyright (c) 2016 NTT DOCOMO,INC. -Released under the MIT license -http://opensource.org/licenses/mit-license.php - */ - -/** - * Activity of this device plug-in. - */ -package org.deviceconnect.android.deviceplugin.hitoe.activity; - diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/AccelerationData.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/AccelerationData.java deleted file mode 100644 index 75cc27fa0b..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/AccelerationData.java +++ /dev/null @@ -1,223 +0,0 @@ -/* - AccelerationData - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.data; - -import android.os.Bundle; - -import org.deviceconnect.android.profile.DeviceOrientationProfile; - -/** - * This class is information of Acceleration. - * @author NTT DOCOMO, INC. - */ -public class AccelerationData { - /** Acceleration X. */ - private double mAccelX; - /** Acceleration Y. */ - private double mAccelY; - /** Acceleration Z. */ - private double mAccelZ; - /** Acceleration Gravity X. */ - private double mGravityX; - /** Acceleration Gravity Y. */ - private double mGravityY; - /** Acceleration Gravity Z. */ - private double mGravityZ; - /** Gyro X. */ - private double mGyroAlpha; - /** Gyro Y. */ - private double mGyroBeta; - /** Gyro Z. */ - private double mGyroGamma; - /** TimeStamp. */ - private long mInterval; - - /** - * Constructor. - */ - public AccelerationData() { - mInterval = 0; - } - - - /** - * Get Acceleration X. - * @return Acceleration X - */ - public double getAccelX() { - return mAccelX; - } - - /** - * Set Acceleration X. - * @param accelX Acceleration X - */ - public void setAccelX(final double accelX) { - mAccelX = accelX; - } - - /** - * Get Acceleration Y. - * @return Acceleration Y - */ - public double getAccelY() { - return mAccelY; - } - - /** - * Set Acceleration Y. - * @param accelY Acceleration Y - */ - public void setAccelY(final double accelY) { - mAccelY = accelY; - } - - /** - * Get Acceleration Z. - * @return Acceleration Z - */ - public double getAccelZ() { - return mAccelZ; - } - - /** - * Set Acceleration Z. - * @param accelZ Acceleration Z - */ - public void setAccelZ(final double accelZ) { - mAccelZ = accelZ; - } - - /** - * Get Acceleration Gravity X. - * @return Acceleration Gravity X - */ - public double getGravityX() { - return mGravityX; - } - - /** - * Set Acceleration Gravity X. - * @param gravityX Acceleration gravity X - */ - public void setGravityX(final double gravityX) { - mGravityX = gravityX; - } - - /** - * Get Acceleration Gravity Y. - * @return Acceleration Gravity Y - */ - public double getGravityY() { - return mGravityY; - } - - /** - * Set Acceleration Gravity Y. - * @param gravityY Acceleration Gravity Y - */ - public void setGravityY(final double gravityY) { - mGravityY = gravityY; - } - - /** - * Get Acceleration Gravity Z. - * @return Acceleration Gravity Z - */ - public double getGravityZ() { - return mGravityZ; - } - - /** - * Set Acceleration Gravity Z. - * @param gravityZ Acceleration Gravity Z - */ - public void setGravityZ(final double gravityZ) { - mGravityZ = gravityZ; - } - - /** - * Get Gyro Alpha. - * @return Gyro Alpha - */ - public double getGyroAlpha() { - return mGyroAlpha; - } - - /** - * Set Gyro alpha. - * @param gyroAlpha Gyro Alpha - */ - public void setGyroAlpha(final double gyroAlpha) { - mGyroAlpha = gyroAlpha; - } - - /** - * Get Gyro Beta. - * @return Gyro Beta - */ - public double getGyroBeta() { - return mGyroBeta; - } - - /** - * Set Gyro Beta. - * @param gyroBeta Gyro Beta - */ - public void setGyroBeta(final double gyroBeta) { - mGyroBeta = gyroBeta; - } - - /** - * Get Gyro Gamma. - * @return Gyro Gamma - */ - public double getGyroGamma() { - return mGyroGamma; - } - - /** - * Set Gyro Gamma. - * @param gyroGamma Gyro Gamma - */ - public void setGyroGamma(final double gyroGamma) { - mGyroGamma = gyroGamma; - } - - /** - * Get TimeStamp. - * @return timestamp - */ - public long getTimeStamp() { - return mInterval; - } - - /** - * Set TimeStamp. - * @param timeStamp timestamp - */ - public void setTimeStamp(final long timeStamp) { - mInterval = timeStamp; - } - - /** - * To Bundle. - * @return bundle - */ - public Bundle toBundle() { - Bundle orientation = new Bundle(); - - Bundle ag = new Bundle(); - DeviceOrientationProfile.setX(ag, mAccelX * 9.81); - DeviceOrientationProfile.setY(ag, mAccelY * 9.81); - DeviceOrientationProfile.setZ(ag, mAccelZ * 9.81); - - DeviceOrientationProfile.setAcceleration(orientation, ag); - DeviceOrientationProfile.setInterval(orientation, mInterval); - return orientation; - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HeartData.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HeartData.java deleted file mode 100644 index 1b474e3840..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HeartData.java +++ /dev/null @@ -1,242 +0,0 @@ -/* - RateData - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.data; - -import android.os.Bundle; - -import org.deviceconnect.android.profile.HealthProfile; - -/** - * This class is information of HeartRate or RRI or Energy Expended or ECG. - * @author NTT DOCOMO, INC. - */ -public class HeartData { - /** HeartRate type.*/ - public enum HeartRateType { - /** - * HeartRate. - */ - Rate, - /** - * RRI. - */ - RRI, - /** - * Energy Expended. - */ - EnergyExpended, - /** - * ECG. - */ - ECG - - } - - /** HeartRate type. */ - private HeartRateType mHeartRateType; - /** value. */ - private float mValue; - /** MDER Float value. */ - private String mMderFloat; - /** type. */ - private String mType; - /** type code. */ - private int mTypeCode; - /** unit. */ - private String mUnit; - /** unit code. */ - private int mUnitCode; - /** timestamp. */ - private long mTimeStamp; - /** timestamp string. */ - private String mTimeStampString; - - /** - * Constructor. - */ - public HeartData() { - mMderFloat = ""; - mType = ""; - mUnit = ""; - mTimeStampString = ""; - } - - /** - * Get Heart's value. - * @return heart's value - */ - public float getValue() { - return mValue; - } - - /** - * Set Heart's value. - * @param value heart's value - */ - public void setValue(final float value) { - mValue = value; - } - - /** - * Get MDER Float value. - * @return MDER Float value - */ - public String getMderFloat() { - return mMderFloat; - } - - /** - * Set MDER Float value. - * @param mderFloat MDER Float value - */ - public void setMderFloat(final String mderFloat) { - mMderFloat = mderFloat; - } - - /** - * Get Value's type. - * @return value's type - */ - public String getType() { - return mType; - } - - /** - * Set Value's type. - * @param type value's type - */ - public void setType(final String type) { - mType = type; - } - - /** - * Get Value's type code. - * @return Value's type code - */ - public int getTypeCode() { - return mTypeCode; - } - - /** - * Set Value's type code. - * @param typeCode value's type code - */ - public void setTypeCode(final int typeCode) { - mTypeCode = typeCode; - } - - /** - * Get HeartRate's unit. - * @return HeartRate's unit - */ - public String getUnit() { - return mUnit; - } - - /** - * Set HeartRate's unit. - * @param unit HeartRate's unit - */ - public void setUnit(final String unit) { - mUnit = unit; - } - - /** - * Get HeartRate's unit code. - * @return HeartRate's unit code - */ - public int getUnitCode() { - return mUnitCode; - } - - /** - * Set HeartRate's unit code. - * @param unitCode HeartRate's unit code - */ - public void setUnitCode(final int unitCode) { - mUnitCode = unitCode; - } - - /** - * Get HeartRate's timestamp. - * @return HeartRate's timestamp - */ - public long getTimeStamp() { - return mTimeStamp; - } - - /** - * Set HeartRate's timestamp. - * @param timeStamp HeartRate's timestamp - */ - public void setTimeStamp(final long timeStamp) { - mTimeStamp = timeStamp; - } - - /** - * Get HeartRate's timestamp string. - * @return HeartRate's timestamp string - */ - public String getTimeStampString() { - return mTimeStampString; - } - - /** - * Set HeartRate's timestamp string. - * @param timeStampString HeartRate's timestamp string - */ - public void setTimeStampString(final String timeStampString) { - mTimeStampString = timeStampString; - } - - /** - * Get HeartRate type. - * @return HeartRate type - */ - public HeartRateType getHeartRateType() { - return mHeartRateType; - } - - /** - * Set HeartRate type. - * @param heartRateType HeartRate type - */ - public void setHeartRateType(final HeartRateType heartRateType) { - mHeartRateType = heartRateType; - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("{\"value\": ").append(mValue).append(", "); - builder.append("\"MderFloat\": ").append(mMderFloat).append(", "); - builder.append("\"type\": ").append(mType).append(", "); - builder.append("\"typeCode\": ").append(mTypeCode).append(", "); - builder.append("\"unit\": ").append(mUnit).append(", "); - builder.append("\"unitCode\": ").append(mUnitCode).append(", "); - builder.append("\"timeStamp\": ").append(mTimeStamp).append(", "); - builder.append("\"timeStampString\": ").append(mTimeStampString).append("} "); - return builder.toString(); - } - - /** - * To Bundle. - * @return Bundle - */ - public Bundle toBundle() { - Bundle heart = new Bundle(); - HealthProfile.setValue(heart, mValue); - HealthProfile.setMDERFloat(heart, mMderFloat); - HealthProfile.setType(heart, mType); - HealthProfile.setTypeCode(heart, mTypeCode); - HealthProfile.setUnit(heart, mUnit); - HealthProfile.setUnitCode(heart, mUnitCode); - HealthProfile.setTimestamp(heart, mTimeStamp); - HealthProfile.setTimestampString(heart, mTimeStampString); - return heart; - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HeartRateData.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HeartRateData.java deleted file mode 100644 index 922b706206..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HeartRateData.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - HeartRateData - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.data; - -/** - * This class is information of a Heart Rate. - * @author NTT DOCOMO, INC. - */ -public class HeartRateData { - /** Health device info. */ - private TargetDeviceData mTarget; - /** Health device's heartrate data. */ - private HeartData mHeartRate; - /** Health device's RRInterval. */ - private HeartData mRRInterval; - /** Health device's EnergyExpended. */ - private HeartData mEnergyExpended; - /** Health device's ECG. */ - private HeartData mECG; - - /** - * Get Health device's info. - * @return Health device's info - */ - public TargetDeviceData getDevice() { - return mTarget; - } - - /** - * Set Health device's info. - * @param target Health device's info - */ - public void setDevice(final TargetDeviceData target) { - mTarget = target; - } - - /** - * Get Health device's heartrate data. - * @return Health device's heartrate data - */ - public HeartData getHeartRate() { - return mHeartRate; - } - - /** - * Set Health device's heartrate data. - * @param heartRate Health device's heartrate data - */ - public void setHeartRate(final HeartData heartRate) { - mHeartRate = heartRate; - } - - /** - * Get Health device's EnergyExpended data. - * @return Health device's Energy Expended data - */ - public HeartData getEnergyExpended() { - return mEnergyExpended; - } - - /** - * Set Health device's Energy Expended data. - * @param energyExpended Health device's Energy Expended data - */ - public void setEnergyExpended(final HeartData energyExpended) { - mEnergyExpended = energyExpended; - } - - /** - * Get Health device's RRInterval data. - * @return Health device's RRInterval data - */ - public HeartData getRRInterval() { - return mRRInterval; - } - - - /** - * Set Health device's RRInterval data. - * @param rrInterval Health device's RRInterval data - */ - public void setRRInterval(final HeartData rrInterval) { - mRRInterval = rrInterval; - } - /** - * Set Health device's ecg data. - * @param ecg Health device's ecg data - */ - public void setECG(final HeartData ecg) { - mECG = ecg; - } - /** - * Get Health device's ECG data. - * @return Health device's ECG data - */ - public HeartData getECG() { - return mECG; - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("{\"heart\":{"); - builder.append("\"device\":").append(mTarget.toString()).append(", "); - builder.append("\"rate\":").append(mHeartRate.toString()).append(", "); - builder.append("\"rr\":").append(mRRInterval.toString()).append(", "); - builder.append("\"energy\":").append(mEnergyExpended.toString()).append("}} "); - return builder.toString(); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HitoeConstants.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HitoeConstants.java deleted file mode 100755 index e2c595d946..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HitoeConstants.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - HitoeConsts - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.data; - -/** - * Hitoe's constant. - * @author NTT DOCOMO, INC. - */ -public final class HitoeConstants { - /** - * Private constructor. - */ - private HitoeConstants() { - } - - /** - * Line seperator. - */ - public static final String BR = System.getProperty("line.separator"); - /** VB. */ - public static final String VB = "\\|"; - /** Comma. */ - public static final String COMMA = ","; - /** Colon. */ - public static final String COLON = ":"; - - /** Raw data prefix.*/ - public static final String RAW_DATA_PREFFIX = "raw."; - /** Ba data prefix. */ - public static final String BA_DATA_PREFFIX = "ba."; - /** Ex data prefix. */ - public static final String EX_DATA_PREFFIX = "ex."; - - /** Raw connection prefix. */ - public static final String RAW_CONNECTION_PREFFIX = "R"; - /** Ba connection prefix. */ - public static final String BA_CONNECTION_PREFFIX = "B"; - /** Ex connection prefix. */ - public static final String EX_CONNECTION_PREFFIX = "E"; - - /** Available ex data string. */ - public static final String AVAILABLE_EX_DATA_STR = "ex.stress\nex.posture\nex.walk\nex.lr_balance"; - /** ECG Chart update cycle time. */ - public static final int ECG_CHART_UPDATE_CYCLE_TIME = 40; - /** Acceleration chart update cycle time. */ - public static final int ACC_CHART_UPDATE_CYCLE_TIME = 100; - /** HeartRate text update cycle time. */ - public static final int HR_TEXT_UPDATE_CYCLE_TIME = 1000; - /** Stress Estimation update cycle time. */ - public static final int LFHF_TEXT_UPDATE_CYCLE_TIME = 1000; - /** Pose Estimation update cycle time. */ - public static final int POSTURE_STATE_UPDATE_CYCLE_TIME = 1000; - /** Discovery Cycle time. */ - public static final int DISCOVERY_CYCLE_TIME = 30000; - - /** Ex posture unit number. */ - public static final int EX_POSTURE_UNIT_NUM = 25; - /** Ex walk unit number. */ - public static final int EX_WALK_UNIT_NUM = 100; - /** Ex Left Right balance unit number. */ - public static final int EX_LR_BALANCE_UNIT_NUM = 250; - - /** getAvailableSensor. */ - public static final int API_ID_GET_AVAILABLE_SENSOR = 0x1010; - /** connect. */ - public static final int API_ID_CONNECT = 0x1020; - /** disconnect. */ - public static final int API_ID_DISCONNECT = 0x1021; - /** getAvailableData. */ - public static final int API_ID_GET_AVAILABLE_DATA = 0x1030; - /** addReciever. */ - public static final int API_ID_ADD_RECIVER = 0x1040; - /** removeReciever. */ - public static final int API_ID_REMOVE_RECEIVER = 0x1041; - /** getStatus. */ - public static final int API_ID_GET_STATUS = 0x1090; - - /** Response id for success. */ - public static final int RES_ID_SUCCESS = 0x00; - /** Response id for failure. */ - public static final int RES_ID_FAILURE = 0x01; - /** Response id for continue. */ - public static final int RES_ID_CONTINUE = 0x05; - /** Response id for api busy. */ - public static final int RES_ID_API_BUSY = 0x09; - /** Response id for invalid argument. */ - public static final int RES_ID_INVALID_ARG = 0x10; - /** Response id for invalid parameter. */ - public static final int RES_ID_INVALID_PARAM = 0x30; - /** Response id for sensor connect. */ - public static final int RES_ID_SENSOR_CONNECT = 0x60; - /** Response id for sensor connect failure. */ - public static final int RES_ID_SENSOR_CONNECT_FAILURE = 0x61; - /** Response id for sensor connect notice. */ - public static final int RES_ID_SENSOR_CONNECT_NOTICE = 0x62; - /** Response id for sensor unauthorized. */ - public static final int RES_ID_SENSOR_UNAUTHORIZED = 0x63; - /** Response id for sensor disconnect. */ - public static final int RES_ID_SENSOR_DISCONECT = 0x65; - /** Response id for sensor disconnect notice. */ - public static final int RES_ID_SENSOR_DISCONECT_NOTICE = 0x66; - - /** Get Available sensor device type. */ - public static final String GET_AVAILABLE_SENSOR_DEVICE_TYPE = "hitoe D01"; - /** Get Available sensor parameter search time. */ - public static final int GET_AVAILABLE_SENSOR_PARAM_SEARCH_TIME = 5000; - - /** Connect disconnect retry time. */ - public static final int CONNECT_DISCONNECT_RETRY_TIME = 1000; - /** Connect disconnect retry count. */ - public static final int CONNECT_DISCONNECT_RETRY_COUNT = 3; - /** Connect no packet retry time. */ - public static final int CONNECT_NOPACKET_RETRY_TIME = 5000; - - /** Add receiver parameter ECG sampling interval. */ - public static final int ADD_RECEIVER_PARAM_ECG_SAMPLING_INTERVAL = 40; - /** Add receiver parameter Acceleration sampling interval. */ - public static final int ADD_RECEIVER_PARAM_ACC_SAMPLING_INTERVAL = 40; - /** Add receiver patameter RRI sampling interval. */ - public static final int ADD_RECEIVER_PARAM_RRI_SAMPLING_INTERVAL = 1000; - /** Add receiver parameter heartrate sampling interval. */ - public static final int ADD_RECEIVER_PARAM_HR_SAMPLING_INTERVAL = 1000; - /** Add receiver parameter battery sampling interval. */ - public static final int ADD_RECEIVER_PARAM_BAT_SAMPLING_INTERVAL = 10000; - - /** Add receiver parameter Ba samling interval. */ - public static final int ADD_RECEIVER_PARAM_BA_SAMPLING_INTERVAL = 4000; - /** Add receiver parameter Ba ECG Threshold. */ - public static final int ADD_RECEIVER_PARAM_BA_ECG_THRESHHOLD = 250; - /** Add receiver parameter Ba skip count. */ - public static final int ADD_RECEIVER_PARAM_BA_SKIP_COUNT = 50; - /** Add receiver parameter Ba RRI min. */ - public static final int ADD_RECEIVER_PARAM_BA_RRI_MIN = 240; - /** Add receiver parameter Ba RRI max. */ - public static final int ADD_RECEIVER_PARAM_BA_RRI_MAX = 3999; - /** Add receiver parameter Ba sample count. */ - public static final int ADD_RECEIVER_PARAM_BA_SAMPLE_COUNT = 20; - /** Add receiver parameter Ba RRI input. */ - public static final String ADD_RECEIVER_PARAM_BA_RRI_INPUT = "extracted_rri"; - /** Add receiver parameter Ba Frequency sampling interval. */ - public static final int ADD_RECEIVER_PARAM_BA_FREQ_SAMPLING_INTERVAL = 4000; - /** Add receiver parameter Ba frequency sampling window. */ - public static final int ADD_RECEIVER_PARAM_BA_FREQ_SAMPLING_WINDOW = 60; - /** Add receiver parameter Ba RRI sampling rate. */ - public static final int ADD_RECEIVER_PARAM_BA_RRI_SAMPLING_RATE = 8; - /** Add receiver parameter Ba time sampling interval. */ - public static final int ADD_RECEIVER_PARAM_BA_TIME_SAMPLING_INTERVAL = 4000; - /** Add receiver parameter Ba time sampling window. */ - public static final int ADD_RECEIVER_PARAM_BA_TIME_SAMPLING_WINDOW = 60; - - /** Add receiver parameter ex accleration axis xyz. */ - public static final String ADD_RECEIVER_PARAM_EX_ACC_AXIS_XYZ = "XYZ"; - /** Add receiver parameter ex psture window. */ - public static final int ADD_RECEIVER_PARAM_EX_POSTURE_WINDOW = 1; - /** Add receiver parameter ex walk stride. */ - public static final double ADD_RECEIVER_PARAM_EX_WALK_STRIDE = 0.81; - /** Add receiver parameter ex run stride cof. */ - public static final double ADD_RECEIVER_PARAM_EX_RUN_STRIDE_COF = 0.0091; - /** Add receiver parameter ex run stride int. */ - public static final double ADD_RECEIVER_PARAM_EX_RUN_STRIDE_INT = 0.1806; - - /** Back forward threshold. */ - public static final int BACK_FORWARD_THRESHOLD = 30; - /** Left right threshold. */ - public static final int LEFT_RIGHT_THRESHOLD = 20; - -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HitoeDBHelper.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HitoeDBHelper.java deleted file mode 100644 index 267228fa62..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HitoeDBHelper.java +++ /dev/null @@ -1,198 +0,0 @@ -/* - HitoeDBHelper - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.data; - -import android.content.ContentValues; -import android.content.Context; -import android.database.Cursor; -import android.database.sqlite.SQLiteDatabase; -import android.database.sqlite.SQLiteOpenHelper; -import android.provider.BaseColumns; - -import java.util.ArrayList; -import java.util.List; - -/** - * This class manage a database. - * @author NTT DOCOMO, INC. - */ -public class HitoeDBHelper { - - /** - * Define the name of the database. - */ - private static final String DB_NAME = "hitoe_device.db"; - - /** - * Define the version of the database. - */ - private static final int DB_VERSION = 1; - /** DB Name. */ - private static final String TBL_NAME = "device_tbl"; - - /** DB column {@value} . */ - private static final String COL_TYPE = "type"; - /** DB column {@value} . */ - private static final String COL_NAME = "name"; - /** DB column {@value} . */ - private static final String COL_ID = "device_id"; - /** DB column {@value} . */ - private static final String COL_CONNECT_MODE = "connect_mode"; - /** DB column {@value} . */ - private static final String COL_PIN_CODE = "pin_code"; - /** DB column {@value} . */ - private static final String COL_REGISTER_FLAG = "register_flag"; - - /** DB Helper. */ - private DBHelper mDBHelper; - - /** - * Constructor. - * @param context application context - */ - public HitoeDBHelper(final Context context) { - mDBHelper = new DBHelper(context); - } - - /** - * Add the device to database. - * @param device device - * @return the row ID of the newly added row, or -1 if an error occurred - */ - public synchronized long addHitoeDevice(final HitoeDevice device) { - List exist = getHitoeDevices(device.getId()); - if (exist.size() > 0) { - updateHitoeDevice(device); - return -2; - } - ContentValues values = new ContentValues(); - values.put(COL_TYPE, device.getType()); - values.put(COL_NAME, device.getName()); - values.put(COL_ID, device.getId()); - values.put(COL_CONNECT_MODE, device.getConnectMode()); - values.put(COL_PIN_CODE, device.getPinCode()); - values.put(COL_REGISTER_FLAG, device.isRegisterFlag() ? 1 : 0); - - SQLiteDatabase db = mDBHelper.getWritableDatabase(); - try { - return db.insert(TBL_NAME, null, values); - } finally { - db.close(); - } - } - - /** - * Update the device in the database. - * @param device device - * @return the number of rows updated - */ - public synchronized int updateHitoeDevice(final HitoeDevice device) { - ContentValues values = new ContentValues(); - values.put(COL_REGISTER_FLAG, device.isRegisterFlag() ? 1 : 0); - - String whereClause = COL_ID + "=?"; - String[] whereArgs = { - device.getId() - }; - - SQLiteDatabase db = mDBHelper.getWritableDatabase(); - try { - return db.update(TBL_NAME, values, whereClause, whereArgs); - } finally { - db.close(); - } - } - - /** - * Delete the device in the database. - * @param device device - * @return the number of rows deleted, 0 otherwise - */ - public synchronized int removeHitoeDevice(final HitoeDevice device) { - String whereClause = COL_ID + "=?"; - String[] whereArgs = { - device.getId() - }; - - SQLiteDatabase db = mDBHelper.getWritableDatabase(); - try { - return db.delete(TBL_NAME, whereClause, whereArgs); - } finally { - db.close(); - } - } - - /** - * Get a list of device in the database. - * @return a list of device - */ - public synchronized List getHitoeDevices(final String id) { - String sql = "SELECT * FROM " + TBL_NAME; - String[] selectionArgs = {}; - if (id != null) { - sql += " WHERE " + COL_ID + "='" + id + "' "; - } - SQLiteDatabase db = mDBHelper.getReadableDatabase(); - Cursor cursor = db.rawQuery(sql, selectionArgs); - - List devices = new ArrayList<>(); - boolean next = cursor.moveToFirst(); - while (next) { - HitoeDevice device = new HitoeDevice(null); - device.setType(cursor.getString(cursor.getColumnIndex(COL_TYPE))); - device.setName(cursor.getString(cursor.getColumnIndex(COL_NAME))); - device.setId(cursor.getString(cursor.getColumnIndex(COL_ID))); - device.setConnectMode(cursor.getString(cursor.getColumnIndex(COL_CONNECT_MODE))); - device.setPinCode(cursor.getString(cursor.getColumnIndex(COL_PIN_CODE))); - device.setRegisterFlag(cursor.getInt(cursor.getColumnIndex(COL_REGISTER_FLAG)) == 1); - devices.add(device); - next = cursor.moveToNext(); - } - return devices; - } - - /** - * SQL DB Helper. - */ - private static class DBHelper extends SQLiteOpenHelper { - /** - * Constructor. - * @param context Context - */ - public DBHelper(final Context context) { - super(context, DB_NAME, null, DB_VERSION); - } - - @Override - public void onCreate(final SQLiteDatabase db) { - createDB(db); - } - - @Override - public void onUpgrade(final SQLiteDatabase db, final int oldVersion, final int newVersion) { - db.execSQL("DROP TABLE IF EXISTS " + TBL_NAME); - createDB(db); - } - - /** - * Create DB's sql. - * @param db DB - */ - private void createDB(final SQLiteDatabase db) { - String sql = "CREATE TABLE " + TBL_NAME + " (" - + BaseColumns._ID + " INTEGER PRIMARY KEY, " - + COL_TYPE + " TEXT, " - + COL_NAME + " TEXT, " - + COL_ID + " TEXT, " - + COL_CONNECT_MODE + " TEXT, " - + COL_PIN_CODE + " TEXT, " - + COL_REGISTER_FLAG + " INTEGER" - + ");"; - db.execSQL(sql); - } - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HitoeDevice.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HitoeDevice.java deleted file mode 100644 index 5bd92e30e7..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HitoeDevice.java +++ /dev/null @@ -1,415 +0,0 @@ -/* - HitoeDevice - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.data; - -import java.util.ArrayList; -import java.util.List; - -/** - * This class is information of a hitoe device. - * @author NTT DOCOMO, INC. - */ -public class HitoeDevice { - /** device type. */ - private String mType; - /** device name. */ - private String mName; - /** device id. */ - private String mId = "-1"; - /** device connect mode. */ - private String mConnectMode; - /** device pin code. */ - private String mPin; - /** device register flag. */ - private boolean mRegisterFlag; - /** memory setting. */ - private String mMemorySetting; - /** available raw datalist. */ - private List mAvailableRawDataList = new ArrayList<>(); - /** available ba datalist. */ - private List mAvailableBaDataList = new ArrayList<>(); - /** available ex datalist. */ - private List mAvailableExDataList = new ArrayList<>(); - - /** session id. */ - private String mSessionId; - /** Raw connection id. */ - private String mRawConnectionId; - /** Ba connection id. */ - private String mBaConnectionId; - /** Ex connection id. */ - private String mExConnectionId; - /** ex connection list. */ - private List mExConnectionList = new ArrayList<>(); - - /** Response id. */ - private int mResponseId; - - /** - * Constructor. - * @param raw raw data - */ - public HitoeDevice(final String raw) { - setData(raw); - String[] dataList = HitoeConstants.AVAILABLE_EX_DATA_STR.split("\n"); - for (int i = 0; i < dataList.length; i++) { - mAvailableExDataList.add(dataList[i]); - } - } - /** - * Get Device type. - * @return Device type - */ - public String getType() { - return mType; - } - - /** - * Set Device Type. - * @param type Device Type - */ - public void setType(final String type) { - mType = type; - } - - /** - * Get device id. - * @return device id - */ - public String getId() { - return mId; - } - - /** - * Set device id. - * @param id device id - */ - public void setId(final String id) { - mId = id; - } - - /** - * Get device Name. - * @return device name - */ - public String getName() { - return mName; - } - - /** - * Set device name. - * @param name device name - */ - public void setName(final String name) { - mName = name; - } - - /** - * Get pin code. - * @return pin code - */ - public String getPinCode() { - return mPin; - } - - /** - * Set pin code. - * @param pin pin code - */ - public void setPinCode(final String pin) { - mPin = pin; - } - - /** - * Get connect mode. - * @return connect mode - */ - public String getConnectMode() { return mConnectMode; } - - /** - * Set connect mdoe. - * @param connectMode connect mode - */ - public void setConnectMode(final String connectMode) { mConnectMode = connectMode; } - - /** - * Is register flag. - * @return register flag - */ - public boolean isRegisterFlag() { - return mRegisterFlag; - } - - /** - * Set register flag. - * @param registerFlag register flag - */ - public void setRegisterFlag(final boolean registerFlag) { - mRegisterFlag = registerFlag; - } - - /** - * Get Memory setting. - * @return memory setting - */ - public String getMemorySetting() { - return mMemorySetting; - } - - /** - * Set memory setting. - * @param memorySetting memory setting - */ - public void setMemorySetting(final String memorySetting) { - mMemorySetting = memorySetting; - } - - /** - * Get available raw data list. - * @return available raw data list - */ - public List getAvailableRawDataList() { - return mAvailableRawDataList; - } - - /** - * Set available raw data list. - * @param availableRawDataList available raw data list - */ - public void setAvailableRawDataList(final List availableRawDataList) { - mAvailableRawDataList = availableRawDataList; - } - - /** - * Get Available ba data list. - * @return available ba data list - */ - public List getAvailableBaDataList() { - return mAvailableBaDataList; - } - - /** - * Set available ba data list. - * @param availableBaDataList available ba data list - */ - public void setAvailableBaDataList(final List availableBaDataList) { - mAvailableBaDataList = availableBaDataList; - } - - /** - * Get available Ex data list. - * @return available ex data list - */ - public List getAvailableExDataList() { - return mAvailableExDataList; - } - - /** - * Set available ex data list. - * @param availableExDataList available ex data list - */ - public void setAvailableExDataList(final List availableExDataList) { - mAvailableExDataList = availableExDataList; - } - - /** - * Get session id. - * @return session id - */ - public String getSessionId() { - return mSessionId; - } - - /** - * Set session id. - * @param sessionId session id - */ - public void setSessionId(final String sessionId) { - mSessionId = sessionId; - } - - /** - * Get raw connection id. - * @return Raw connection id - */ - public String getRawConnectionId() { - return mRawConnectionId; - } - - /** - * Set raw connection id. - * @param rawConnectionId raw connection id - */ - public void setRawConnectionId(final String rawConnectionId) { - mRawConnectionId = rawConnectionId; - } - - /** - * Get ba connection id. - * @return ba connection id - */ - public String getBaConnectionId() { - return mBaConnectionId; - } - - /** - * Set ba connection id. - * @param baConnectionId ba connection id - */ - public void setBaConnectionId(final String baConnectionId) { - mBaConnectionId = baConnectionId; - } - - /** - * Get ex connection id. - * @return ex connection id - */ - public String getExConnectionId() { - return mExConnectionId; - } - - /** - * Set ex connection id. - * @param exConnectionId ex connection id - */ - public void setExConnectionId(final String exConnectionId) { - mExConnectionId = exConnectionId; - } - - /** - * Get Ex connection list. - * @return ex connection list - */ - public List getExConnectionList() { - return mExConnectionList; - } - - /** - * Set ex connection list. - * @param exConnectionList ex connection list - */ - public void setExConnectionList(final ArrayList exConnectionList) { - this.mExConnectionList = exConnectionList; - } - /** - * Get Response id. - * @return response id - */ - public int getResponseId() { - return mResponseId; - } - - /** - * Set Response id. - * @param responseId response id - */ - public void setResponseId(final int responseId) { - mResponseId = responseId; - } - - - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("{\"type\": ").append(mType).append(", "); - builder.append("\"name\": ").append(mName).append(", "); - builder.append("\"id\": ").append(mId).append(", "); - builder.append("\"address\": ").append(mPin).append(", "); - builder.append("\"connectMode\": ").append(mConnectMode).append(", "); - builder.append("\"registerFlag\": ").append(mRegisterFlag).append("} "); - return builder.toString(); - } - - /** - * Set Data. - * @param val raw data - */ - public void setData(final String val) { - - if (val == null) { - - return; - } - - String[] list = val.split(HitoeConstants.COMMA, -1); - this.mType = list[0]; - this.mName = list[1]; - this.mId = list[2]; - this.mConnectMode = list[3]; - if (list[4].equals("memory_setting")) { - this.mMemorySetting = list[4]; - } - } - - - /** - * Set available data. - * @param availableData available data - */ - public void setAvailableData(final String availableData) { - - String[] dataList = availableData.split(HitoeConstants.BR); - for (int i = 0; i < dataList.length; i++) { - if (dataList[i].startsWith(HitoeConstants.RAW_DATA_PREFFIX)) { - - if (!mAvailableRawDataList.contains(dataList[i])) { - - mAvailableRawDataList.add(dataList[i]); - } - } else if (dataList[i].startsWith(HitoeConstants.BA_DATA_PREFFIX)) { - - if (!mAvailableBaDataList.contains(dataList[i])) { - - mAvailableBaDataList.add(dataList[i]); - } - } else if (dataList[i].startsWith(HitoeConstants.EX_DATA_PREFFIX)) { - - if (!mAvailableExDataList.contains(dataList[i])) { - - mAvailableExDataList.add(dataList[i]); - } - } - } - } - - /** - * Set Connection Id. - * @param connectionId connection id - */ - public void setConnectionId(final String connectionId) { - - if (connectionId.startsWith(HitoeConstants.RAW_CONNECTION_PREFFIX)) { - - mRawConnectionId = connectionId; - } else if (connectionId.startsWith(HitoeConstants.BA_CONNECTION_PREFFIX)) { - - mBaConnectionId = connectionId; - } else if (connectionId.startsWith(HitoeConstants.EX_CONNECTION_PREFFIX)) { - getExConnectionList().add(connectionId); - } - } - - - /** - * Remove connection id. - * @param connectionId connection id - */ - public void removeConnectionId(final String connectionId) { - - if (mRawConnectionId != null && mRawConnectionId.equals(connectionId)) { - - mRawConnectionId = null; - } else if (mBaConnectionId != null && mBaConnectionId.equals(connectionId)) { - - mBaConnectionId = null; - } else if (mExConnectionList != null && mExConnectionList.contains(connectionId)) { - - mExConnectionList.remove(connectionId); - } - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HitoeManager.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HitoeManager.java deleted file mode 100644 index c0dbd6daa0..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/HitoeManager.java +++ /dev/null @@ -1,1760 +0,0 @@ -/* - HitoeManager - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.data; - -import android.bluetooth.BluetoothAdapter; -import android.bluetooth.BluetoothDevice; -import android.content.Context; -import android.os.Handler; -import android.util.Log; -import android.widget.Toast; - -import org.deviceconnect.android.deviceplugin.hitoe.BuildConfig; -import org.deviceconnect.android.deviceplugin.hitoe.util.RawDataParseUtils; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.locks.ReentrantLock; - -import jp.ne.docomo.smt.dev.hitoetransmitter.HitoeSdkAPI; -import jp.ne.docomo.smt.dev.hitoetransmitter.sdk.HitoeSdkAPIImpl; - -/** - * This class manages a Hitoe devices. - * @author NTT DOCOMO, INC. - */ -public class HitoeManager { - /** Log's tag name. */ - private static final String TAG = "HitoeManager"; - - /** - * Instance of ScheduledExecutorService. - */ - private ScheduledExecutorService mExecutor = Executors.newSingleThreadScheduledExecutor(); - - /** - * ScheduledFuture of scan timer. - */ - private ScheduledFuture mScanTimerFuture; - - /** - * Defines a delay 1 second at first execution. - */ - private static final long SCAN_FIRST_WAIT_PERIOD = 30 * 1000; - - /** - * Defines a period 10 seconds between successive executions. - */ - private static final long SCAN_WAIT_PERIOD = 20 * 1000; - - /** - * Stops scanning after 1 second. - */ - private static final long SCAN_PERIOD = 2000; - /** Wait 5000 msec. */ - private static final int CONNECTING_RETRY_WAIT = 500; - /** Connecting retry count. */ - private static final int CONNECTING_RETRY_COUNT = 10; - /** Device scanning flag. */ - private boolean mScanning; - /** Device scanning running. */ - private boolean mIsCallbackRunning; - - /** Device scan timestamp. */ - private final Map mNowTimestamps; - /** Handler. */ - private Handler mHandler = new Handler(); - - /** - * Application context. - */ - private Context mContext; - /** - * Instance of {@link HitoeDBHelper}. - */ - private HitoeDBHelper mDBHelper; - /** - * Hitoe SDK API. - */ - private HitoeSdkAPI mHitoeSdkAPI; - - // ------------------------------------ - // Listener. - // ------------------------------------ - - /** Hitoe Discovery Listener. */ - private List mConnectionListeners; - /** Notify HeartRate data listener. */ - private OnHitoeHeartRateEventListener mHeartRataListener; - /** Notify Accleration data listener. */ - private OnHitoeDeviceOrientationEventListener mDeviceOrientationListener; - /** Notify ECG data listener. */ - private OnHitoeECGEventListener mECGListener; - /** Notify Pose Estimation data listener. */ - private OnHitoePoseEstimationEventListener mPoseEstimationListener; - /** Notify Stress Estimation data listener. */ - private OnHitoeStressEstimationEventListener mStressEstimationListener; - /** Notify Walk state data listener. */ - private OnHitoeWalkStateEventListener mWalkStateListener; - - - /** Registered Hitoe devices .*/ - private final List mRegisterDevices; - - /** HeartRate Datas. */ - private final Map mHRData; - /** Acceleration Datas. */ - private final Map mAccelData; - /** ECG Datas. */ - private final Map mECGData; - /** Pose Estimation datas. */ - private final Map mPoseEstimationData; - /** Stress Estimation datas. */ - private final Map mStressEstimationData; - /** Walk State datas. */ - private final Map mWalkStateData; - - /** Save data for extended analysis. */ - private ArrayList mListForEx; - /** Lock for the extension analysis. */ - private ReentrantLock mLockForEx; - /** Expanded analysis flag. */ - private boolean mFlagForEx; - /** Acceleration's interval. */ - private long mInterval = 0; - /** Temporary storage data for pose estimation. */ - private ArrayList mListForPosture; - /** Lock for pose estimation. */ - private ReentrantLock mLockForPosture; - /** Temporary storage data for walking state estimation. */ - private ArrayList mListForWalk; - /** Lock for walking state estimation. */ - private ReentrantLock mLockForWalk; - /** Temporary storage data for the left and right balance estimation. */ - private ArrayList mListForLRBalance; - /** Lock for the left and right balance estimation. */ - private ReentrantLock mLockForLRBalance; - /** Hitoe API Callback. */ - HitoeSdkAPI.APICallback mAPICallback = (apiId, responseId, responseString) -> { - - final StringBuilder messageTextBuilder = new StringBuilder(); - - if (BuildConfig.DEBUG) { - Log.d(TAG, "CbCallback:apiId=" + String.valueOf(apiId) + ",responseId=" - + String.valueOf(responseId) + ",resonseObject=" - + responseString.replace(HitoeConstants.BR, HitoeConstants.VB)); - } - switch (apiId) { - case HitoeConstants.API_ID_GET_AVAILABLE_SENSOR: - notifyDiscoveryHitoeDevice(responseId, responseString); - break; - case HitoeConstants.API_ID_CONNECT: - notifyConnectHitoeDevice(responseId, responseString); - break; - case HitoeConstants.API_ID_DISCONNECT: - // disconnect sensor - try{ - - mLockForEx.lock(); - - mListForEx.clear(); - mFlagForEx = false; - }finally { - - mLockForEx.unlock(); - } - break; - case HitoeConstants.API_ID_GET_AVAILABLE_DATA: - notifyAvailableData(responseId, responseString); - break; - case HitoeConstants.API_ID_ADD_RECIVER: - notifyAddReceiver(responseId, responseString); - break; - case HitoeConstants.API_ID_REMOVE_RECEIVER: - - notifyRemoveReceiver(responseId, responseString); - break; - case HitoeConstants.API_ID_GET_STATUS: - break; - default: - if (BuildConfig.DEBUG) { - Log.e(TAG, "etc state"); - } - break; - } - }; - - - - - /** - * Data receiver. - */ - HitoeSdkAPI.DataReceiverCallback mDataReceiverCallback = new HitoeSdkAPI.DataReceiverCallback() { - @Override - public void onDataReceive(final String connectionId, final int responseId, - final String dataKey, final String rawData) { - - int pos = getPosForConnectionId(connectionId); - if (pos == -1) { - if (BuildConfig.DEBUG) { - Log.d(TAG, "no connectionId"); - } - return; - } - HitoeDevice receiveDevice = mRegisterDevices.get(pos); - if (receiveDevice.getSessionId() == null) { - return; - } - - if (dataKey.equals("raw.ecg")) { - extractHealth(HeartData.HeartRateType.ECG, rawData, receiveDevice); - } else if (dataKey.equals("raw.acc")) { - analyzeAccelerationData(rawData, receiveDevice); - AccelerationData currentAccel = mAccelData.get(receiveDevice); - if (currentAccel == null) { - currentAccel = new AccelerationData(); - } - currentAccel = RawDataParseUtils.parseAccelerationData(currentAccel, rawData); - mAccelData.put(receiveDevice, currentAccel); - } else if (dataKey.equals("raw.rri")) { - extractHealth(HeartData.HeartRateType.RRI, rawData, receiveDevice); - } else if (dataKey.equals("raw.bat")) { - extractBattery(rawData, receiveDevice); - } else if (dataKey.equals("raw.hr")) { - extractHealth(HeartData.HeartRateType.Rate, rawData, receiveDevice); - } else if (dataKey.equals("ba.freq_domain")) { - parseFreqDomain(receiveDevice, rawData); - } else if (dataKey.equals("ex.stress")) { - StressEstimationData stress = RawDataParseUtils.parseStressEstimation(rawData); - mStressEstimationData.put(receiveDevice, stress); - } else if (dataKey.equals("ex.posture")) { - PoseEstimationData pose = RawDataParseUtils.parsePoseEstimation(rawData); - mPoseEstimationData.put(receiveDevice, pose); - } else if (dataKey.equals("ex.walk")) { - WalkStateData walk = mWalkStateData.get(receiveDevice); - if (walk == null) { - walk = new WalkStateData(); - } - walk = RawDataParseUtils.parseWalkState(walk, rawData); - mWalkStateData.put(receiveDevice, walk); - } else if (dataKey.equals("ex.lr_balance")) { - WalkStateData walk = mWalkStateData.get(receiveDevice); - if (walk == null) { - walk = new WalkStateData(); - } - walk = RawDataParseUtils.parseWalkStateForBalance(walk, rawData); - mWalkStateData.put(receiveDevice, walk); - } - - if (dataKey.startsWith(HitoeConstants.EX_DATA_PREFFIX)) { - // Expanded analysis discard the connection - receiveDevice.removeConnectionId(connectionId); - } else { - // Perform any extension - //Do not run if it is already running - TempExData exData = null; - try { - - mLockForEx.lock(); - - if (!mFlagForEx && mListForEx.size() > 0) { - mFlagForEx = true; - exData = mListForEx.get(0); - mListForEx.remove(0); - } - } finally { - - mLockForEx.unlock(); - } - if (exData != null) { - addExReceiverProcess(pos, exData); - } - } - - notifyListeners(receiveDevice); - } - }; - - - - - /** - * Constructor. - * - * @param context application context - */ - public HitoeManager(final Context context) { - mContext = context; - mDBHelper = new HitoeDBHelper(context); - mListForEx = new ArrayList<>(); - mLockForEx = new ReentrantLock(); - mRegisterDevices = Collections.synchronizedList( - new ArrayList()); - mHRData = new ConcurrentHashMap<>(); - mECGData = new ConcurrentHashMap<>(); - mPoseEstimationData = new ConcurrentHashMap<>(); - mStressEstimationData = new ConcurrentHashMap<>(); - mWalkStateData = new ConcurrentHashMap<>(); - mAccelData = new ConcurrentHashMap<>(); - mConnectionListeners = new ArrayList<>(); - mListForPosture = new ArrayList<>(); - mLockForPosture = new ReentrantLock(); - mListForWalk = new ArrayList<>(); - mLockForWalk = new ReentrantLock(); - mListForLRBalance = new ArrayList<>(); - mLockForLRBalance = new ReentrantLock(); - mListForEx = new ArrayList<>(); - mLockForEx = new ReentrantLock(); - mNowTimestamps = new ConcurrentHashMap<>(); - mHitoeSdkAPI = HitoeSdkAPIImpl.getInstance(context); - mHitoeSdkAPI.setAPICallback(mAPICallback); - readHitoeDeviceForDB(); - - } - - // ------------------------------------ - // Public Method - // ------------------------------------ - /** - * Set Hitoe Connection Listener. - * @param l listener - */ - public void addHitoeConnectionListener(final OnHitoeConnectionListener l) { - mConnectionListeners.add(l); - } - - /** - * Remove Hitoe Connection listener. - * @param l connection listener - */ - public void removeHitoeConnectionListener(final OnHitoeConnectionListener l) { - mConnectionListeners.remove(l); - } - /** - * Set Hitoe HeartRate Listener. - * @param l listener - */ - public void setHitoeHeartRateEventListener(final OnHitoeHeartRateEventListener l) { - mHeartRataListener = l; - } - /** - * Set Hitoe Acceleration Listener. - * @param l listener - */ - public void setHitoeDeviceOrientationEventListener(final OnHitoeDeviceOrientationEventListener l) { - mDeviceOrientationListener = l; - } - - /** - * Set Hitoe ECG listener. - * @param l listener - */ - public void setHitoeECGEventListener(final OnHitoeECGEventListener l) { - mECGListener = l; - } - - /** - * Set Hitoe Pose Estimation listener. - * @param l listener - */ - public void setHitoePoseEstimationEventListener(final OnHitoePoseEstimationEventListener l) { - mPoseEstimationListener = l; - } - - /** - * Set Hitoe Stress Estimation listener. - * @param l listener - */ - public void setHitoeStressEstimationEventListener(final OnHitoeStressEstimationEventListener l) { - mStressEstimationListener = l; - } - - /** - * Set Hitoe Walk state listener. - * @param l listener - */ - public void setHitoeWalkStateEventListener(final OnHitoeWalkStateEventListener l) { - mWalkStateListener = l; - } - - /** - * Gets the list of BLE device that was registered to automatic connection. - * - * @return list of BLE device - */ - public List getRegisterDevices() { - return mRegisterDevices; - } - - /** - * Read device info. - */ - public void readHitoeDeviceForDB() { - List list = mDBHelper.getHitoeDevices(null); - for (int i = 0; i < list.size(); i++) { - HitoeDevice device = list.get(i); - if (mRegisterDevices.size() > 0) { - if (!containsDevice(device.getId())) { - mRegisterDevices.add(device); - } - } else { - mRegisterDevices.add(device); - } - } - } - - /** - * Get mRegisterDevice for service id. - * @param serviceId service Id - * @return Hitoe Device object - */ - public HitoeDevice getHitoeDeviceForServiceId(final String serviceId) { - for (int i = 0; i < mRegisterDevices.size(); i++) { - if (mRegisterDevices.get(i).getId() != null) { - if (mRegisterDevices.get(i).getId().equals(serviceId)) { - return mRegisterDevices.get(i); - } - } - } - return null; - } - /** - * Get HeartRateData. - * @param serviceId index id - * @return HeartRateData - */ - public HeartRateData getHeartRateData(final String serviceId) { - int pos = getPosForServiceId(serviceId); - if (pos == -1) { - return null; - } - return mHRData.get(mRegisterDevices.get(pos)); - } - /** - * Get ECG Data. - * @param serviceId index id - * @return ECGData - */ - public HeartRateData getECGData(final String serviceId) { - int pos = getPosForServiceId(serviceId); - if (pos == -1) { - return null; - } - return mECGData.get(mRegisterDevices.get(pos)); - } - /** - * Get Stress Estimation Data. - * @param serviceId index id - * @return StressEstimationData - */ - public StressEstimationData getStressEstimationData(final String serviceId) { - int pos = getPosForServiceId(serviceId); - if (pos == -1) { - return null; - } - return mStressEstimationData.get(mRegisterDevices.get(pos)); - } - /** - * Get Pose Estimation Data. - * @param serviceId index id - * @return Pose Estimation Data - */ - public PoseEstimationData getPoseEstimationData(final String serviceId) { - int pos = getPosForServiceId(serviceId); - if (pos == -1) { - return null; - } - return mPoseEstimationData.get(mRegisterDevices.get(pos)); - } - /** - * Get Walk State Data. - * @param serviceId index id - * @return Walk State data - */ - public WalkStateData getWalkStateData(final String serviceId) { - int pos = getPosForServiceId(serviceId); - if (pos == -1) { - return null; - } - return mWalkStateData.get(mRegisterDevices.get(pos)); - } - /** - * Get AccelerationData. - * @param serviceId index id - * @return AccelerationData - */ - public AccelerationData getAccelerationData(final String serviceId) { - int pos = getPosForServiceId(serviceId); - if (pos == -1) { - return null; - } - return mAccelData.get(mRegisterDevices.get(pos)); - } - - /** - * Stats the HitoeManager. - */ - public void start() { - synchronized (mRegisterDevices) { - for (int i = 0; i < mRegisterDevices.size(); i++) { - HitoeDevice device = mRegisterDevices.get(i); - if (device.isRegisterFlag()) { - connectHitoeDevice(device); - } - } - } - - } - /** - * Stops the HitoeManager. - */ - public void stop() { - for (int i = 0; i < mRegisterDevices.size(); i++) { - mHitoeSdkAPI.disconnect(mRegisterDevices.get(i).getSessionId()); - mRegisterDevices.get(i).setRegisterFlag(false); - mDBHelper.updateHitoeDevice(mRegisterDevices.get(i)); - mRegisterDevices.get(i).setSessionId(null); - } - scanHitoeDevice(false); - } - /** - * Discovery hitoe device. - */ - public void discoveryHitoeDevices() { - StringBuilder paramStringBuilder = new StringBuilder(); - paramStringBuilder.append("search_time=") - .append(String.valueOf(HitoeConstants.GET_AVAILABLE_SENSOR_PARAM_SEARCH_TIME)); - mHitoeSdkAPI.getAvailableSensor(HitoeConstants.GET_AVAILABLE_SENSOR_DEVICE_TYPE, paramStringBuilder.toString()); - - if (mRegisterDevices.size() > 0) { - for (OnHitoeConnectionListener l: mConnectionListeners) { - if (l != null) { - l.onDiscovery(mRegisterDevices); - } - } - } - } - - - /** - * Connect to Hitoe Device by address. - * - * @param device device for hitoe device - */ - public void connectHitoeDevice(final HitoeDevice device) { - mExecutor.submit(() -> { - if (device == null || device.getPinCode() == null) { - return; - } - - - StringBuilder paramBuilder = new StringBuilder(); - paramBuilder.append("disconnect_retry_time=" + HitoeConstants.CONNECT_DISCONNECT_RETRY_TIME); - if (paramBuilder.length() > 0) { - paramBuilder.append(HitoeConstants.BR); - } - paramBuilder.append("disconnect_retry_count=" + HitoeConstants.CONNECT_DISCONNECT_RETRY_COUNT); - if (paramBuilder.length() > 0) { - paramBuilder.append(HitoeConstants.BR); - } - paramBuilder.append("nopacket_retry_time=" + HitoeConstants.CONNECT_NOPACKET_RETRY_TIME); - if (paramBuilder.length() > 0) { - paramBuilder.append(HitoeConstants.BR); - } - paramBuilder.append("pincode="); - paramBuilder.append(device.getPinCode()); - String param = paramBuilder.toString(); - BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); - BluetoothDevice remoteDevice = adapter.getRemoteDevice(device.getId()); - if (remoteDevice.getName() == null) { - // If RemoteDevice is Null, Discovery process needs to be done once. - // Retry 10 times and continue processing when RemoteDevice is found. - discoveryHitoeDevices(); - int i = 0; - for (i = 0; i < CONNECTING_RETRY_COUNT; i++) { - try { - Thread.sleep(CONNECTING_RETRY_WAIT); - } catch (InterruptedException e) { - e.printStackTrace(); - } - remoteDevice = adapter.getRemoteDevice(device.getId()); - if (remoteDevice.getName() != null) { - break; - } - } - if (i == CONNECTING_RETRY_COUNT && remoteDevice.getName() == null) { - return; - } - } - mHitoeSdkAPI.connect(device.getType(), device.getId(), device.getConnectMode(), param); - device.setResponseId(HitoeConstants.RES_ID_SENSOR_CONNECT); - mDBHelper.addHitoeDevice(device); - mStressEstimationData.put(device, new StressEstimationData()); - for (int i = 0; i < mRegisterDevices.size(); i++) { - if (mRegisterDevices.get(i).getId().equals(device.getId())) { - mRegisterDevices.set(i, device); - } else { - - mRegisterDevices.get(i).setResponseId(HitoeConstants.RES_ID_SENSOR_DISCONECT_NOTICE); - } - } - }); - } - - /** - * Disconnect hitoe device. - * @param device hitoe device - */ - public void disconnectHitoeDevice(final HitoeDevice device) { - mExecutor.submit(() -> { - HitoeDevice current = getHitoeDeviceForServiceId(device.getId()); - int res = mHitoeSdkAPI.disconnect(current.getSessionId()); - current.setRegisterFlag(false); - current.setSessionId(null); - mDBHelper.updateHitoeDevice(current); - if (!existConnected()) { - scanHitoeDevice(false); - } - for (OnHitoeConnectionListener l: mConnectionListeners) { - if (l != null) { - l.onDisconnected(res, device); - } - } - }); - - } - - /** - * Delete hitoe device info for db. - * @param device hitoe device - */ - public void deleteHitoeDevice(final HitoeDevice device) { - - mDBHelper.removeHitoeDevice(device); - - for (int i = 0; i < mRegisterDevices.size(); i++) { - if (mRegisterDevices.get(i).getId().equals(device.getId())) { - HitoeDevice d = mRegisterDevices.remove(i); - for (OnHitoeConnectionListener l: mConnectionListeners) { - if (l != null) { - l.onDeleted(d); - } - } - } - } - } - /** - * Tests whether this mConnectedDevices contains the address. - * @param id address will be checked - * @return true if address is an element of mConnectedDevices, false otherwise - */ - public boolean containConnectedHitoeDevice(final String id) { - synchronized (mRegisterDevices) { - for (HitoeDevice d : mRegisterDevices) { - if (d.getId().equals(id) && d.getSessionId() != null) { - return true; - } - } - } - return false; - } - - // Private method - // ------------------------------------ - // Notifyメソッド群 - // ------------------------------------ - - /** - * Notify for found Hitoe Devices. - * @param responseId Response id - * @param responseString Response String - */ - private void notifyDiscoveryHitoeDevice(final int responseId, final String responseString) { - if (responseId != HitoeConstants.RES_ID_SUCCESS || responseString == null) { - return; - } - - String[] sensorList = responseString.split(HitoeConstants.BR, -1); - List pins = mDBHelper.getHitoeDevices(null); - for (int i = 0; i < sensorList.length; i++) { - String sensorStr = sensorList[i].trim(); - if (sensorStr.length() == 0) { - continue; - } - if (!sensorStr.contains("memory_setting") && !sensorStr.contains("memory_get")) { - HitoeDevice device = new HitoeDevice(sensorStr); - if (mRegisterDevices.size() == 0) { - mRegisterDevices.add(device); - } - if (!containsDevice(device.getId())) { - mRegisterDevices.add(device); - } - } - } - for (HitoeDevice pin : pins) { - for (HitoeDevice register: mRegisterDevices) { - if (register.getId().equals(pin.getId())) { - register.setPinCode(pin.getPinCode()); - register.setRegisterFlag(pin.isRegisterFlag()); - } - } - } - for (OnHitoeConnectionListener l: mConnectionListeners) { - if (l != null) { - l.onDiscovery(mRegisterDevices); - } - } - } - - /** - * Notify for connected hitoe devices. - * @param responseId Response id - * @param responseString Response string - */ - private void notifyConnectHitoeDevice(final int responseId, final String responseString) { - int pos = getCurrentPos(responseId); - if (pos == -1) { - for (OnHitoeConnectionListener l: mConnectionListeners) { - if (l != null) { - l.onConnectFailed(null); - } - } - return; - } - if (responseId == HitoeConstants.RES_ID_SENSOR_DISCONECT_NOTICE) { - // 切断の場合もフラグを落とす - try{ - - mLockForEx.lock(); - - mListForEx.clear(); - mFlagForEx = false; - }finally { - - mLockForEx.unlock(); - } - for (OnHitoeConnectionListener l: mConnectionListeners) { - if (l != null) { - - l.onConnectFailed(mRegisterDevices.get(pos)); - } - } - return; - } else if (responseId == HitoeConstants.RES_ID_SENSOR_CONNECT_NOTICE) { - for (OnHitoeConnectionListener l: mConnectionListeners) { - l.onConnected(mRegisterDevices.get(pos)); - } - return; - } else if (responseId != HitoeConstants.RES_ID_SENSOR_CONNECT) { - for (OnHitoeConnectionListener l: mConnectionListeners) { - if (l != null) { - - l.onConnectFailed(mRegisterDevices.get(pos)); - } - } - return; - } - mRegisterDevices.get(pos).setSessionId(responseString); - mRegisterDevices.get(pos).setRegisterFlag(true); - mDBHelper.updateHitoeDevice(mRegisterDevices.get(pos)); - mHitoeSdkAPI.getAvailableData(mRegisterDevices.get(pos).getSessionId()); - mRegisterDevices.get(pos).setResponseId(HitoeConstants.RES_ID_SUCCESS); - for (OnHitoeConnectionListener l: mConnectionListeners) { - if (l != null) { - l.onConnected(mRegisterDevices.get(pos)); - } - } - } - - /** - * Notify AvailableData. - * @param responseId response id - * @param responseString Response string - */ - private void notifyAvailableData(final int responseId, final String responseString) { - if (responseId != HitoeConstants.RES_ID_SUCCESS || responseString == null) { - return; - } - int pos = getCurrentPos(responseId); - if (pos == -1) { - return; - } - mRegisterDevices.get(pos).setAvailableData(responseString); - List keyList = mRegisterDevices.get(pos).getAvailableRawDataList(); - - StringBuilder paramStringBuilder = new StringBuilder(); - String[] keys = new String[keyList.size()]; - String paramString; - - for (int i = 0; i < keyList.size(); i++) { - - keys[i] = keyList.get(i); - - if (keyList.get(i).equals("raw.ecg")) { - - if (paramStringBuilder.lastIndexOf(HitoeConstants.BR) != paramStringBuilder.length() - 1) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("raw.ecg_interval=") - .append(String.valueOf(HitoeConstants.ADD_RECEIVER_PARAM_ECG_SAMPLING_INTERVAL)); - } else if (keyList.get(i).equals("raw.acc")) { - - if (paramStringBuilder.lastIndexOf(HitoeConstants.BR) != paramStringBuilder.length() - 1) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("raw.acc_interval=") - .append(String.valueOf(HitoeConstants.ADD_RECEIVER_PARAM_ACC_SAMPLING_INTERVAL)); - } else if (keyList.get(i).equals("raw.rri")) { - - if (paramStringBuilder.lastIndexOf(HitoeConstants.BR) != paramStringBuilder.length() - 1) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("raw.rri_interval=") - .append(String.valueOf(HitoeConstants.ADD_RECEIVER_PARAM_RRI_SAMPLING_INTERVAL)); - } else if (keyList.get(i).equals("raw.hr")) { - - if (paramStringBuilder.lastIndexOf(HitoeConstants.BR) != paramStringBuilder.length() - 1) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("raw.hr_interval=") - .append(String.valueOf(HitoeConstants.ADD_RECEIVER_PARAM_HR_SAMPLING_INTERVAL)); - } else if (keyList.get(i).equals("raw.bat")) { - - if (paramStringBuilder.lastIndexOf(HitoeConstants.BR) != paramStringBuilder.length() - 1) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("raw.bat_interval=") - .append(String.valueOf(HitoeConstants.ADD_RECEIVER_PARAM_BAT_SAMPLING_INTERVAL)); - } - } - - paramString = paramStringBuilder.toString(); - mHitoeSdkAPI.addReceiver(mRegisterDevices.get(pos).getSessionId(), - keys, mDataReceiverCallback, paramString, null); - scanHitoeDevice(true); - } - - /** - * Notify add receiver. - * @param responseId response id - * @param responseString response string - */ - private void notifyAddReceiver(final int responseId, final String responseString) { - if (responseId != HitoeConstants.RES_ID_SUCCESS || responseString == null) { - mFlagForEx = false; - return; - } - int pos = getCurrentPos(responseId); - if (pos == -1) { - return; - } - mRegisterDevices.get(pos).setConnectionId(responseString); - if (responseString.startsWith(HitoeConstants.RAW_CONNECTION_PREFFIX)) { - addBaReceiverProcess(pos); - } else { - TempExData exData = null; - try { - mLockForEx.lock(); - - if (mListForEx.size() > 0) { - exData = mListForEx.get(0); - mListForEx.remove(0); - } else { - mFlagForEx = false; - } - - } finally { - - mLockForEx.unlock(); - } - if (exData != null) { - addExReceiverProcess(pos, exData); - } - } - } - - /** - * Notify Remove receiver. - * @param responseId response id - * @param responseString response string - */ - private void notifyRemoveReceiver(final int responseId, final String responseString) { - if (responseId != HitoeConstants.RES_ID_SUCCESS || responseString == null) { - return; - } - int pos = getCurrentPos(responseId); - if (pos == -1) { - return; - } - mRegisterDevices.get(pos).setRegisterFlag(false); - mRegisterDevices.get(pos).removeConnectionId(responseString); - mDBHelper.updateHitoeDevice(mRegisterDevices.get(pos)); - - if (responseString.startsWith(HitoeConstants.BA_CONNECTION_PREFFIX)) { - removeRawReceiverProcess(mRegisterDevices.get(pos).getRawConnectionId()); - } else if (responseString.startsWith(HitoeConstants.RAW_CONNECTION_PREFFIX)) { - disconnectProcess(pos); - } - } - - /** - * Notify Listeners. - * @param receiveDevice now receive device - */ - private void notifyListeners(final HitoeDevice receiveDevice) { - if (mHeartRataListener != null) { - mHeartRataListener.onReceivedData(receiveDevice, mHRData.get(receiveDevice)); - } - if (mECGListener != null) { - mECGListener.onReceivedData(receiveDevice, mHRData.get(receiveDevice)); - } - if (mPoseEstimationListener != null) { - mPoseEstimationListener.onReceivedData(receiveDevice, mPoseEstimationData.get(receiveDevice)); - } - if (mStressEstimationListener != null) { - mStressEstimationListener.onReceivedData(receiveDevice, mStressEstimationData.get(receiveDevice)); - } - if (mWalkStateListener != null) { - mWalkStateListener.onReceivedData(receiveDevice, mWalkStateData.get(receiveDevice)); - } - if (mDeviceOrientationListener != null) { - mDeviceOrientationListener.onReceivedData(receiveDevice, mAccelData.get(receiveDevice)); - } - if (mECGListener != null) { - mECGListener.onReceivedData(receiveDevice, mECGData.get(receiveDevice)); - } - if (mStressEstimationListener != null) { - mStressEstimationListener.onReceivedData(receiveDevice, mStressEstimationData.get(receiveDevice)); - } - if (mPoseEstimationListener != null) { - mPoseEstimationListener.onReceivedData(receiveDevice, mPoseEstimationData.get(receiveDevice)); - } - } - - - - - /** - * Add ba Receiver process. - * @param pos device pos - */ - private void addBaReceiverProcess(final int pos) { - List keyList = mRegisterDevices.get(pos).getAvailableBaDataList(); - - StringBuilder paramStringBuilder = new StringBuilder(); - String[] keys = new String[keyList.size()]; - String paramString; - - if (keyList.size() == 0) { - return; - } - - for (int i = 0; i < keyList.size(); i++) { - - keys[i] = keyList.get(i); - - if (keyList.get(i).equals("ba.extracted_rri")) { - - if (paramStringBuilder.indexOf("ba.sampling_interval") == -1) { - if (paramStringBuilder.length() > 0 - && paramStringBuilder.lastIndexOf(HitoeConstants.BR) != paramStringBuilder.length() - 1) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ba.sampling_interval=") - .append(String.valueOf(HitoeConstants.ADD_RECEIVER_PARAM_BA_SAMPLING_INTERVAL)); - } - if (paramStringBuilder.length() > 0 - && paramStringBuilder.lastIndexOf(HitoeConstants.BR) != paramStringBuilder.length() - 1) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ba.ecg_threshhold=") - .append(String.valueOf(HitoeConstants.ADD_RECEIVER_PARAM_BA_ECG_THRESHHOLD)); - if (paramStringBuilder.length() > 0 - && paramStringBuilder.lastIndexOf(HitoeConstants.BR) != paramStringBuilder.length() - 1) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ba.ecg_skip_count=") - .append(String.valueOf(HitoeConstants.ADD_RECEIVER_PARAM_BA_SKIP_COUNT)); - - } else if (keyList.get(i).equals("ba.cleaned_rri")) { - - if (paramStringBuilder.indexOf("ba.sampling_interval") == -1) { - if (paramStringBuilder.length() > 0 - && paramStringBuilder.lastIndexOf(HitoeConstants.BR) != paramStringBuilder.length() - 1) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ba.sampling_interval=") - .append(String.valueOf(HitoeConstants.ADD_RECEIVER_PARAM_BA_SAMPLING_INTERVAL)); - } - if (paramStringBuilder.length() > 0 - && paramStringBuilder.lastIndexOf(HitoeConstants.BR) != paramStringBuilder.length() - 1) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ba.rri_min=") - .append(String.valueOf(HitoeConstants.ADD_RECEIVER_PARAM_BA_RRI_MIN)); - if (paramStringBuilder.length() > 0 - && paramStringBuilder.lastIndexOf(HitoeConstants.BR) != paramStringBuilder.length() - 1) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ba.rri_max=") - .append(String.valueOf(HitoeConstants.ADD_RECEIVER_PARAM_BA_RRI_MAX)); - if (paramStringBuilder.length() > 0 - && paramStringBuilder.lastIndexOf(HitoeConstants.BR) != paramStringBuilder.length() - 1) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ba.sample_count=") - .append(String.valueOf(HitoeConstants.ADD_RECEIVER_PARAM_BA_SAMPLE_COUNT)); - if (paramStringBuilder.length() > 0 - && paramStringBuilder.lastIndexOf(HitoeConstants.BR) != paramStringBuilder.length() - 1) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ba.rri_input=") - .append(String.valueOf(HitoeConstants.ADD_RECEIVER_PARAM_BA_RRI_INPUT)); - } else if (keyList.get(i).equals("ba.interpolated_rri")) { - - if (paramStringBuilder.indexOf("ba.freq_sampling_interval") == -1) { - if (paramStringBuilder.length() > 0 - && paramStringBuilder.lastIndexOf(HitoeConstants.BR) != paramStringBuilder.length() - 1) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ba.freq_sampling_interval=") - .append(String.valueOf(HitoeConstants.ADD_RECEIVER_PARAM_BA_FREQ_SAMPLING_INTERVAL)); - } - if (paramStringBuilder.indexOf("ba.freq_sampling_window") == -1) { - if (paramStringBuilder.length() > 0 - && paramStringBuilder.lastIndexOf(HitoeConstants.BR) != paramStringBuilder.length() - 1) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ba.freq_sampling_window=") - .append(String.valueOf(HitoeConstants.ADD_RECEIVER_PARAM_BA_FREQ_SAMPLING_WINDOW)); - } - if (paramStringBuilder.indexOf("ba.rri_sampling_rate") == -1) { - if (paramStringBuilder.length() > 0 - && paramStringBuilder.lastIndexOf(HitoeConstants.BR) != paramStringBuilder.length() - 1) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ba.rri_sampling_rate=") - .append(String.valueOf(HitoeConstants.ADD_RECEIVER_PARAM_BA_RRI_SAMPLING_RATE)); - } - } else if (keyList.get(i).equals("ba.freq_domain")) { - - if (paramStringBuilder.indexOf("ba.freq_sampling_interval") == -1) { - if (paramStringBuilder.length() > 0 - && paramStringBuilder.lastIndexOf(HitoeConstants.BR) != paramStringBuilder.length() - 1) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ba.freq_sampling_interval=") - .append(String.valueOf(HitoeConstants.ADD_RECEIVER_PARAM_BA_FREQ_SAMPLING_INTERVAL)); - } - if (paramStringBuilder.indexOf("ba.freq_sampling_window") == -1) { - if (paramStringBuilder.length() > 0 - && paramStringBuilder.lastIndexOf(HitoeConstants.BR) != paramStringBuilder.length() - 1) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ba.freq_sampling_window=") - .append(String.valueOf(HitoeConstants.ADD_RECEIVER_PARAM_BA_FREQ_SAMPLING_WINDOW)); - } - if (paramStringBuilder.indexOf("ba.rri_sampling_rate") == -1) { - if (paramStringBuilder.length() > 0 - && paramStringBuilder.lastIndexOf(HitoeConstants.BR) != paramStringBuilder.length() - 1) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ba.rri_sampling_rate=") - .append(String.valueOf(HitoeConstants.ADD_RECEIVER_PARAM_BA_RRI_SAMPLING_RATE)); - } - } else if (keyList.get(i).equals("ba.time_domain")) { - if (paramStringBuilder.length() > 0 - && paramStringBuilder.lastIndexOf(HitoeConstants.BR) != paramStringBuilder.length() - 1) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ba.time_sampling_interval=") - .append(String.valueOf(HitoeConstants.ADD_RECEIVER_PARAM_BA_TIME_SAMPLING_INTERVAL)); - if (paramStringBuilder.length() > 0 - && paramStringBuilder.lastIndexOf(HitoeConstants.BR) != paramStringBuilder.length() - 1) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ba.time_sampling_window=") - .append(String.valueOf(HitoeConstants.ADD_RECEIVER_PARAM_BA_TIME_SAMPLING_WINDOW)); - } - } - - paramString = paramStringBuilder.toString(); - - int resId = mHitoeSdkAPI.addReceiver(mRegisterDevices.get(pos).getSessionId(), - keys, mDataReceiverCallback, paramString, null); - mRegisterDevices.get(pos).setResponseId(resId); - } - - /** - * Register Ex receiver. - * @param pos device pos - * @param exData ex data - */ - private void addExReceiverProcess(final int pos, final TempExData exData) { - - String keyString = exData.getKey(); - ArrayList dataList = exData.getDataList(); - - if (!mRegisterDevices.get(pos).getAvailableExDataList().contains(keyString)) { - - try { - mLockForEx.lock(); - mFlagForEx = false; - - } finally { - - mLockForEx.unlock(); - } - return; - } - - int responseId; - - String[] keys = new String[1]; - keys[0] = keyString; - - StringBuilder paramStringBuilder = new StringBuilder(); - StringBuilder dataStringBuilder = new StringBuilder(); - String paramString; - String dataString; - - for (int i = 0; i < dataList.size(); i++) { - - if (dataStringBuilder.length() > 0) { - - dataStringBuilder.append(HitoeConstants.BR); - } - dataStringBuilder.append(dataList.get(i)); - } - if (keyString.equals("ex.posture")) { - - if (paramStringBuilder.length() > 0) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ex.acc_axis_xyz=") - .append(HitoeConstants.ADD_RECEIVER_PARAM_EX_ACC_AXIS_XYZ); - if (paramStringBuilder.length() > 0) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ex.posture_window=") - .append(HitoeConstants.ADD_RECEIVER_PARAM_EX_POSTURE_WINDOW); - } else if (keyString.equals("ex.walk")) { - if (paramStringBuilder.length() > 0) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ex.acc_axis_xyz=") - .append(HitoeConstants.ADD_RECEIVER_PARAM_EX_ACC_AXIS_XYZ); - if (paramStringBuilder.length() > 0) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ex.walk_stride=") - .append(HitoeConstants.ADD_RECEIVER_PARAM_EX_WALK_STRIDE); - if (paramStringBuilder.length() > 0) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ex.run_stride_cof=") - .append(HitoeConstants.ADD_RECEIVER_PARAM_EX_RUN_STRIDE_COF); - if (paramStringBuilder.length() > 0) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ex.run_stride_int=") - .append(HitoeConstants.ADD_RECEIVER_PARAM_EX_RUN_STRIDE_INT); - } else if (keyString.equals("ex.lr_balance")) { - - if (paramStringBuilder.length() > 0) { - - paramStringBuilder.append(HitoeConstants.BR); - } - paramStringBuilder.append("ex.acc_axis_xyz=") - .append(HitoeConstants.ADD_RECEIVER_PARAM_EX_ACC_AXIS_XYZ); - } - - paramString = paramStringBuilder.toString(); - dataString = dataStringBuilder.toString(); - mHitoeSdkAPI.removeReceiver(null); - responseId = mHitoeSdkAPI.addReceiver(null, keys, mDataReceiverCallback, paramString, dataString); - if (responseId != HitoeConstants.RES_ID_SUCCESS) { - try { - mLockForEx.lock(); - mFlagForEx = false; - - } finally { - - mLockForEx.unlock(); - } - } - } - - /** - * Remove raw receiver process. - * @param rawConnectionId raw connection id - */ - private void removeRawReceiverProcess(final String rawConnectionId) { - if (rawConnectionId == null) { - return; - } - mHitoeSdkAPI.removeReceiver(rawConnectionId); - } - - /** - * Disconnect Hitoe device. - * @param pos hitoe devie position - */ - private void disconnectProcess(final int pos) { - if (pos == -1) { - return; - } - HitoeDevice device = mRegisterDevices.get(pos); - - if (device.getSessionId() == null) { - return; - } - mRegisterDevices.get(pos).setSessionId(null); - mRegisterDevices.get(pos).setRegisterFlag(false); - mDBHelper.updateHitoeDevice(mRegisterDevices.get(pos)); - mHitoeSdkAPI.disconnect(device.getSessionId()); - if (mRegisterDevices.size() == 0) { - scanHitoeDevice(false); - } - } - - /** - * Get Current register device. - * @param responseId current response id - * @return current register pos - */ - private int getCurrentPos(final int responseId) { - int pos = -1; - - for (int i = 0; i < mRegisterDevices.size(); i++) { - - if (mRegisterDevices.get(i).getResponseId() == responseId) { - pos = i; - break; - } - } - - return pos; - } - - /** - * Is exist register device. - * @param id service id - * @return true:exist false: non exist - */ - private boolean containsDevice(final String id) { - boolean isRegister = false; - for (int i = 0; i < mRegisterDevices.size(); i++) { - if (mRegisterDevices.get(i).getId().equals(id)) { - isRegister = true; - } - } - return isRegister; - } - - /** - * Get mRegisterDevice's Position for Connection id. - * @param connectionId connection Id - * @return position - */ - private int getPosForConnectionId(final String connectionId) { - int pos = -1; - for (int i = 0; i < mRegisterDevices.size(); i++) { - if (mRegisterDevices.get(i).getRawConnectionId() != null) { - if (mRegisterDevices.get(i).getRawConnectionId().equals(connectionId)) { - pos = i; - break; - } - - } - if (mRegisterDevices.get(i).getBaConnectionId() != null) { - if (mRegisterDevices.get(i).getBaConnectionId().equals(connectionId)) { - pos = i; - break; - } - } - if (mRegisterDevices.get(i).getExConnectionList().size() > 0) { - for (int j = 0; j < mRegisterDevices.get(i).getExConnectionList().size(); j++) { - String exConnectionId = mRegisterDevices.get(i).getExConnectionList().get(j); - if (exConnectionId == null) { - continue; - } - if (exConnectionId.equals(connectionId)) { - pos = i; - break; - } - } - } - } - return pos; - } - - /** - * Get mRegisterDevice's Position for service id. - * @param serviceId service Id - * @return position - */ - private int getPosForServiceId(final String serviceId) { - int pos = -1; - for (int i = 0; i < mRegisterDevices.size(); i++) { - if (mRegisterDevices.get(i).getId() != null) { - if (mRegisterDevices.get(i).getId().equals(serviceId)) { - pos = i; - break; - } - } - } - return pos; - } - - /** - * 周波数領域特徴量データをパースする. - * @param receiveDevice ReceiveDevice - * @param data 周波数領域特徴量データ - */ - private void parseFreqDomain(final HitoeDevice receiveDevice, final String data) { - - String[] lineList = data.split(HitoeConstants.BR); - ArrayList stressInputList = new ArrayList(); - - if (receiveDevice.getAvailableExDataList().contains("ex.stress")) { - for (int i = 0; i < lineList.length; i++) { - stressInputList.add(lineList[i]); - } - - try { - mLockForEx.lock(); - mListForEx.add(new TempExData("ex.stress", stressInputList)); - } finally { - mLockForEx.unlock(); - } - } - } - /** - * Extract health data. - * @param type Health data type - * @param rawData raw data - * @param receiveDevice Hitoe device - */ - private void extractHealth(final HeartData.HeartRateType type, - final String rawData, final HitoeDevice receiveDevice) { - HeartRateData currentHeartRate = mHRData.get(receiveDevice); - if (currentHeartRate == null) { - currentHeartRate = new HeartRateData(); - } - if (type == HeartData.HeartRateType.Rate) { - HeartData heart = RawDataParseUtils.parseHeartRate(rawData); - currentHeartRate.setHeartRate(heart); - mHRData.put(receiveDevice, currentHeartRate); - } else if (type == HeartData.HeartRateType.RRI) { - HeartData rri = RawDataParseUtils.parseRRI(rawData); - currentHeartRate.setRRInterval(rri); - mHRData.put(receiveDevice, currentHeartRate); - } else if (type == HeartData.HeartRateType.EnergyExpended) { - HeartData energy = RawDataParseUtils.parseEnergyExpended(rawData); - currentHeartRate.setEnergyExpended(energy); - mHRData.put(receiveDevice, currentHeartRate); - } else if (type == HeartData.HeartRateType.ECG) { - HeartData ecg = RawDataParseUtils.parseECG(rawData); - currentHeartRate.setECG(ecg); - mECGData.put(receiveDevice, currentHeartRate); - - } - } - - /** - * Extract Battery data. - * @param rawData raw data - * @param receiveDevice Hitoe device - */ - private void extractBattery(final String rawData, final HitoeDevice receiveDevice) { - String[] lineList = rawData.split(HitoeConstants.BR); - String levelString = lineList[lineList.length - 1]; - String[] level = levelString.split(",", -1); - - TargetDeviceData current = RawDataParseUtils.parseDeviceData(receiveDevice, - Float.parseFloat(level[1])); - HeartRateData currentHeartRate = mHRData.get(receiveDevice); - if (currentHeartRate == null) { - currentHeartRate = new HeartRateData(); - } - currentHeartRate.setDevice(current); - mHRData.put(receiveDevice, currentHeartRate); - } - /** - * Analyze Acceleration data. - * Get Posture Data, Walk State data, LR Balance data. - * @param rawData raw data - * @param receiveDevice receive device - */ - private void analyzeAccelerationData(final String rawData, final HitoeDevice receiveDevice) { - String[] lineList = rawData.split(HitoeConstants.BR); - ArrayList postureInputList = new ArrayList(); - ArrayList walkInputList = new ArrayList(); - ArrayList lrBalanceInputList = new ArrayList(); - - ArrayList workList = new ArrayList(); - - for (int i = 0; i < lineList.length; i++) { - - if (receiveDevice.getAvailableExDataList().contains("ex.posture")) { - try { - mLockForPosture.lock(); - mListForPosture.add(lineList[i]); - if (mListForPosture.size() > HitoeConstants.EX_POSTURE_UNIT_NUM + 5) { - - for (int j = 0; j < HitoeConstants.EX_POSTURE_UNIT_NUM; j++) { - - postureInputList.add(mListForPosture.get(j)); - } - for (int j = HitoeConstants.EX_POSTURE_UNIT_NUM; - j < HitoeConstants.EX_POSTURE_UNIT_NUM + 5; j++) { - - postureInputList.add(mListForPosture.get(j)); - } - workList = new ArrayList<>(); - for (int j = 25; j < mListForPosture.size(); j++) { - - workList.add(mListForPosture.get(j)); - } - mListForPosture = workList; - } - } finally { - - mLockForPosture.unlock(); - } - if (postureInputList.size() > 0) { - - try { - mLockForEx.lock(); - mListForEx.add(new TempExData("ex.posture", postureInputList)); - - } finally { - mLockForEx.unlock(); - } - - postureInputList.clear(); - } - } - if (receiveDevice.getAvailableExDataList().contains("ex.walk")) { - try { - mLockForWalk.lock(); - mListForWalk.add(lineList[i]); - if (mListForWalk.size() > HitoeConstants.EX_WALK_UNIT_NUM + 5) { - - for (int j = 0; j < HitoeConstants.EX_WALK_UNIT_NUM; j++) { - - walkInputList.add(mListForWalk.get(j)); - } - for (int j = HitoeConstants.EX_WALK_UNIT_NUM; - j < HitoeConstants.EX_WALK_UNIT_NUM + 5; j++) { - - walkInputList.add(mListForWalk.get(j)); - } - - workList = new ArrayList<>(); - for (int j = 25; j < mListForWalk.size(); j++) { - - workList.add(mListForWalk.get(j)); - } - mListForWalk = workList; - } - } finally { - - mLockForWalk.unlock(); - } - if (walkInputList.size() > 0) { - - try { - mLockForEx.lock(); - mListForEx.add(new TempExData("ex.walk", walkInputList)); - } finally { - mLockForEx.unlock(); - } - - walkInputList.clear(); - } - } - if (receiveDevice.getAvailableExDataList().contains("ex.lr_balance")) { - try { - mLockForLRBalance.lock(); - mListForLRBalance.add(lineList[i]); - if (mListForLRBalance.size() > HitoeConstants.EX_LR_BALANCE_UNIT_NUM + 5) { - - for (int j = 0; j < HitoeConstants.EX_LR_BALANCE_UNIT_NUM; j++) { - - lrBalanceInputList.add(mListForLRBalance.get(j)); - } - for (int j = HitoeConstants.EX_LR_BALANCE_UNIT_NUM; - j < HitoeConstants.EX_LR_BALANCE_UNIT_NUM + 5; j++) { - - lrBalanceInputList.add(mListForLRBalance.get(j)); - } - workList = new ArrayList<>(); - for (int j = 25; j < mListForLRBalance.size(); j++) { - - workList.add(mListForLRBalance.get(j)); - } - mListForLRBalance = workList; - - } - } finally { - - mLockForLRBalance.unlock(); - } - if (lrBalanceInputList.size() > 0) { - - try { - mLockForEx.lock(); - mListForEx.add(new TempExData("ex.lr_balance", lrBalanceInputList)); - } finally { - mLockForEx.unlock(); - } - - lrBalanceInputList.clear(); - } - } - } - } - - /** - * Scan Hitoe device. - * @param enable scan flag - */ - private synchronized void scanHitoeDevice(final boolean enable) { - - - if (enable) { - if (mScanning || mScanTimerFuture != null) { - // scan have already started. - return; - } - mScanning = true; - mIsCallbackRunning = true; - mNowTimestamps.clear(); - for (HitoeDevice heart: mRegisterDevices) { - mNowTimestamps.put(heart, System.currentTimeMillis()); - } - mScanTimerFuture = mExecutor.scheduleAtFixedRate(() -> { - - for (HitoeDevice heart: mHRData.keySet()) { - HeartRateData data = mHRData.get(heart); - long timestamp = data.getHeartRate().getTimeStamp(); - long history = mNowTimestamps.get(heart); - if (BuildConfig.DEBUG) { - Log.d(TAG, "================>"); - Log.d(TAG, "timestamp:" + timestamp); - Log.d(TAG, "history:" + history); - Log.d(TAG, "CallbackRunning:" + mIsCallbackRunning); - Log.d(TAG, "isRegisterFlag:" + heart.isRegisterFlag()); - Log.d(TAG, "<================"); - } - if (mIsCallbackRunning && history == timestamp && heart.isRegisterFlag()) { - final String name = heart.getName(); - - mHandler.post(new Runnable() { - @Override - public void run() { - Toast.makeText(mContext, "Disconnect to " + name, - Toast.LENGTH_SHORT).show(); - } - }); - - mIsCallbackRunning = false; - } else if (!mIsCallbackRunning && history < timestamp && heart.isRegisterFlag()) { - final String name = heart.getName(); - mHandler.post(new Runnable() { - @Override - public void run() { - Toast.makeText(mContext, "Connect to " + name, - Toast.LENGTH_SHORT).show(); - } - }); - mIsCallbackRunning = true; - } - mNowTimestamps.put(heart, timestamp); - if (!mIsCallbackRunning && heart.isRegisterFlag()) { - connectHitoeDevice(heart); - } - } - }, SCAN_FIRST_WAIT_PERIOD, SCAN_WAIT_PERIOD, TimeUnit.MILLISECONDS); - } else { - mScanning = false; - cancelScanTimer(); - } - } - - /** - * Stopped the scan timer. - */ - private synchronized void cancelScanTimer() { - if (mScanTimerFuture != null) { - mScanTimerFuture.cancel(true); - mScanTimerFuture = null; - } - } - - /** - * Is Exist Disconnected. - * @return true:exist connect, false: non exist connect - */ - private boolean existConnected() { - int connectCount = 0; - for (int i = 0; i < mRegisterDevices.size(); i++) { - if (mRegisterDevices.get(i).isRegisterFlag()) { - connectCount++; - } - } - return (connectCount > 0); - } - // ------------------------------------ - // Listener. - // ------------------------------------ - - - /** - * Hitoe Device Discovery Listener. - */ - public interface OnHitoeConnectionListener { - /** - * Connected Device. - * @param device Hitoe device - */ - void onConnected(final HitoeDevice device); - - /** - * Connect fail device. - * @param device Hitoe device - */ - void onConnectFailed(final HitoeDevice device); - /** - * Discovery Listener. - * @param devices Found hitoe devices - */ - void onDiscovery(List devices); - - /** - * Disconnected Listener. - * @param res response id - * @param device disconnect device - */ - void onDisconnected(final int res, final HitoeDevice device); - - /** - * Deleted Listener. - * @param device delte device - */ - void onDeleted(final HitoeDevice device); - } - - /** - * Hitoe Device HeartRate Listener. - */ - public interface OnHitoeHeartRateEventListener { - /** - * Received data for Hitoe HeartRate data. - * @param device Hitoe device - * @param data HeartRate data - */ - void onReceivedData(final HitoeDevice device, final HeartRateData data); - } - - /** - * Hitoe Device ECG Listener. - */ - public interface OnHitoeECGEventListener { - /** - * Received data for Hitoe ECG Data. - * @param device Hitoe device - * @param data ECG data - */ - void onReceivedData(final HitoeDevice device, final HeartRateData data); - } - - /** - * Hitoe Device Pose Estimation Listener. - */ - public interface OnHitoePoseEstimationEventListener { - /** - * Received data for Hitoe Pose estimation data. - * @param device Hitoe device - * @param data pose estimation data - */ - void onReceivedData(final HitoeDevice device, final PoseEstimationData data); - } - - /** - * Hitoe Device Stress Estimation Listener. - */ - public interface OnHitoeStressEstimationEventListener { - /** - * Received data for Hitoe Stress Estimation data. - * @param device Hitoe device - * @param data stress estimation data - */ - void onReceivedData(final HitoeDevice device, final StressEstimationData data); - } - - /** - * Hitoe Device Walk State Listener. - */ - public interface OnHitoeWalkStateEventListener { - /** - * Received data for Hitoe walk state data. - * @param device Hitoe device - * @param data walk state - */ - void onReceivedData(final HitoeDevice device, final WalkStateData data); - } - - /** - * Hitoe Device Device Orientation Listener. - */ - public interface OnHitoeDeviceOrientationEventListener { - /** - * Received data for Hitoe device orientation data. - * @param device Hitoe device - * @param data device orientation - */ - void onReceivedData(final HitoeDevice device, final AccelerationData data); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/PoseEstimationData.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/PoseEstimationData.java deleted file mode 100644 index da930cc7de..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/PoseEstimationData.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - PoseEstimationData - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.data; - -import android.os.Bundle; - -import org.deviceconnect.android.profile.PoseEstimationProfile; -import org.deviceconnect.profile.PoseEstimationProfileConstants; - -/** - * This class is information of Pose Estimation. - * @author NTT DOCOMO, INC. - */ -public class PoseEstimationData { - - - /** Pose state. */ - private PoseEstimationProfileConstants.PoseState mState = PoseEstimationProfileConstants.PoseState.Standing; - /** Poses TimeStamp. */ - private long mTimeStamp; - /** Poses TimeStamp String. */ - private String mTimeStampString; - - /** - * Get Pose state. - * @return Pose state - */ - public PoseEstimationProfileConstants.PoseState getPoseState() { - return mState; - } - - /** - * Set Pose state. - * @param state Pose state - */ - public void setPoseState(final PoseEstimationProfileConstants.PoseState state) { - mState = state; - } - - /** - * Get TimeStamp. - * @return TimeStamp - */ - public long getTimeStamp() { - return mTimeStamp; - } - - /** - * Set TimeStamp. - * @param timeStamp TimeStamp - */ - public void setTimeStamp(final long timeStamp) { - mTimeStamp = timeStamp; - } - - /** - * Get TimeStamp String. - * @return TimeStamp String - */ - public String getTimeStampString() { - return mTimeStampString; - } - - /** - * Set TimeStamp String. - * @param timeStampString TimeStamp String - */ - public void setTimeStampString(final String timeStampString) { - mTimeStampString = timeStampString; - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("{\"state\": ").append(mState.getState()).append(", "); - builder.append("\"timeStamp\": ").append(mTimeStamp).append(", "); - builder.append("\"timeStampString\": ").append(mTimeStampString).append("} "); - return builder.toString(); - } - - /** - * To bundle. - * @return bundle - */ - public Bundle toBundle() { - Bundle pose = new Bundle(); - PoseEstimationProfile.setState(pose, mState.getState()); - PoseEstimationProfile.setTimestamp(pose, mTimeStamp); - PoseEstimationProfile.setTimestampString(pose, mTimeStampString); - return pose; - } - -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/StressEstimationData.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/StressEstimationData.java deleted file mode 100644 index 8f74bd586b..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/StressEstimationData.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - StressEstimationData - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.data; - -import android.os.Bundle; - -import org.deviceconnect.android.profile.StressEstimationProfile; - -/** - * This class is information of Stress Estimation. - * @author NTT DOCOMO, INC. - */ -public class StressEstimationData { - /** LF/HF. */ - private double mLFHF; - /** LF/HF's TimeStamp. */ - private long mTimeStamp; - /** LF/HF's TimeStamp String. */ - private String mTimeStampString; - - /** - * Get LFHF's value. - * @return LFHF's value - */ - public double getLFHFValue() { - return mLFHF; - } - - /** - * Set LFHF's value. - * @param lfhf LFHF's value - */ - public void setLFHFValue(final double lfhf) { - mLFHF = lfhf; - } - - /** - * Get TimeStamp. - * @return TimeStamp - */ - public long getTimeStamp() { - return mTimeStamp; - } - - /** - * Set TimeStamp. - * @param timeStamp TimeStamp - */ - public void setTimeStamp(final long timeStamp) { - mTimeStamp = timeStamp; - } - - /** - * Get TimeStamp String. - * @return TimeStamp String - */ - public String getTimeStampString() { - return mTimeStampString; - } - - /** - * Set TimeStamp String. - * @param timeStampString TimeStamp String - */ - public void setTimeStampString(final String timeStampString) { - mTimeStampString = timeStampString; - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("{\"lfhf\": ").append(mLFHF).append(", "); - builder.append("\"timeStamp\": ").append(mTimeStamp).append(", "); - builder.append("\"timeStampString\": ").append(mTimeStampString).append("} "); - return builder.toString(); - } - - /** - * To bundle. - * @return bundle - */ - public Bundle toBundle() { - Bundle stress = new Bundle(); - StressEstimationProfile.setLFHF(stress, mLFHF); - StressEstimationProfile.setTimestamp(stress, mTimeStamp); - StressEstimationProfile.setTimestampString(stress, mTimeStampString); - return stress; - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/TargetDeviceData.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/TargetDeviceData.java deleted file mode 100644 index 0b2b91b4d9..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/TargetDeviceData.java +++ /dev/null @@ -1,270 +0,0 @@ -/* - DeviceData - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.data; - -import android.os.Bundle; - -import org.deviceconnect.android.profile.HealthProfile; - -/** - * This class is information of HeartRate's device. - * @author NTT DOCOMO, INC. - */ -public class TargetDeviceData { - /** Target device's product name. */ - private String mProductName; - /** Target device's manufacture name. */ - private String mManufactureName; - /** Target device's model number. */ - private String mModelNumber; - /** Target device's firmware revision. */ - private String mFirmwareRevision; - /** Target device's serial number. */ - private String mSerialNumber; - /** Target device's software revision. */ - private String mSoftwareRevision; - /** Target device's hardware revision. */ - private String mHardwareRevision; - /** Target device's part number. */ - private String mPartNumber; - /** Target device's protocolRevision. */ - private String mProtocolRevision; - /** Target device's system id. */ - private String mSystemId; - /** Target device's battery level.*/ - private float mBatteryLevel; - - /** - * Constructor. - */ - public TargetDeviceData() { - mProductName = ""; - mManufactureName = ""; - mModelNumber = ""; - mFirmwareRevision = ""; - mSerialNumber = ""; - mSoftwareRevision = ""; - mHardwareRevision = ""; - mPartNumber = ""; - mProtocolRevision = ""; - mSystemId = "0x0"; - mBatteryLevel = -1.0f; - } - - /** - * Get Target device's product name. - * @return Target device's product name - */ - public String getProductName() { - return mProductName; - } - - /** - * Set Target device's product name. - * @param productName Target device's product name - */ - public void setProductName(final String productName) { - mProductName = productName; - } - - /** - * Get Target device's manufacture name. - * @return Target device's manufacture name - */ - public String getManufactureName() { - return mManufactureName; - } - - /** - * Set Target device's manufacture name. - * @param manufactureName Target device's manufacture name - */ - public void setManufactureName(final String manufactureName) { - mManufactureName = manufactureName; - } - - /** - * Get Target device's model number. - * @return Target device's model number - */ - public String getModelNumber() { - return mModelNumber; - } - - /** - * Set Target device's model number - * @param modelNumber Target device's model number - */ - public void setModelNumber(final String modelNumber) { - mModelNumber = modelNumber; - } - - /** - * Get Target device's firmware revision. - * @return Target device's firmware revision - */ - public String getFirmwareRevision() { - return mFirmwareRevision; - } - - /** - * Set Target device's firmware revision. - * @param firmwareRevision Target device's firmware revision - */ - public void setFirmwareRevision(final String firmwareRevision) { - mFirmwareRevision = firmwareRevision; - } - - /** - * Get Target device's serial number. - * @return Target device's serial number - */ - public String getSerialNumber() { - return mSerialNumber; - } - - /** - * Set Target device's serial number. - * @param serialNumber Target device's serial number - */ - public void setSerialNumber(final String serialNumber) { - mSerialNumber = serialNumber; - } - - /** - * Get Target device's software revision. - * @return Target device's software revision - */ - public String getSoftwareRevision() { - return mSoftwareRevision; - } - - /** - * Set Target device's software revision. - * @param softwareRevision Target device's software revision - */ - public void setSoftwareRevision(final String softwareRevision) { - mSoftwareRevision = softwareRevision; - } - - /** - * Get Target device's hardware revision. - * @return Target device's hardware revision - */ - public String getHardwareRevision() { - return mHardwareRevision; - } - - /** - * Set Target device's hardware revision. - * @param hardwareRevision Target device's hardware revision - */ - public void setHardwareRevision(final String hardwareRevision) { - mHardwareRevision = hardwareRevision; - } - - /** - * Get Target device's part number. - * @return Target device's part number - */ - public String getPartNumber() { - return mPartNumber; - } - - /** - * Set Target device's part number. - * @param partNumber Target device's part number - */ - public void setPartNumber(final String partNumber) { - mPartNumber = partNumber; - } - - /** - * Get Target device's protocol revision. - * @return Target device's protocol revision - */ - public String getProtocolRevision() { - return mProtocolRevision; - } - - /** - * Set Target device's protocol revision. - * @param protocolRevision Target device's protocol revision - */ - public void setProtocolRevision(final String protocolRevision) { - mProtocolRevision = protocolRevision; - } - - /** - * Get Target device's system id. - * @return Target device's system id - */ - public String getSystemId() { - return mSystemId; - } - - /** - * Set Target device's system id. - * @param systemId Target device's system id - */ - public void setSystemId(final String systemId) { - mSystemId = systemId; - } - - /** - * Get Target device's battery level. - * @return Target device's battery level - */ - public float getBatteryLevel() { - return mBatteryLevel; - } - - /** - * Set Target device's battery level. - * @param batteryLevel Target device's battery level - */ - public void setBatteryLevel(final float batteryLevel) { - mBatteryLevel = batteryLevel; - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("{\"productName\": ").append(mProductName).append(", "); - builder.append("\"manufactureName\": ").append(mManufactureName).append(", "); - builder.append("\"modelNumber\": ").append(mModelNumber).append(", "); - builder.append("\"firmwareRevision\": ").append(mFirmwareRevision).append(", "); - builder.append("\"serialNumber\": ").append(mSerialNumber).append(", "); - builder.append("\"softwareRevision\": ").append(mSoftwareRevision).append(", "); - builder.append("\"hardwareRevision\": ").append(mHardwareRevision).append(", "); - builder.append("\"partNumber\": ").append(mPartNumber).append(", "); - builder.append("\"protocolRevision\": ").append(mProtocolRevision).append(", "); - builder.append("\"systemId\": ").append(mSystemId).append(", "); - builder.append("\"batteryLevel\": ").append(mBatteryLevel).append("} "); - return builder.toString(); - } - - /** - * To Bundle. - * @return bundle - */ - public Bundle toBundle() { - Bundle device = new Bundle(); - HealthProfile.setProductName(device, mProductName); - HealthProfile.setManufacturerName(device, mManufactureName); - HealthProfile.setModelNumber(device, mModelNumber); - HealthProfile.setFirmwareRevision(device, mFirmwareRevision); - HealthProfile.setSerialNumber(device, mSerialNumber); - HealthProfile.setSoftwareRevision(device, mSoftwareRevision); - HealthProfile.setHardwareRevision(device, mHardwareRevision); - HealthProfile.setPartNumber(device, mPartNumber); - HealthProfile.setProtocolRevision(device, mProtocolRevision); - HealthProfile.setSystemId(device, mSystemId); - HealthProfile.setBatteryLevel(device, mBatteryLevel); - return device; - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/TempExData.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/TempExData.java deleted file mode 100755 index 21caecdec8..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/TempExData.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - HitoeManager - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.data; - -import java.util.ArrayList; - -/** - * Temporary holding the Exdata. - * @author NTT DOCOMO, INC. - */ -public class TempExData { - /** EX data's key. */ - private String mKey; - /** EX data's list. */ - private ArrayList mDataList; - - /** - * Consutructor. - * @param key Key - * @param dataList Ex data list - */ - public TempExData(final String key, final ArrayList dataList) { - setKey(key); - setDataList(new ArrayList<>()); - for (int i = 0; i < dataList.size(); i++) { - getDataList().add(dataList.get(i)); - } - } - - /** - * Get Ex data's key. - * @return Ex data's key - */ - public String getKey() { - return mKey; - } - - /** - * Set Ex data's key. - * @param key Ex data's key - */ - public void setKey(final String key) { - mKey = key; - } - - /** - * Get Ex data list. - * @return Ex data list - */ - public ArrayList getDataList() { - return mDataList; - } - - /** - * Set Ex data list. - * @param dataList Ex data list - */ - public void setDataList(final ArrayList dataList) { - mDataList = dataList; - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/WalkStateData.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/WalkStateData.java deleted file mode 100644 index 2049ee4727..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/WalkStateData.java +++ /dev/null @@ -1,175 +0,0 @@ -/* - WalkStateData - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.data; - -import android.os.Bundle; - -import org.deviceconnect.android.profile.WalkStateProfile; -import org.deviceconnect.profile.WalkStateProfileConstants; - -/** - * This class is information of WalkState. - * @author NTT DOCOMO, INC. - */ -public class WalkStateData { - - /** Step. */ - private int mStep; - /** Walk state. */ - private WalkStateProfileConstants.WalkState mState = WalkStateProfileConstants.WalkState.Stop; - /** Walk speed. */ - private double mSpeed; - /** Walk distance. */ - private double mDistance; - /** Walk balance. */ - private double mBalance; - /** Walk TimeStamp. */ - private long mTimeStamp; - /** Walk TimeStamp String. */ - private String mTimeStampString; - - /** - * Get Walk step count. - * @return Walk step count - */ - public int getStep() { - return mStep; - } - - /** - * Set Walk step count. - * @param step Walk step count - */ - public void setStep(final int step) { - mStep = step; - } - - /** - * Get Walk state. - * @return Walk state - */ - public WalkStateProfileConstants.WalkState getState() { - return mState; - } - - /** - * Set Walk state. - * @param state Walk state - */ - public void setState(final WalkStateProfileConstants.WalkState state) { - mState = state; - } - - /** - * Get walk speed. - * @return walk speed(km/s) - */ - public double getSpeed() { - return mSpeed; - } - - /** - * Set walk speed. - * @param speed walk speed - */ - public void setSpeed(final double speed) { - mSpeed = speed; - } - - /** - * Get walk distance. - * @return walk distance - */ - public double getDistance() { - return mDistance; - } - - /** - * Set walk distance. - * @param distance walk distance - */ - public void setDistance(final double distance) { - mDistance = distance; - } - - /** - * Get walk balance. - * @return walk balance - */ - public double getBalance() { - return mBalance; - } - - /** - * Set walk balance. - * @param balance walk balance - */ - public void setBalance(final double balance) { - mBalance = balance; - } - - /** - * Get TimeStamp. - * @return TimeStamp - */ - public long getTimeStamp() { - return mTimeStamp; - } - - /** - * Set TimeStamp. - * @param timeStamp TimeStamp - */ - public void setTimeStamp(final long timeStamp) { - this.mTimeStamp = timeStamp; - } - - /** - * Get TimeStamp String. - * @return TimeStamp String - */ - public String getTimeStampString() { - return mTimeStampString; - } - - /** - * Set TimeStamp string. - * @param timeStampString TimeStamp string - */ - public void setTimeStampString(final String timeStampString) { - mTimeStampString = timeStampString; - } - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("{\"steps\": ").append(mStep).append(", "); - builder.append("\"state\": ").append(mState.getState()).append(", "); - builder.append("\"speed\": ").append(mSpeed).append(", "); - builder.append("\"distance\": ").append(mDistance).append(", "); - builder.append("\"balance\": ").append(mBalance).append(", "); - builder.append("\"timeStamp\": ").append(mTimeStamp).append(", "); - builder.append("\"timeStampString\": ").append(mTimeStampString).append("} "); - return builder.toString(); - } - - /** - * To bundle. - * @return bundle - */ - public Bundle toBundle() { - Bundle walk = new Bundle(); - WalkStateProfile.setStep(walk, mStep); - WalkStateProfile.setState(walk, mState.getState()); - WalkStateProfile.setSpeed(walk, mSpeed); - WalkStateProfile.setDistance(walk, mDistance); - WalkStateProfile.setBalance(walk, mBalance); - WalkStateProfile.setTimestamp(walk, mTimeStamp); - WalkStateProfile.setTimestampString(walk, mTimeStampString); - return walk; - } - -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/package-info.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/package-info.java deleted file mode 100755 index 2184271e4c..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/data/package-info.java +++ /dev/null @@ -1,12 +0,0 @@ -/* -org.deviceconnect.android.deviceplugin.hitoe.data -Copyright (c) 2014 NTT DOCOMO,INC. -Released under the MIT license -http://opensource.org/licenses/mit-license.php - */ - -/** - * Data of Hitoe device. - */ -package org.deviceconnect.android.deviceplugin.hitoe.data; - diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileBatteryFragment.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileBatteryFragment.java deleted file mode 100644 index 9dac0fe874..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileBatteryFragment.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - HitoeDeviceSettingsFragment - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.fragment; - -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; - -import org.deviceconnect.android.deviceplugin.hitoe.HitoeApplication; -import org.deviceconnect.android.deviceplugin.hitoe.R; -import org.deviceconnect.android.deviceplugin.hitoe.activity.HitoeDeviceControlActivity; -import org.deviceconnect.android.deviceplugin.hitoe.data.HeartRateData; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeDevice; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; -import org.deviceconnect.android.deviceplugin.hitoe.data.TargetDeviceData; - - -/** - * This fragment do setting of the control battery profile. - * - * @author NTT DOCOMO, INC. - */ -public class HitoeProfileBatteryFragment extends Fragment { - - /** - * Current Hitoe Device object. - */ - private HitoeDevice mCurrentDevice; - - /** - * HeartRate TextView. - */ - private TextView mLevel; - /** - * Battery imageview. - */ - private ImageView mBatteryImage; - - @Override - public View onCreateView(final LayoutInflater inflater, final @Nullable ViewGroup container, - final @Nullable Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.fragment_battery_instructions, null); - rootView.findViewById(R.id.button_register).setOnClickListener((view) -> { - setBattery(); - }); - TextView title = rootView.findViewById(R.id.view_title); - mLevel = rootView.findViewById(R.id.battery_value); - mBatteryImage = rootView.findViewById(R.id.image_battery); - Bundle args = getArguments(); - if (args != null) { - - String serviceId = args.getString(HitoeDeviceControlActivity.FEATURE_SERVICE_ID); - HitoeApplication app = (HitoeApplication) getActivity().getApplication(); - HitoeManager manager = app.getHitoeManager(); - - mCurrentDevice = manager.getHitoeDeviceForServiceId(serviceId); - if (mCurrentDevice != null) { - String[] profiles = getResources().getStringArray(R.array.support_profiles); - title.setText(profiles[1] + getString(R.string.title_control)); - } - } - - return rootView; - } - - /** - * Set Battery value. - */ - public void setBattery() { - if (getActivity() == null) { - return; - } - getActivity().runOnUiThread(() -> { - HitoeApplication app = (HitoeApplication) getActivity().getApplication(); - HitoeManager manager = app.getHitoeManager(); - - HeartRateData heart = manager.getHeartRateData(mCurrentDevice.getId()); - TargetDeviceData device = heart.getDevice(); - if (device != null) { - float level = device.getBatteryLevel(); - if (level == 1.0) { - mBatteryImage.setImageResource(R.drawable.mark_battery01); - } else if (level == 0.75) { - mBatteryImage.setImageResource(R.drawable.mark_battery02); - } else if (level == 0.5) { - mBatteryImage.setImageResource(R.drawable.mark_battery03); - } else if (level == 0.25) { - mBatteryImage.setImageResource(R.drawable.mark_battery04); - } else { - mBatteryImage.setImageResource(R.drawable.mark_battery05); - } - mLevel.setText("" + (level * 100)); - } - }); - - } - -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileDeviceOrientationFragment.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileDeviceOrientationFragment.java deleted file mode 100644 index a20c015420..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileDeviceOrientationFragment.java +++ /dev/null @@ -1,283 +0,0 @@ -/* - HitoeProfileDeviceOrientationFragment - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.fragment; - -import android.graphics.Color; -import android.graphics.Paint; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.LinearLayout; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; - -import org.achartengine.GraphicalView; -import org.achartengine.chart.LineChart; -import org.achartengine.chart.PointStyle; -import org.achartengine.model.XYMultipleSeriesDataset; -import org.achartengine.model.XYSeries; -import org.achartengine.renderer.XYMultipleSeriesRenderer; -import org.achartengine.renderer.XYSeriesRenderer; -import org.deviceconnect.android.deviceplugin.hitoe.HitoeApplication; -import org.deviceconnect.android.deviceplugin.hitoe.R; -import org.deviceconnect.android.deviceplugin.hitoe.activity.HitoeDeviceControlActivity; -import org.deviceconnect.android.deviceplugin.hitoe.data.AccelerationData; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeConstants; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeDevice; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; -import org.deviceconnect.android.deviceplugin.hitoe.util.HitoeScheduler; - -import java.util.ArrayList; -import java.util.List; - - -/** - * This fragment do setting of the control DeviceOrientation profile. - * - * @author NTT DOCOMO, INC. - */ -public class HitoeProfileDeviceOrientationFragment extends Fragment implements HitoeScheduler.OnRegularNotify { - - /** Title size. */ - public static final int CHART_TITLE_SIZE = 25; - /** Label size. */ - public static final int LABELS_SIZE = 16; - /** Axis Title. */ - public static final int AXIS_TITLE_SIZE = 25; - /** Axis color. */ - public static final int AXIS_COLOR = Color.GRAY; - /** Grid color. */ - public static final int GRID_COLOR = Color.GRAY; - /** Title color. */ - public static final int TITLE_COLOR = Color.GRAY; - /** x label color. */ - public static final int XLABEL_COLOR = Color.GRAY; - /** y label color. */ - public static final int YLABEL_COLOR = Color.GRAY; - - /** data count. */ - private static final int DATA_COUNT = 3; - /** orientation title. */ - private static final String[] TITLES = new String[] {"X", "Y", "Z" }; - /** data color. */ - private static final int[] COLORS = new int[] {Color.RED, Color.GREEN, Color.BLUE }; - /** data count. */ - private static final long MAX_RANGE = 5000; - - - /** Acc data. */ - private List mACCList = null; - /** Graph data . */ - private LineChart mLineChart; - /** Graph view. */ - private GraphicalView mGraphicalView; - /** Graph render. */ - private XYMultipleSeriesRenderer mXYMultipleSeriesRenderer; - /** min data. */ - private long mMinX = 0; - /** max data. */ - private long mMaxX = mMinX + MAX_RANGE; - - - - /** - * Current Hitoe Device object. - */ - private HitoeDevice mCurrentDevice; - - /** - * Hitoe's Scheduler. - */ - private HitoeScheduler mScheduler; - - @Override - public View onCreateView(final LayoutInflater inflater, final @Nullable ViewGroup container, - final @Nullable Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.fragment_orientation_instructions, null); - mScheduler = new HitoeScheduler(this,HitoeConstants.ACC_CHART_UPDATE_CYCLE_TIME, - HitoeConstants.ACC_CHART_UPDATE_CYCLE_TIME); - - rootView.findViewById(R.id.button_register).setOnClickListener((view) -> { - clear(); - mScheduler.scanHitoeDevice(true); - }); - rootView.findViewById(R.id.button_unregister).setOnClickListener((view) -> { - mScheduler.scanHitoeDevice(false); - }); - TextView title = (TextView) rootView.findViewById(R.id.view_title); - Bundle args = getArguments(); - if (args != null) { - - String serviceId = args.getString(HitoeDeviceControlActivity.FEATURE_SERVICE_ID); - HitoeApplication app = (HitoeApplication) getActivity().getApplication(); - HitoeManager manager = app.getHitoeManager(); - - mCurrentDevice = manager.getHitoeDeviceForServiceId(serviceId); - if (mCurrentDevice != null) { - String[] profiles = getResources().getStringArray(R.array.support_profiles); - title.setText(profiles[2] + getString(R.string.title_control)); - } - } - init(); - ((LinearLayout) rootView.findViewById(R.id.acc_chart)).addView(mGraphicalView); - return rootView; - } - - @Override - public void onDestroy() { - super.onDestroy(); - mScheduler.scanHitoeDevice(false); - } - - @Override - public void onRegularNotify() { - if (getActivity() == null) { - return; - } - getActivity().runOnUiThread(() -> { - HitoeApplication app = (HitoeApplication) getActivity().getApplication(); - HitoeManager manager = app.getHitoeManager(); - - AccelerationData acc = manager.getAccelerationData(mCurrentDevice.getId()); - if (acc != null) { - double[] accs = new double[3]; - accs[0] = acc.getAccelX(); - accs[1] = acc.getAccelY(); - accs[2] = acc.getAccelZ(); - setACC(System.currentTimeMillis(), accs); - updateChart(); - } - }); - } - - /** - * Initialilze chart. - */ - private void init() { - mACCList = new ArrayList<>(); - mACCList.add(new XYSeries(TITLES[0])); - mACCList.add(new XYSeries(TITLES[1])); - mACCList.add(new XYSeries(TITLES[2])); - XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); - dataset.addAllSeries(mACCList); - - this.mXYMultipleSeriesRenderer = buildRenderer(); - mLineChart = new LineChart(dataset, mXYMultipleSeriesRenderer); - mGraphicalView = new GraphicalView(getActivity(), mLineChart); - } - - /** - * Set Acceleration data. - * @param timestamp timestamp - * @param accList acceleration data list - */ - private void setACC(final long timestamp, final double[] accList) { - - if (this.mACCList.get(0).getItemCount() == 0) { - mMinX = timestamp; - mMaxX = timestamp + MAX_RANGE; - } - - if (timestamp > mMaxX || this.mACCList.get(0).getItemCount() > MAX_RANGE / 40) { - this.mACCList.get(0).clear(); - this.mACCList.get(1).clear(); - this.mACCList.get(2).clear(); - - mMinX = timestamp; - mMaxX = timestamp + MAX_RANGE; - } - - this.mACCList.get(0).add(timestamp, accList[0]); - this.mACCList.get(1).add(timestamp, accList[1]); - this.mACCList.get(2).add(timestamp, accList[2]); - } - - /** - * Update chart. - */ - private void updateChart() { - mXYMultipleSeriesRenderer.setXAxisMin(mMinX); - mXYMultipleSeriesRenderer.setXAxisMax(mMaxX); - - mGraphicalView.repaint(); - } - - /** - * Clear chart. - */ - private void clear() { - mACCList.get(0).clear(); - mACCList.get(1).clear(); - mACCList.get(2).clear(); - mGraphicalView.repaint(); - } - - /** - * Build chart's renderer. - * @return chart renderer - */ - private XYMultipleSeriesRenderer buildRenderer() { - - XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); - for (int i = 0; i < DATA_COUNT; i++) { - XYSeriesRenderer r = new XYSeriesRenderer(); - r.setColor(COLORS[i]); - r.setLineWidth(4f); - r.setPointStyle(PointStyle.CIRCLE); - r.setFillPoints(true); - r.setPointStrokeWidth(1f); - renderer.addSeriesRenderer(r); - } - - renderer.setPointSize(1f); - renderer.setChartTitle("加速度"); - renderer.setChartTitleTextSize(CHART_TITLE_SIZE); - - renderer.setXTitle("経過時間 [ms]"); - renderer.setYTitle(" [G]"); - - renderer.setLabelsTextSize(LABELS_SIZE); - renderer.setLabelsColor(TITLE_COLOR); - renderer.setXLabelsAlign(Paint.Align.LEFT); - renderer.setYLabelsAlign(Paint.Align.RIGHT); - - renderer.setXLabelsColor(XLABEL_COLOR); - renderer.setYLabelsColor(0, YLABEL_COLOR); - - renderer.setAxisTitleTextSize(AXIS_TITLE_SIZE); - renderer.setAxesColor(AXIS_COLOR); - renderer.setXAxisMin(mMinX); - renderer.setXAxisMax(mMaxX); - renderer.setYAxisMin(-3.0); - renderer.setYAxisMax(3.0); - - renderer.setShowGridX(true); - renderer.setShowGridY(true); - renderer.setGridColor(GRID_COLOR); - - renderer.setApplyBackgroundColor(true); - renderer.setBackgroundColor(Color.WHITE); - - renderer.setMargins(new int[] {16, 48, 16, 8 }); - renderer.setMarginsColor(Color.argb(0, 255, 255, 255)); - - renderer.setPanEnabled(false, false); - - renderer.setShowLegend(true); - renderer.setLegendTextSize(15); - renderer.setFitLegend(false); - - renderer.setZoomButtonsVisible(false); - - renderer.setZoomEnabled(false, false); - - return renderer; - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileECGFragment.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileECGFragment.java deleted file mode 100644 index d306603f52..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileECGFragment.java +++ /dev/null @@ -1,265 +0,0 @@ -/* - HitoeProfileECGFragment - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.fragment; - -import android.graphics.Color; -import android.graphics.Paint; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.LinearLayout; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; - -import org.achartengine.GraphicalView; -import org.achartengine.chart.LineChart; -import org.achartengine.chart.PointStyle; -import org.achartengine.model.XYMultipleSeriesDataset; -import org.achartengine.model.XYSeries; -import org.achartengine.renderer.XYMultipleSeriesRenderer; -import org.achartengine.renderer.XYSeriesRenderer; -import org.deviceconnect.android.deviceplugin.hitoe.HitoeApplication; -import org.deviceconnect.android.deviceplugin.hitoe.R; -import org.deviceconnect.android.deviceplugin.hitoe.activity.HitoeDeviceControlActivity; -import org.deviceconnect.android.deviceplugin.hitoe.data.HeartRateData; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeConstants; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeDevice; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; -import org.deviceconnect.android.deviceplugin.hitoe.util.HitoeScheduler; - -import java.util.ArrayList; -import java.util.List; - - -/** - * This fragment do setting of the control ECG profile. - * - * @author NTT DOCOMO, INC. - */ -public class HitoeProfileECGFragment extends Fragment implements HitoeScheduler.OnRegularNotify { - - /** Title size. */ - public static final int CHART_TITLE_SIZE = 25; - /** Label size. */ - public static final int LABELS_SIZE = 16; - /** Axis Title. */ - public static final int AXIS_TITLE_SIZE = 25; - /** Axis color. */ - public static final int AXIS_COLOR = Color.GRAY; - /** Grid color. */ - public static final int GRID_COLOR = Color.GRAY; - /** Title color. */ - public static final int TITLE_COLOR = Color.GRAY; - /** x label color. */ - public static final int XLABEL_COLOR = Color.GRAY; - /** y label color. */ - public static final int YLABEL_COLOR = Color.GRAY; - - /** data count. */ - private static final int DATA_COUNT = 1; - /** orientation title. */ - private static final String[] TITLES = new String[] {"ECG" }; - /** data color. */ - private static final int[] COLORS = new int[] {Color.GREEN }; - /** data count. */ - private static final long MAX_RANGE = 10000; - - /** ECG. */ - private List mECGList = null; - /** Graph data . */ - private LineChart mLineChart; - /** Graph view. */ - private GraphicalView mGraphicalView; - /** Graph render. */ - private XYMultipleSeriesRenderer mXYMultipleSeriesRenderer; - /** min data. */ - private long mMinX = 0; - /** max data. */ - private long mMaxX = mMinX + MAX_RANGE; - - - - /** - * Current Hitoe Device object. - */ - private HitoeDevice mCurrentDevice; - - /** - * Hitoe Scheduler. - */ - private HitoeScheduler mScheduler; - - @Override - public View onCreateView(final LayoutInflater inflater, final @Nullable ViewGroup container, - final @Nullable Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.fragment_ecg_instructions, null); - mScheduler = new HitoeScheduler(this, HitoeConstants.ACC_CHART_UPDATE_CYCLE_TIME, - HitoeConstants.ACC_CHART_UPDATE_CYCLE_TIME); - - rootView.findViewById(R.id.button_register).setOnClickListener((view) -> { - clear(); - mScheduler.scanHitoeDevice(true); - }); - rootView.findViewById(R.id.button_unregister).setOnClickListener((view) -> { - mScheduler.scanHitoeDevice(false); - }); - TextView title = rootView.findViewById(R.id.view_title); - Bundle args = getArguments(); - if (args != null) { - - String serviceId = args.getString(HitoeDeviceControlActivity.FEATURE_SERVICE_ID); - HitoeApplication app = (HitoeApplication) getActivity().getApplication(); - HitoeManager manager = app.getHitoeManager(); - - mCurrentDevice = manager.getHitoeDeviceForServiceId(serviceId); - if (mCurrentDevice != null) { - String[] profiles = getResources().getStringArray(R.array.support_profiles); - title.setText(profiles[3] + getString(R.string.title_control)); - } - } - init(); - ((LinearLayout) rootView.findViewById(R.id.ecg_chart)).addView(mGraphicalView); - return rootView; - } - - @Override - public void onDestroy() { - super.onDestroy(); - mScheduler.scanHitoeDevice(false); - } - - - @Override - public void onRegularNotify() { - if (getActivity() == null) { - return; - } - getActivity().runOnUiThread(() -> { - HitoeApplication app = (HitoeApplication) getActivity().getApplication(); - HitoeManager manager = app.getHitoeManager(); - HeartRateData ecg = manager.getECGData(mCurrentDevice.getId()); - if (ecg != null) { - setECG(ecg.getECG().getTimeStamp(), ecg.getECG().getValue()); - updateChart(); - } - }); - } - - /** - * Initialize ECG chart. - */ - private void init() { - this.mECGList = new ArrayList<>(); - this.mECGList.add(new XYSeries(TITLES[0])); - XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); - dataset.addAllSeries(this.mECGList); - - this.mXYMultipleSeriesRenderer = buildRenderer(); - mLineChart = new LineChart(dataset, mXYMultipleSeriesRenderer); - mGraphicalView = new GraphicalView(getActivity(), mLineChart); - } - - /** - * Set ECG data. - * @param timestamp timestamp - * @param ecg ecg data - */ - private void setECG(final long timestamp, final double ecg) { - if (mECGList.get(0).getItemCount() == 0) { - mMinX = timestamp; - mMaxX = timestamp + MAX_RANGE; - } - - if (timestamp > mMaxX || mECGList.get(0).getItemCount() > MAX_RANGE / 40) { - this.mECGList.get(0).clear(); - mMinX = timestamp; - mMaxX = timestamp + MAX_RANGE; - } - mECGList.get(0).add(timestamp, ecg / 1000); - } - - /** - * Update chart. - */ - private synchronized void updateChart() { - mXYMultipleSeriesRenderer.setXAxisMin(mMinX); - mXYMultipleSeriesRenderer.setXAxisMax(mMaxX); - - mGraphicalView.repaint(); - } - - /** - * Clear chart. - */ - private synchronized void clear() { - this.mECGList.get(0).clear(); - mGraphicalView.repaint(); - } - - /** - * Build ECG Chart renderer. - * @return ecg chart renderer - */ - private XYMultipleSeriesRenderer buildRenderer() { - - XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer(); - - for (int i = 0; i < DATA_COUNT; i++) { - XYSeriesRenderer r = new XYSeriesRenderer(); - r.setColor(COLORS[i]); - r.setLineWidth(4f); - r.setPointStyle(PointStyle.CIRCLE); - r.setFillPoints(true); - r.setPointStrokeWidth(1f); - renderer.addSeriesRenderer(r); - } - - renderer.setPointSize(1f); - renderer.setChartTitle("心電"); - renderer.setChartTitleTextSize(CHART_TITLE_SIZE); - - renderer.setXTitle("経過時間 [ms]"); - renderer.setYTitle(" [μv]"); - - renderer.setLabelsTextSize(LABELS_SIZE); - renderer.setLabelsColor(TITLE_COLOR); - renderer.setXLabelsAlign(Paint.Align.LEFT); - renderer.setYLabelsAlign(Paint.Align.RIGHT); - - renderer.setXLabelsColor(XLABEL_COLOR); - renderer.setYLabelsColor(0, YLABEL_COLOR); - - renderer.setAxisTitleTextSize(AXIS_TITLE_SIZE); - renderer.setAxesColor(AXIS_COLOR); - renderer.setXAxisMin(mMinX); - renderer.setXAxisMax(mMaxX); - renderer.setYAxisMin(-3.0); - renderer.setYAxisMax(3.0); - - renderer.setShowGridX(true); - renderer.setShowGridY(true); - renderer.setGridColor(GRID_COLOR); - - renderer.setApplyBackgroundColor(true); - renderer.setBackgroundColor(Color.BLACK); - - renderer.setMargins(new int[] {16, 48, 16, 8 }); - renderer.setMarginsColor(Color.argb(0, 255, 255, 255)); - renderer.setPanEnabled(false, false); - renderer.setShowLegend(true); - renderer.setLegendTextSize(15); - renderer.setFitLegend(false); - - renderer.setZoomButtonsVisible(false); - renderer.setZoomEnabled(false, false); - - return renderer; - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileHealthFragment.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileHealthFragment.java deleted file mode 100644 index d88ad9f141..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileHealthFragment.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - HitoeProfileHealthFragment - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.fragment; - -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; - -import org.deviceconnect.android.deviceplugin.hitoe.HitoeApplication; -import org.deviceconnect.android.deviceplugin.hitoe.R; -import org.deviceconnect.android.deviceplugin.hitoe.activity.HitoeDeviceControlActivity; -import org.deviceconnect.android.deviceplugin.hitoe.data.HeartData; -import org.deviceconnect.android.deviceplugin.hitoe.data.HeartRateData; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeConstants; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeDevice; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; -import org.deviceconnect.android.deviceplugin.hitoe.util.HitoeScheduler; - - -/** - * This fragment do setting of the control health profile. - * - * @author NTT DOCOMO, INC. - */ -public class HitoeProfileHealthFragment extends Fragment implements HitoeScheduler.OnRegularNotify { - - /** - * Current Hitoe Device object. - */ - private HitoeDevice mCurrentDevice; - - /** - * HeartRate TextView. - */ - private TextView mHeartRate; - /** - * Hitoe Scheduler. - */ - private HitoeScheduler mScheduler; - - @Override - public View onCreateView(final LayoutInflater inflater, final @Nullable ViewGroup container, - final @Nullable Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.fragment_heartrate_instructions, null); - mScheduler = new HitoeScheduler(this, HitoeConstants.HR_TEXT_UPDATE_CYCLE_TIME, - HitoeConstants.HR_TEXT_UPDATE_CYCLE_TIME); - rootView.findViewById(R.id.button_register).setOnClickListener((view) -> { - mScheduler.scanHitoeDevice(true); - }); - rootView.findViewById(R.id.button_unregister).setOnClickListener((view) -> { - mScheduler.scanHitoeDevice(false); - }); - TextView title = rootView.findViewById(R.id.view_title); - mHeartRate = rootView.findViewById(R.id.heartrate_value); - Bundle args = getArguments(); - if (args != null) { - - String serviceId = args.getString(HitoeDeviceControlActivity.FEATURE_SERVICE_ID); - HitoeApplication app = (HitoeApplication) getActivity().getApplication(); - HitoeManager manager = app.getHitoeManager(); - - mCurrentDevice = manager.getHitoeDeviceForServiceId(serviceId); - if (mCurrentDevice != null) { - String[] profiles = getResources().getStringArray(R.array.support_profiles); - title.setText(profiles[0] + getString(R.string.title_control)); - } - } - - return rootView; - } - - - @Override - public void onDestroy() { - super.onDestroy(); - mScheduler.scanHitoeDevice(false); - } - - @Override - public void onRegularNotify() { - if (getActivity() == null) { - return; - } - getActivity().runOnUiThread(() -> { - HitoeApplication app = (HitoeApplication) getActivity().getApplication(); - HitoeManager manager = app.getHitoeManager(); - HeartRateData heart = manager.getHeartRateData(mCurrentDevice.getId()); - if (heart != null) { - HeartData rate = heart.getHeartRate(); - if (rate != null) { - mHeartRate.setText("" + rate.getValue()); - } - } - }); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileListFragment.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileListFragment.java deleted file mode 100644 index 79da3ad1f1..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileListFragment.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - HitoeProfileListFragment - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.fragment; - -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.Button; -import android.widget.ListView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; - -import org.deviceconnect.android.deviceplugin.hitoe.HitoeApplication; -import org.deviceconnect.android.deviceplugin.hitoe.R; -import org.deviceconnect.android.deviceplugin.hitoe.activity.HitoeDeviceControlActivity; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeDevice; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; - - -/** - * This fragment do setting of the control hitoe device. - * - * @author NTT DOCOMO, INC. - */ -public class HitoeProfileListFragment extends Fragment implements AdapterView.OnItemClickListener { - - /** - * Bluetooth device list view. - */ - private ListView mProfileListView; - - /** - * Current control hitoe device info object. - */ - private HitoeDevice mCurrentDevice; - - /** page title. */ - private TextView mTitle; - - - @Override - public View onCreateView(final LayoutInflater inflater, final @Nullable ViewGroup container, - final @Nullable Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.activity_hitoe_device_list, null); - Button underBtn = (Button) rootView.findViewById(R.id.btn_add_open); - underBtn.setVisibility(View.GONE); - mTitle = (TextView) rootView.findViewById(R.id.view_title); - mProfileListView = (ListView) rootView.findViewById(R.id.device_list_view); - String[] profiles = getResources().getStringArray(R.array.support_profiles); - ArrayAdapter mAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, profiles); - mProfileListView.setAdapter(mAdapter); - mProfileListView.setOnItemClickListener(this); - - Bundle args = getArguments(); - if (args != null) { - - String serviceId = args.getString(HitoeDeviceControlActivity.FEATURE_SERVICE_ID); - HitoeApplication app = (HitoeApplication) getActivity().getApplication(); - HitoeManager manager = app.getHitoeManager(); - - mCurrentDevice = manager.getHitoeDeviceForServiceId(serviceId); - if (mCurrentDevice != null) { - mTitle.setText(mCurrentDevice.getName() + " " + getString(R.string.title_control)); - } - } - - return rootView; - } - - - @Override - public void onItemClick(final AdapterView adapterView, final View view, final int i, final long l) { - HitoeDeviceControlActivity control = (HitoeDeviceControlActivity) getActivity(); - control.movePage(i + 1); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfilePoseEstimationFragment.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfilePoseEstimationFragment.java deleted file mode 100644 index 9194a303f2..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfilePoseEstimationFragment.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - HitoeProfileHealthFragment - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.fragment; - -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; - -import org.deviceconnect.android.deviceplugin.hitoe.HitoeApplication; -import org.deviceconnect.android.deviceplugin.hitoe.R; -import org.deviceconnect.android.deviceplugin.hitoe.activity.HitoeDeviceControlActivity; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeConstants; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeDevice; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; -import org.deviceconnect.android.deviceplugin.hitoe.data.PoseEstimationData; -import org.deviceconnect.android.deviceplugin.hitoe.util.HitoeScheduler; -import org.deviceconnect.profile.PoseEstimationProfileConstants; - - -/** - * This fragment do setting of the control health profile. - * - * @author NTT DOCOMO, INC. - */ -public class HitoeProfilePoseEstimationFragment extends Fragment implements HitoeScheduler.OnRegularNotify { - - /** - * Current Hitoe Device object. - */ - private HitoeDevice mCurrentDevice; - - /** - * Pose ImageView. - */ - private ImageView mPoseView; - /** - * Hitoe scheduler. - */ - private HitoeScheduler mScheduler; - - @Override - public View onCreateView(final LayoutInflater inflater, final @Nullable ViewGroup container, - final @Nullable Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.fragment_pose_instructions, null); - mScheduler = new HitoeScheduler(this, HitoeConstants.HR_TEXT_UPDATE_CYCLE_TIME, - HitoeConstants.HR_TEXT_UPDATE_CYCLE_TIME); - rootView.findViewById(R.id.button_register).setOnClickListener((view) -> { - mScheduler.scanHitoeDevice(true); - }); - rootView.findViewById(R.id.button_unregister).setOnClickListener((view) -> { - mScheduler.scanHitoeDevice(false); - }); - TextView title = rootView.findViewById(R.id.view_title); - mPoseView = rootView.findViewById(R.id.pose_image); - Bundle args = getArguments(); - if (args != null) { - - String serviceId = args.getString(HitoeDeviceControlActivity.FEATURE_SERVICE_ID); - HitoeApplication app = (HitoeApplication) getActivity().getApplication(); - HitoeManager manager = app.getHitoeManager(); - - mCurrentDevice = manager.getHitoeDeviceForServiceId(serviceId); - if (mCurrentDevice != null) { - String[] profiles = getResources().getStringArray(R.array.support_profiles); - title.setText(profiles[5] + getString(R.string.title_control)); - } - } - - return rootView; - } - - - @Override - public void onDestroy() { - super.onDestroy(); - mScheduler.scanHitoeDevice(false); - } - - @Override - public void onRegularNotify() { - if (getActivity() == null) { - return; - } - getActivity().runOnUiThread(() -> { - HitoeApplication app = (HitoeApplication) getActivity().getApplication(); - HitoeManager manager = app.getHitoeManager(); - - PoseEstimationData pose = manager.getPoseEstimationData(mCurrentDevice.getId()); - if (pose != null) { - int poseResource = R.drawable.pose_default; - if (pose.getPoseState() == PoseEstimationProfileConstants.PoseState.Backward) { - poseResource = R.drawable.pose_backward; - } else if (pose.getPoseState() == PoseEstimationProfileConstants.PoseState.FaceDown) { - poseResource = R.drawable.pose_facedown; - } else if (pose.getPoseState() == PoseEstimationProfileConstants.PoseState.FaceLeft) { - poseResource = R.drawable.pose_faceleft; - } else if (pose.getPoseState() == PoseEstimationProfileConstants.PoseState.FaceRight) { - poseResource = R.drawable.pose_faceright; - } else if (pose.getPoseState() == PoseEstimationProfileConstants.PoseState.FaceUp) { - poseResource = R.drawable.pose_faceup; - } else if (pose.getPoseState() == PoseEstimationProfileConstants.PoseState.Forward) { - poseResource = R.drawable.pose_forward; - } else if (pose.getPoseState() == PoseEstimationProfileConstants.PoseState.Leftside) { - poseResource = R.drawable.pose_leftside; - } else if (pose.getPoseState() == PoseEstimationProfileConstants.PoseState.Rightside) { - poseResource = R.drawable.pose_rightside; - } else if (pose.getPoseState() == PoseEstimationProfileConstants.PoseState.Standing) { - poseResource = R.drawable.pose_standing; - } - mPoseView.setImageResource(poseResource); - } - }); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileStressEstimationFragment.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileStressEstimationFragment.java deleted file mode 100644 index 8455305b8f..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileStressEstimationFragment.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - HitoeProfileHealthFragment - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.fragment; - -import android.graphics.Color; -import android.graphics.drawable.GradientDrawable; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; - -import org.deviceconnect.android.deviceplugin.hitoe.HitoeApplication; -import org.deviceconnect.android.deviceplugin.hitoe.R; -import org.deviceconnect.android.deviceplugin.hitoe.activity.HitoeDeviceControlActivity; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeConstants; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeDevice; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; -import org.deviceconnect.android.deviceplugin.hitoe.data.StressEstimationData; -import org.deviceconnect.android.deviceplugin.hitoe.util.HitoeScheduler; - - -/** - * This fragment do setting of the control health profile. - * - * @author NTT DOCOMO, INC. - */ -public class HitoeProfileStressEstimationFragment extends Fragment implements HitoeScheduler.OnRegularNotify { - - /** - * Current Hitoe Device object. - */ - private HitoeDevice mCurrentDevice; - - /** - * HeartRate TextView. - */ - private TextView mLFHF; - /** - * Hitoe scheduler. - */ - private HitoeScheduler mScheduler; - /** LFHF view. */ - private GradientDrawable mLFHFGradientDrawable; - - @Override - public View onCreateView(final LayoutInflater inflater, final @Nullable ViewGroup container, - final @Nullable Bundle savedInstanceState) { - - View rootView = inflater.inflate(R.layout.fragment_stress_instructions, null); - mScheduler = new HitoeScheduler(this, HitoeConstants.LFHF_TEXT_UPDATE_CYCLE_TIME, - HitoeConstants.LFHF_TEXT_UPDATE_CYCLE_TIME); - rootView.findViewById(R.id.button_register).setOnClickListener((view) -> { - mScheduler.scanHitoeDevice(true); - }); - rootView.findViewById(R.id.button_unregister).setOnClickListener((view) -> { - mScheduler.scanHitoeDevice(false); - }); - TextView title = rootView.findViewById(R.id.view_title); - mLFHF = rootView.findViewById(R.id.lfhf_value); - Bundle args = getArguments(); - if (args != null) { - - String serviceId = args.getString(HitoeDeviceControlActivity.FEATURE_SERVICE_ID); - HitoeApplication app = (HitoeApplication) getActivity().getApplication(); - HitoeManager manager = app.getHitoeManager(); - - mCurrentDevice = manager.getHitoeDeviceForServiceId(serviceId); - if (mCurrentDevice != null) { - String[] profiles = getResources().getStringArray(R.array.support_profiles); - title.setText(profiles[4] + getString(R.string.title_control)); - } - } - mLFHFGradientDrawable = (GradientDrawable) mLFHF.getBackground(); - return rootView; - } - - @Override - public void onDestroy() { - super.onDestroy(); - mScheduler.scanHitoeDevice(false); - } - - @Override - public void onRegularNotify() { - if (getActivity() == null) { - return; - } - getActivity().runOnUiThread(() -> { - HitoeApplication app = (HitoeApplication) getActivity().getApplication(); - HitoeManager manager = app.getHitoeManager(); - - StressEstimationData stress = manager.getStressEstimationData(mCurrentDevice.getId()); - if (stress != null) { - updateView(stress.getTimeStamp(), stress.getLFHFValue()); - } - }); - } - - /** - * Update view. - * @param timestamp timestamp - * @param lfhf stress estimation - */ - public void updateView(final long timestamp, final double lfhf) { - - final int scoreRGB; - final int scoreR; - final int scoreG; - final int scoreB; - - if (timestamp == -1) { - - return; - } - scoreRGB = (int) (150 * (lfhf / 5)); - if(105 + scoreRGB < 255) { - scoreR = 105 + scoreRGB; - } else { - scoreR = 255; - } - if(255 - scoreRGB > 0) { - scoreG = 255 - scoreRGB; - scoreB = 255 - scoreRGB; - } else { - scoreG = 0; - scoreB = 0; - } - - mLFHF.setText("LF/HF:" + String.valueOf(lfhf)); - mLFHFGradientDrawable.setColors(new int[]{0xFFCDFFFF, Color.rgb(scoreR, scoreG, scoreB)}); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileWalkStateFragment.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileWalkStateFragment.java deleted file mode 100644 index dabe9cc9ae..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/HitoeProfileWalkStateFragment.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - HitoeProfileHealthFragment - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.fragment; - -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; - -import org.deviceconnect.android.deviceplugin.hitoe.HitoeApplication; -import org.deviceconnect.android.deviceplugin.hitoe.R; -import org.deviceconnect.android.deviceplugin.hitoe.activity.HitoeDeviceControlActivity; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeConstants; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeDevice; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; -import org.deviceconnect.android.deviceplugin.hitoe.data.WalkStateData; -import org.deviceconnect.android.deviceplugin.hitoe.util.HitoeScheduler; - - -/** - * This fragment do setting of the control health profile. - * - * @author NTT DOCOMO, INC. - */ -public class HitoeProfileWalkStateFragment extends Fragment implements HitoeScheduler.OnRegularNotify { - - /** - * Current Hitoe Device object. - */ - private HitoeDevice mCurrentDevice; - - /** - * Step TextView. - */ - private TextView mStep; - /** - * State TextView. - */ - private TextView mState; - - /** - * Speed TextView. - */ - private TextView mSpeed; - /** - * Distance TextView. - */ - private TextView mDistance; - /** - * Balance TextView. - */ - private TextView mBalance; - - /** Hitoe Scheduler. */ - private HitoeScheduler mScheduler; - - @Override - public View onCreateView(final LayoutInflater inflater, final @Nullable ViewGroup container, - final @Nullable Bundle savedInstanceState) { - View rootView = inflater.inflate(R.layout.fragment_walk_instructions, null); - mScheduler = new HitoeScheduler(this, HitoeConstants.HR_TEXT_UPDATE_CYCLE_TIME, - HitoeConstants.HR_TEXT_UPDATE_CYCLE_TIME); - rootView.findViewById(R.id.button_register).setOnClickListener((view) -> { - mScheduler.scanHitoeDevice(true); - }); - rootView.findViewById(R.id.button_unregister).setOnClickListener((view) -> { - mScheduler.scanHitoeDevice(false); - }); - TextView title = rootView.findViewById(R.id.view_title); - mStep = rootView.findViewById(R.id.walk_step); - mState = rootView.findViewById(R.id.walk_state); - mSpeed = rootView.findViewById(R.id.walk_speed); - mDistance = rootView.findViewById(R.id.walk_distance); - mBalance = rootView.findViewById(R.id.walk_balance); - - Bundle args = getArguments(); - if (args != null) { - - String serviceId = args.getString(HitoeDeviceControlActivity.FEATURE_SERVICE_ID); - HitoeApplication app = (HitoeApplication) getActivity().getApplication(); - HitoeManager manager = app.getHitoeManager(); - - mCurrentDevice = manager.getHitoeDeviceForServiceId(serviceId); - if (mCurrentDevice != null) { - String[] profiles = getResources().getStringArray(R.array.support_profiles); - title.setText(profiles[6] + getString(R.string.title_control)); - } - } - - return rootView; - } - - @Override - public void onDestroy() { - super.onDestroy(); - mScheduler.scanHitoeDevice(false); - } - - @Override - public void onRegularNotify() { - if (getActivity() == null) { - return; - } - getActivity().runOnUiThread(() -> { - HitoeApplication app = (HitoeApplication) getActivity().getApplication(); - HitoeManager manager = app.getHitoeManager(); - - WalkStateData walk = manager.getWalkStateData(mCurrentDevice.getId()); - if (walk != null) { - mStep.setText("" + walk.getStep()); - mState.setText(walk.getState().getState()); - mSpeed.setText("" + walk.getSpeed()); - mDistance.setText("" + walk.getDistance()); - mBalance.setText("" + walk.getBalance()); - } - }); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/dialog/DefaultDialogFragment.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/dialog/DefaultDialogFragment.java deleted file mode 100644 index e3ef7b0b9e..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/dialog/DefaultDialogFragment.java +++ /dev/null @@ -1,167 +0,0 @@ -/* - DefaultDialogFragment.java - Copyright (c) 2015 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.fragment.dialog; - -import android.app.Activity; -import android.app.AlertDialog; -import android.app.Dialog; -import android.app.DialogFragment; -import android.app.ProgressDialog; -import android.content.Context; -import android.content.DialogInterface; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.CheckBox; -import android.widget.ImageView; -import android.widget.TextView; - -import org.deviceconnect.android.deviceplugin.hitoe.R; -import org.deviceconnect.android.deviceplugin.hitoe.util.UserSettings; - -/** - * Alert show fragment. - * @author NTT DOCOMO, INC. - */ -public class DefaultDialogFragment extends DialogFragment { - - /** - * Factory Method. - * @param title dialog's title - * @param message dialog's message - * @return dialog fragment - */ - public static DefaultDialogFragment newInstance(final String title, - final String message) { - DefaultDialogFragment instance = new DefaultDialogFragment(); - - Bundle arguments = new Bundle(); - arguments.putString("title", title); - arguments.putString("message", message); - - instance.setArguments(arguments); - - return instance; - } - - @Override - public Dialog onCreateDialog(final Bundle savedInstanceState) { - String title = getArguments().getString("title"); - String message = getArguments().getString("message"); - - ProgressDialog progressDialog = new ProgressDialog(getActivity()); - progressDialog.setTitle(title); - progressDialog.setMessage(message); - progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); - setCancelable(false); - - return progressDialog; - } - - - - /** - * Show Confirm Alert. - * @param activity Activity - * @param title title - * @param message message - * @param positiveBtnMsg Positive Button Message - * @param listener listener - */ - public static void showConfirmAlert(final Activity activity, final String title, final String message, - final String positiveBtnMsg, - final DialogInterface.OnClickListener listener) { - if (activity == null) { - return; - } - - new AlertDialog.Builder(activity) - .setTitle(title) - .setMessage(message) - .setPositiveButton(positiveBtnMsg, listener) - .setNegativeButton(R.string.cancel, null) - .show(); - } - - /** - * Show Hitoe On state dialog. - * @param activity activity - */ - public static void showHitoeONStateDialog(final Activity activity) { - if (activity == null) { - return; - } - final UserSettings userSettings = new UserSettings(activity); - if (userSettings.isNextState()) { - return; - } - LayoutInflater inflater = (LayoutInflater) activity.getSystemService( - Context.LAYOUT_INFLATER_SERVICE); - final View layout = inflater.inflate(R.layout.dialog_hitoe_on, null); - ImageView explain = (ImageView) layout.findViewById(R.id.hitoe_explain); - TextView message = (TextView) layout.findViewById(R.id.explain_message); - message.setText(R.string.dialog_message_lunch_hitoe); - explain.setVisibility(View.VISIBLE); - new AlertDialog.Builder(activity) - .setView(layout) - .setTitle(activity.getString(R.string.dialog_title_lunch_hitoe)) - .setNeutralButton(R.string.ok, (dialogInterface, i) -> { - CheckBox nextState = (CheckBox) layout.findViewById(R.id.chceck_next); - userSettings.setNextState(nextState.isChecked()); - }) - .show(); - } - - /** - * Show Hitoe set shirt dialog. - * @param activity activity - */ - public static void showHitoeSetShirtDialog(final Activity activity) { - if (activity == null) { - return; - } - LayoutInflater inflater = (LayoutInflater) activity.getSystemService( - Context.LAYOUT_INFLATER_SERVICE); - final View layout = inflater.inflate(R.layout.dialog_hitoe_set, null); - new AlertDialog.Builder(activity) - .setView(layout) - .setTitle(activity.getString(R.string.dialog_title_equip_hitoe)) - .setNeutralButton(R.string.ok, (dialogInterface,i) -> { - }) - .show(); - } - - - /** - * Show Hitoe warning message dialog. - * @param activity activity - */ - public static void showHitoeWarningMessageDialog(final Activity activity) { - if (activity == null) { - return; - } - final UserSettings userSettings = new UserSettings(activity); - if (userSettings.isWarningMessage()) { - return; - } - LayoutInflater inflater = (LayoutInflater) activity.getSystemService( - Context.LAYOUT_INFLATER_SERVICE); - final View layout = inflater.inflate(R.layout.dialog_hitoe_on, null); - ImageView explain = (ImageView) layout.findViewById(R.id.hitoe_explain); - TextView message = (TextView) layout.findViewById(R.id.explain_message); - message.setText(R.string.warning_connections); - explain.setVisibility(View.GONE); - new AlertDialog.Builder(activity) - .setView(layout) - .setTitle(activity.getString(R.string.warning_title)) - .setNeutralButton(R.string.ok, (dialogInterface, i) -> { - CheckBox nextState = layout.findViewById(R.id.chceck_next); - userSettings.setWarningMessage(nextState.isChecked()); - }) - .show(); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/dialog/ErrorDialogFragment.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/dialog/ErrorDialogFragment.java deleted file mode 100644 index bded73e96b..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/dialog/ErrorDialogFragment.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - ErrorDialogFragment - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.fragment.dialog; - -import android.app.AlertDialog; -import android.app.Dialog; -import android.content.DialogInterface; -import android.os.Bundle; - -import androidx.annotation.NonNull; -import androidx.fragment.app.DialogFragment; - -import org.deviceconnect.android.deviceplugin.hitoe.R; - - -/** - * This fragment displays a dialog of error. - * @author NTT DOCOMO, INC. - */ -public class ErrorDialogFragment extends DialogFragment { - /** - * Title's key. - */ - private static final String PARAM_TITLE = "title"; - /** - * Message's key. - */ - private static final String PARAM_MESSAGE = "message"; - /** dialog. */ - private AlertDialog mDialog; - /** dialog's listener. */ - private DialogInterface.OnDismissListener mListener; - - /** - * Initialize error dialog. - * @param title dialog's title - * @param message dialog's message - * @return error dialog - */ - public static ErrorDialogFragment newInstance(final String title, final String message) { - ErrorDialogFragment instance = new ErrorDialogFragment(); - - Bundle arguments = new Bundle(); - arguments.putString(PARAM_TITLE, title); - arguments.putString(PARAM_MESSAGE, message); - - instance.setArguments(arguments); - - return instance; - } - @NonNull - @Override - public Dialog onCreateDialog(final Bundle savedInstanceState) { - if (mDialog != null) { - return mDialog; - } - - String title = getArguments().getString(PARAM_TITLE); - String message = getArguments().getString(PARAM_MESSAGE); - - AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); - builder.setTitle(title); - builder.setMessage(message); - builder.setPositiveButton(R.string.hitoe_setting_dialog_positive, - (dialog, which) -> { - dismiss(); - }); - mDialog = builder.create(); - return mDialog; - } - - @Override - public Dialog getDialog() { - return mDialog; - } - - @Override - public void onDestroy() { - super.onDestroy(); - mDialog = null; - } - - @Override - public void onDismiss(final DialogInterface dialog) { - super.onDismiss(dialog); - if (mListener != null) { - mListener.onDismiss(dialog); - } - } - - /** - * Set listener. - * @param listener listener - */ - public void setOnDismissListener(final DialogInterface.OnDismissListener listener) { - mListener = listener; - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/dialog/PinCodeDialogFragment.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/dialog/PinCodeDialogFragment.java deleted file mode 100644 index e5c64321f0..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/dialog/PinCodeDialogFragment.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - ErrorDialogFragment - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.fragment.dialog; - -import android.app.AlertDialog; -import android.app.Dialog; -import android.content.Context; -import android.content.DialogInterface; -import android.os.Bundle; -import android.text.InputType; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.EditText; - -import androidx.annotation.NonNull; -import androidx.fragment.app.DialogFragment; - -import org.deviceconnect.android.deviceplugin.hitoe.R; - - -/** - * This fragment displays a dialog of Pincode input. - * @author NTT DOCOMO, INC. - */ -public class PinCodeDialogFragment extends DialogFragment { - /** Dialog. */ - private AlertDialog mDialog; - /** Dialog's listener. */ - private OnPinCodeListener mListener; - - /** - * Pin Code listener interface. - */ - public interface OnPinCodeListener { - /** - * Notify pin code listener. - * @param pin pin code - */ - void onPinCode(final String pin); - } - - /** - * Initialize Pin code dialog. - * @return pin code dialog - */ - public static PinCodeDialogFragment newInstance() { - return new PinCodeDialogFragment(); - } - - @NonNull - @Override - public Dialog onCreateDialog(final Bundle savedInstanceState) { - if (mDialog != null) { - return mDialog; - } - - LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService( - Context.LAYOUT_INFLATER_SERVICE); - final View layout = inflater.inflate(R.layout.dialog_hitoe_pin, null); - - AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); - builder.setTitle(getString(R.string.dialog_title_pin_input)); - final EditText pinEdit = (EditText) layout.findViewById(R.id.input_pin); - pinEdit.setInputType(InputType.TYPE_CLASS_NUMBER); - builder.setView(layout); - builder.setPositiveButton(R.string.hitoe_setting_dialog_positive, - (dialogInterface, i) -> { - String pinString = pinEdit.getText().toString(); - if (mListener != null) { - mListener.onPinCode(pinString); - } - }); - builder.setNegativeButton("Cancel", null); - mDialog = builder.create(); - return mDialog; - } - - @Override - public Dialog getDialog() { - return mDialog; - } - - @Override - public void onDestroy() { - super.onDestroy(); - mDialog = null; - } - - @Override - public void onDismiss(final DialogInterface dialog) { - super.onDismiss(dialog); - } - - /** - * Set Pin Code listener. - * @param listener listener - */ - public void setOnPinCodeListener(final OnPinCodeListener listener) { - mListener = listener; - } -} \ No newline at end of file diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/dialog/ProgressDialogFragment.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/dialog/ProgressDialogFragment.java deleted file mode 100644 index 07630e9b8a..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/dialog/ProgressDialogFragment.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - ProgressDialogFragment - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.fragment.dialog; - -import android.app.AlertDialog; -import android.app.Dialog; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.fragment.app.DialogFragment; - -import org.deviceconnect.android.deviceplugin.hitoe.R; - -/** - * This fragment displays a dialog of Progress. - * @author NTT DOCOMO, INC. - */ -public class ProgressDialogFragment extends DialogFragment { - /** Title's key. */ - private static final String PARAM_TITLE = "title"; - /** Message's key. */ - private static final String PARAM_MESSAGE = "message"; - /** - * Initialize progress dialog. - * @param title dialog's title - * @param message dialog's message - * @return progress dialog - */ - public static ProgressDialogFragment newInstance(final String title, final String message) { - ProgressDialogFragment instance = new ProgressDialogFragment(); - - Bundle arguments = new Bundle(); - arguments.putString(PARAM_TITLE, title); - arguments.putString(PARAM_MESSAGE, message); - - instance.setArguments(arguments); - - return instance; - } - - @NonNull - @Override - public Dialog onCreateDialog(final Bundle savedInstanceState) { - - String title = getArguments().getString(PARAM_TITLE); - String message = getArguments().getString(PARAM_MESSAGE); - - AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); - LayoutInflater inflater = getActivity().getLayoutInflater(); - View v = inflater.inflate(R.layout.dialog_progress, null); - TextView titleView = v.findViewById(R.id.title); - TextView messageView = v.findViewById(R.id.message); - titleView.setText(title); - messageView.setText(message); - builder.setView(v); - setCancelable(false); - return builder.create(); - } - - -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/dialog/package-info.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/dialog/package-info.java deleted file mode 100755 index 728557cc80..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/dialog/package-info.java +++ /dev/null @@ -1,12 +0,0 @@ -/* -org.deviceconnect.android.deviceplugin.hitoe.fragment.dialog -Copyright (c) 2016 NTT DOCOMO,INC. -Released under the MIT license -http://opensource.org/licenses/mit-license.php - */ - -/** - * Dialog of this device plug-in. - */ -package org.deviceconnect.android.deviceplugin.hitoe.fragment.dialog; - diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/package-info.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/package-info.java deleted file mode 100755 index 2c17ee6013..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/fragment/package-info.java +++ /dev/null @@ -1,12 +0,0 @@ -/* -org.deviceconnect.android.deviceplugin.heartrate.fragment -Copyright (c) 2014 NTT DOCOMO,INC. -Released under the MIT license -http://opensource.org/licenses/mit-license.php - */ - -/** - * Fragments of this device plug-in. - */ -package org.deviceconnect.android.deviceplugin.heartrate.fragment; - diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/package-info.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/package-info.java deleted file mode 100755 index 4dd7531f2b..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/package-info.java +++ /dev/null @@ -1,12 +0,0 @@ -/* -org.deviceconnect.android.deviceplugin.hitoe -Copyright (c) 2014 NTT DOCOMO,INC. -Released under the MIT license -http://opensource.org/licenses/mit-license.php - */ - -/** - * Managed a Hitoe device Service. - */ -package org.deviceconnect.android.deviceplugin.hitoe; - diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeBatteryProfile.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeBatteryProfile.java deleted file mode 100644 index 86a7768dfe..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeBatteryProfile.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - HitoeBatteryProfile - Copyright (c) 2015 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.profile; - -import android.content.Intent; - -import org.deviceconnect.android.deviceplugin.hitoe.HitoeApplication; -import org.deviceconnect.android.deviceplugin.hitoe.HitoeDeviceService; -import org.deviceconnect.android.deviceplugin.hitoe.data.HeartRateData; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; -import org.deviceconnect.android.message.MessageUtils; -import org.deviceconnect.android.profile.BatteryProfile; -import org.deviceconnect.android.profile.api.DConnectApi; -import org.deviceconnect.android.profile.api.GetApi; -import org.deviceconnect.message.DConnectMessage; - -/** - * Implement HitoeBatteryProfile. - * @author NTT DOCOMO, INC. - */ -public class HitoeBatteryProfile extends BatteryProfile { - - /** - * Constructor. - */ - public HitoeBatteryProfile() { - addApi(mGetAll); - addApi(mGetLevel); - } - - /** - * Get Battery all. - */ - private final DConnectApi mGetAll = new GetApi() { - @Override - public boolean onRequest(final Intent request, final Intent response) { - return getBattery(request, response); - } - }; - - /** - * Get Battery level. - */ - private final DConnectApi mGetLevel = new GetApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_LEVEL; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - return getBattery(request, response); - } - }; - - /** - * Get Battery info. - * @param request request - * @param response response - * @return true:sync, false:async - */ - private boolean getBattery(final Intent request, final Intent response) { - String serviceId = getServiceID(request); - if (serviceId == null) { - MessageUtils.setEmptyServiceIdError(response); - } else { - HitoeManager mgr = getManager(); - if (mgr == null) { - MessageUtils.setNotFoundServiceError(response); - return true; - } - HeartRateData data = mgr.getHeartRateData(serviceId); - if (data == null) { - MessageUtils.setNotFoundServiceError(response); - return true; - } - double level = data.getDevice().getBatteryLevel(); - if (level < 0) { - MessageUtils.setUnknownError(response, "Battery level is unknown."); - } else { - setResult(response, DConnectMessage.RESULT_OK); - setLevel(response, level); - } - } - return true; - } - /** - * Gets a instance of HitoeManager. - * - * @return {@link HitoeManager}, or null on error - */ - private HitoeManager getManager() { - HitoeDeviceService service = (HitoeDeviceService) getContext(); - if (service == null) { - return null; - } - HitoeApplication app = (HitoeApplication) service.getApplication(); - if (app == null) { - return null; - } - return app.getHitoeManager(); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeDeviceOrientationProfile.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeDeviceOrientationProfile.java deleted file mode 100644 index 6959fffba8..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeDeviceOrientationProfile.java +++ /dev/null @@ -1,234 +0,0 @@ -/* - HitoeDeviceOrientationProfile - Copyright (c) 2015 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.profile; - -import android.content.Intent; - -import org.deviceconnect.android.deviceplugin.hitoe.HitoeApplication; -import org.deviceconnect.android.deviceplugin.hitoe.HitoeDeviceService; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeConstants; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; -import org.deviceconnect.android.deviceplugin.hitoe.data.AccelerationData; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeDevice; -import org.deviceconnect.android.event.Event; -import org.deviceconnect.android.event.EventDispatcher; -import org.deviceconnect.android.event.EventDispatcherFactory; -import org.deviceconnect.android.event.EventDispatcherManager; -import org.deviceconnect.android.event.EventError; -import org.deviceconnect.android.event.EventManager; -import org.deviceconnect.android.message.DConnectMessageService; -import org.deviceconnect.android.message.MessageUtils; -import org.deviceconnect.android.profile.DeviceOrientationProfile; -import org.deviceconnect.android.profile.api.DConnectApi; -import org.deviceconnect.android.profile.api.DeleteApi; -import org.deviceconnect.android.profile.api.GetApi; -import org.deviceconnect.android.profile.api.PutApi; -import org.deviceconnect.message.DConnectMessage; - -import java.util.List; - -/** - * Implement DeviceOrientationProfile. - * @author NTT DOCOMO, INC. - */ -public class HitoeDeviceOrientationProfile extends DeviceOrientationProfile { - - /** - * Implementation of {@link HitoeManager.OnHitoeDeviceOrientationEventListener}. - */ - private final HitoeManager.OnHitoeDeviceOrientationEventListener mDeviceOrientationEventListener = - this::notifyAccelerationData; - - /** - * Event Dispatcher object. - */ - private EventDispatcherManager mDispatcherManager; - - /** - * Constructor. - * @param mgr instance of {@link HitoeManager} - */ - public HitoeDeviceOrientationProfile(final HitoeManager mgr) { - mgr.setHitoeDeviceOrientationEventListener(mDeviceOrientationEventListener); - mDispatcherManager = new EventDispatcherManager(); - addApi(mGetOnDeviceOrientation); - addApi(mPutOnDeviceOrientation); - addApi(mDeleteOnDeviceOrientation); - } - - /** - * Get device orientation. - */ - private final DConnectApi mGetOnDeviceOrientation = new GetApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_DEVICE_ORIENTATION; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String serviceId = getServiceID(request); - if (serviceId == null) { - MessageUtils.setEmptyServiceIdError(response); - } else { - HitoeManager mgr = getManager(); - if (mgr == null) { - MessageUtils.setNotFoundServiceError(response); - return true; - } - - AccelerationData data = mgr.getAccelerationData(serviceId); - if (data == null) { - MessageUtils.setNotFoundServiceError(response); - } else { - setResult(response, DConnectMessage.RESULT_OK); - DeviceOrientationProfile.setOrientation(response, data.toBundle()); - - } - } - return true; - } - }; - - /** - * Register event device orientation. - */ - private final DConnectApi mPutOnDeviceOrientation = new PutApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_DEVICE_ORIENTATION; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String serviceId = getServiceID(request); - if (serviceId == null) { - MessageUtils.setNotFoundServiceError(response, "Not found serviceID"); - } else { - HitoeManager mgr = getManager(); - if (mgr == null) { - MessageUtils.setNotFoundServiceError(response); - return true; - } - AccelerationData data = mgr.getAccelerationData(serviceId); - if (data == null) { - MessageUtils.setNotFoundServiceError(response); - } else { - EventError error = EventManager.INSTANCE.addEvent(request); - if (error == EventError.NONE) { - mgr.setHitoeDeviceOrientationEventListener(mDeviceOrientationEventListener); - String intervalString = request.getStringExtra("interval"); - long interval; - try { - interval = Long.parseLong(intervalString); - } catch (NumberFormatException e) { - interval = HitoeConstants.ADD_RECEIVER_PARAM_ACC_SAMPLING_INTERVAL; - } - getManager().getAccelerationData(serviceId).setTimeStamp(interval); - addEventDispatcher(request); - setResult(response, DConnectMessage.RESULT_OK); - } else { - MessageUtils.setUnknownError(response); - } - } - } - return true; - } - }; - - /** - * Unregister event device orientation. - */ - private final DConnectApi mDeleteOnDeviceOrientation = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_DEVICE_ORIENTATION; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String serviceId = getServiceID(request); - if (serviceId == null) { - MessageUtils.setEmptyServiceIdError(response); - } else { - removeEventDispatcher(request); - EventError error = EventManager.INSTANCE.removeEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else if (error == EventError.INVALID_PARAMETER) { - MessageUtils.setInvalidRequestParameterError(response); - } else if (error == EventError.FAILED) { - MessageUtils.setUnknownError(response, "Failed to delete event."); - } else if (error == EventError.NOT_FOUND) { - MessageUtils.setUnknownError(response, "Not found event."); - } else { - MessageUtils.setUnknownError(response); - } - } - return true; - } - }; - - /** - * Notify the device orientation event to DeviceConnectManager. - * @param device Identifies the remote device - * @param data Data of device orientation - */ - private void notifyAccelerationData(final HitoeDevice device, final AccelerationData data) { - List events = EventManager.INSTANCE.getEventList(device.getId(), - getProfileName(), null, ATTRIBUTE_ON_DEVICE_ORIENTATION); - synchronized (events) { - for (Event event : events) { - if (data == null) { - break; - } - - Intent intent = EventManager.createEventMessage(event); - - DeviceOrientationProfile.setOrientation(intent, data.toBundle()); - mDispatcherManager.sendEvent(event, intent); - } - } - } - - /** - * Add Event Dispatcher. - * @param request request parameter - */ - private void addEventDispatcher(final Intent request) { - Event event = EventManager.INSTANCE.getEvent(request); - EventDispatcher dispatcher = EventDispatcherFactory.createEventDispatcher( - (DConnectMessageService) getContext(), request); - mDispatcherManager.addEventDispatcher(event, dispatcher); - } - - /** - * Remove Event Dispatcher. - * @param request request parameter - */ - private void removeEventDispatcher(final Intent request) { - Event event = EventManager.INSTANCE.getEvent(request); - mDispatcherManager.removeEventDispatcher(event); - } - - /** - * Gets a instance of HitoeManager. - * - * @return {@link HitoeManager}, or null on error - */ - private HitoeManager getManager() { - HitoeDeviceService service = (HitoeDeviceService) getContext(); - if (service == null) { - return null; - } - HitoeApplication app = (HitoeApplication) service.getApplication(); - if (app == null) { - return null; - } - return app.getHitoeManager(); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeECGProfile.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeECGProfile.java deleted file mode 100644 index 4cc24a4fcc..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeECGProfile.java +++ /dev/null @@ -1,222 +0,0 @@ -/* - HitoeECGProfile - Copyright (c) 2015 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.profile; - -import android.content.Intent; - -import org.deviceconnect.android.deviceplugin.hitoe.HitoeApplication; -import org.deviceconnect.android.deviceplugin.hitoe.HitoeDeviceService; -import org.deviceconnect.android.deviceplugin.hitoe.data.HeartRateData; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeDevice; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; -import org.deviceconnect.android.event.Event; -import org.deviceconnect.android.event.EventDispatcherFactory; -import org.deviceconnect.android.event.EventError; -import org.deviceconnect.android.event.EventManager; -import org.deviceconnect.android.message.DConnectMessageService; -import org.deviceconnect.android.message.MessageUtils; -import org.deviceconnect.android.profile.ECGProfile; -import org.deviceconnect.android.event.EventDispatcher; -import org.deviceconnect.android.event.EventDispatcherManager; -import org.deviceconnect.android.profile.api.DConnectApi; -import org.deviceconnect.android.profile.api.DeleteApi; -import org.deviceconnect.android.profile.api.GetApi; -import org.deviceconnect.android.profile.api.PutApi; -import org.deviceconnect.message.DConnectMessage; - -import java.util.List; - -/** - * Implement ECGProfile. - * @author NTT DOCOMO, INC. - */ -public class HitoeECGProfile extends ECGProfile { - - /** - * Implementation of {@link HitoeManager.OnHitoeECGEventListener}. - */ - private final HitoeManager.OnHitoeECGEventListener mECGEventListener = - this::notifyECGData; - /** - * Event Dispatcher object. - */ - private EventDispatcherManager mDispatcherManager; - - /** - * Constructor. - * @param mgr instance of {@link HitoeManager} - */ - public HitoeECGProfile(final HitoeManager mgr) { - mgr.setHitoeECGEventListener(mECGEventListener); - mDispatcherManager = new EventDispatcherManager(); - addApi(mGetOnECG); - addApi(mPutOnECG); - addApi(mDeleteOnECG); - } - - /** - * Get ECG. - */ - private final DConnectApi mGetOnECG = new GetApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_ECG; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String serviceId = getServiceID(request); - if (serviceId == null) { - MessageUtils.setEmptyServiceIdError(response); - } else { - HitoeManager mgr = getManager(); - if (mgr == null) { - MessageUtils.setNotFoundServiceError(response); - return true; - } - HeartRateData data = mgr.getECGData(serviceId); - if (data == null) { - MessageUtils.setNotFoundServiceError(response); - } else { - setResult(response, DConnectMessage.RESULT_OK); - setECG(response, data.getECG().toBundle()); - } - } - return true; - } - }; - - /** - * Register event ECG. - */ - private final DConnectApi mPutOnECG = new PutApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_ECG; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String serviceId = getServiceID(request); - if (serviceId == null) { - MessageUtils.setNotFoundServiceError(response, "Not found serviceID"); - } else { - HitoeManager mgr = getManager(); - if (mgr == null) { - MessageUtils.setNotFoundServiceError(response); - return true; - } - HeartRateData data = mgr.getECGData(serviceId); - if (data == null) { - MessageUtils.setNotFoundServiceError(response); - } else { - EventError error = EventManager.INSTANCE.addEvent(request); - if (error == EventError.NONE) { - mgr.setHitoeECGEventListener(mECGEventListener); - addEventDispatcher(request); - setResult(response, DConnectMessage.RESULT_OK); - } else { - MessageUtils.setUnknownError(response); - } - } - } - return true; - } - }; - - /** - * Unregister event ECG. - */ - private final DConnectApi mDeleteOnECG = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_ECG; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String serviceId = getServiceID(request); - if (serviceId == null) { - MessageUtils.setEmptyServiceIdError(response); - } else { - removeEventDispatcher(request); - EventError error = EventManager.INSTANCE.removeEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else if (error == EventError.INVALID_PARAMETER) { - MessageUtils.setInvalidRequestParameterError(response); - } else if (error == EventError.FAILED) { - MessageUtils.setUnknownError(response, "Failed to delete event."); - } else if (error == EventError.NOT_FOUND) { - MessageUtils.setUnknownError(response, "Not found event."); - } else { - MessageUtils.setUnknownError(response); - } - } - return true; - } - }; - - /** - * Notify the ECG event to DeviceConnectManager. - * @param device Identifies the remote device - * @param data Data of ecg - */ - private void notifyECGData(final HitoeDevice device, final HeartRateData data) { - List events = EventManager.INSTANCE.getEventList(device.getId(), - getProfileName(), null, ATTRIBUTE_ON_ECG); - synchronized (events) { - for (Event event : events) { - if (data == null) { - break; - } - - Intent intent = EventManager.createEventMessage(event); - - setECG(intent, data.getECG().toBundle()); - mDispatcherManager.sendEvent(event, intent); - } - } - } - - /** - * Add Event Dispatcher. - * @param request request parameter - */ - private void addEventDispatcher(final Intent request) { - Event event = EventManager.INSTANCE.getEvent(request); - EventDispatcher dispatcher = EventDispatcherFactory.createEventDispatcher( - (DConnectMessageService) getContext(), request); - mDispatcherManager.addEventDispatcher(event, dispatcher); - } - - /** - * Remove Event Dispatcher. - * @param request request parameter - */ - private void removeEventDispatcher(final Intent request) { - Event event = EventManager.INSTANCE.getEvent(request); - mDispatcherManager.removeEventDispatcher(event); - } - - /** - * Gets a instance of HitoeManager. - * - * @return {@link HitoeManager}, or null on error - */ - private HitoeManager getManager() { - HitoeDeviceService service = (HitoeDeviceService) getContext(); - if (service == null) { - return null; - } - HitoeApplication app = (HitoeApplication) service.getApplication(); - if (app == null) { - return null; - } - return app.getHitoeManager(); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeHealthProfile.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeHealthProfile.java deleted file mode 100644 index 8d3471e971..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeHealthProfile.java +++ /dev/null @@ -1,339 +0,0 @@ -/* - HitoeHealthProfile - Copyright (c) 2015 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.profile; - -import android.content.Intent; -import android.os.Bundle; - -import org.deviceconnect.android.deviceplugin.hitoe.HitoeApplication; -import org.deviceconnect.android.deviceplugin.hitoe.HitoeDeviceService; -import org.deviceconnect.android.deviceplugin.hitoe.data.HeartRateData; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeDevice; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; -import org.deviceconnect.android.event.Event; -import org.deviceconnect.android.event.EventDispatcher; -import org.deviceconnect.android.event.EventDispatcherFactory; -import org.deviceconnect.android.event.EventDispatcherManager; -import org.deviceconnect.android.event.EventError; -import org.deviceconnect.android.event.EventManager; -import org.deviceconnect.android.message.DConnectMessageService; -import org.deviceconnect.android.message.MessageUtils; -import org.deviceconnect.android.profile.HealthProfile; -import org.deviceconnect.android.profile.api.DConnectApi; -import org.deviceconnect.android.profile.api.DeleteApi; -import org.deviceconnect.android.profile.api.GetApi; -import org.deviceconnect.android.profile.api.PutApi; -import org.deviceconnect.message.DConnectMessage; - -import java.util.List; - -/** - * Implement HealthProfile. - * @author NTT DOCOMO, INC. - */ -public class HitoeHealthProfile extends HealthProfile { - - /** - * Implementation of {@link HitoeManager.OnHitoeHeartRateEventListener}. - */ - private final HitoeManager.OnHitoeHeartRateEventListener mHeartRateEventListener = - this::notifyHeartRateData; - - /** - * Event Dispatcher object. - */ - private EventDispatcherManager mDispatcherManager; - - /** - * Constructor. - * @param mgr instance of {@link HitoeManager} - */ - public HitoeHealthProfile(final HitoeManager mgr) { - mgr.setHitoeHeartRateEventListener(mHeartRateEventListener); - mDispatcherManager = new EventDispatcherManager(); - addApi(mGetHeart); - addApi(mPutHeart); - addApi(mDeleteHeart); - addApi(mGetOnHeart); - addApi(mPutOnHeart); - addApi(mDeleteOnHeart); - } - - /** - * Get Heart rate. - */ - private final DConnectApi mGetHeart = new GetApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_HEART; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - return getHeart(request, response); - } - }; - - - /** - * Register event heartrate. - */ - private final DConnectApi mPutHeart = new PutApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_HEART; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - return registerHeartEvent(request, response); - } - }; - - - /** - * Unregister event heartrate. - */ - private final DConnectApi mDeleteHeart = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_HEART; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - unregisterHeartEvent(request, response); - return true; - } - }; - - /** - * Get Heart rate. - */ - private final DConnectApi mGetOnHeart = new GetApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ONHEART; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - return getHeart(request, response); - } - }; - - - /** - * Register event heartrate. - */ - private final DConnectApi mPutOnHeart = new PutApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ONHEART; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - return registerHeartEvent(request, response); - } - }; - - - /** - * Unregister event heartrate. - */ - private final DConnectApi mDeleteOnHeart = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ONHEART; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - unregisterHeartEvent(request, response); - return true; - } - }; - - - /** - * Get HeartRate Response. - * @param request Request Message - * @param response Response Message - * @return true:sync false:async - */ - private boolean getHeart(Intent request, Intent response) { - String serviceId = getServiceID(request); - if (serviceId == null) { - MessageUtils.setEmptyServiceIdError(response); - } else { - HitoeManager mgr = getManager(); - if (mgr == null) { - MessageUtils.setNotFoundServiceError(response); - return true; - } - HeartRateData data = mgr.getHeartRateData(serviceId); - if (data == null) { - MessageUtils.setNotFoundServiceError(response); - } else { - setResult(response, DConnectMessage.RESULT_OK); - setHeart(response, getHeartRateBundle(data)); - } - } - return true; - } - - /** - * Register Heartrate Event. - * @param request Request Message - * @param response Response Message - */ - private boolean registerHeartEvent(Intent request, Intent response) { - String serviceId = getServiceID(request); - if (serviceId == null) { - MessageUtils.setNotFoundServiceError(response, "Not found serviceID"); - } else { - HitoeManager mgr = getManager(); - if (mgr == null) { - MessageUtils.setNotFoundServiceError(response); - return true; - } - - HeartRateData data = mgr.getHeartRateData(serviceId); - if (data == null) { - MessageUtils.setNotFoundServiceError(response); - } else { - EventError error = EventManager.INSTANCE.addEvent(request); - if (error == EventError.NONE) { - mgr.setHitoeHeartRateEventListener(mHeartRateEventListener); - addEventDispatcher(request); - setResult(response, DConnectMessage.RESULT_OK); - } else { - MessageUtils.setUnknownError(response); - } - } - } - return true; - } - /** - * Unregister Heartrate Event. - * @param request Request Message - * @param response Response Message - */ - private void unregisterHeartEvent(Intent request, Intent response) { - String serviceId = getServiceID(request); - if (serviceId == null) { - MessageUtils.setEmptyServiceIdError(response); - } else { - removeEventDispatcher(request); - EventError error = EventManager.INSTANCE.removeEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else if (error == EventError.INVALID_PARAMETER) { - MessageUtils.setInvalidRequestParameterError(response); - } else if (error == EventError.FAILED) { - MessageUtils.setUnknownError(response, "Failed to delete event."); - } else if (error == EventError.NOT_FOUND) { - MessageUtils.setUnknownError(response, "Not found event."); - } else { - MessageUtils.setUnknownError(response); - } - } - } - - /** - * Notify the heart rate event to DeviceConnectManager. - * @param device Identifies the remote device - * @param data Data of heart rate - */ - private void notifyHeartRateData(final HitoeDevice device, final HeartRateData data) { - List events = EventManager.INSTANCE.getEventList(device.getId(), - getProfileName(), null, ATTRIBUTE_HEART); - synchronized (events) { - for (Event event : events) { - if (data == null) { - break; - } - - Intent intent = EventManager.createEventMessage(event); - - setHeart(intent, getHeartRateBundle(data)); - mDispatcherManager.sendEvent(event, intent); - } - } - events = EventManager.INSTANCE.getEventList(device.getId(), - getProfileName(), null, ATTRIBUTE_ONHEART); - synchronized (events) { - for (Event event : events) { - if (data == null) { - break; - } - - Intent intent = EventManager.createEventMessage(event); - - setHeart(intent, getHeartRateBundle(data)); - mDispatcherManager.sendEvent(event, intent); - } - } - } - - /** - * Get Heartrate bundle object. - * @param data heartrate data - * @return bundle object - */ - private Bundle getHeartRateBundle(final HeartRateData data) { - Bundle heart = new Bundle(); - HealthProfile.setRate(heart, data.getHeartRate().toBundle()); - if (data.getRRInterval() != null) { - HealthProfile.setRRI(heart, data.getRRInterval().toBundle()); - } - if (data.getEnergyExpended() != null) { - HealthProfile.setEnergyExtended(heart, data.getEnergyExpended().toBundle()); - } - if (data.getDevice() != null) { - HealthProfile.setDevice(heart, data.getDevice().toBundle()); - } - return heart; - } - - /** - * Add Event Dispatcher. - * @param request request parameter - */ - private void addEventDispatcher(final Intent request) { - Event event = EventManager.INSTANCE.getEvent(request); - EventDispatcher dispatcher = EventDispatcherFactory.createEventDispatcher( - (DConnectMessageService) getContext(), request); - mDispatcherManager.addEventDispatcher(event, dispatcher); - } - - /** - * Remove Event Dispatcher. - * @param request request parameter - */ - private void removeEventDispatcher(final Intent request) { - Event event = EventManager.INSTANCE.getEvent(request); - mDispatcherManager.removeEventDispatcher(event); - } - /** - * Gets a instance of HitoeManager. - * - * @return {@link HitoeManager}, or null on error - */ - private HitoeManager getManager() { - HitoeDeviceService service = (HitoeDeviceService) getContext(); - if (service == null) { - return null; - } - HitoeApplication app = (HitoeApplication) service.getApplication(); - if (app == null) { - return null; - } - return app.getHitoeManager(); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoePoseEstimationProfile.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoePoseEstimationProfile.java deleted file mode 100644 index 8f663907f8..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoePoseEstimationProfile.java +++ /dev/null @@ -1,223 +0,0 @@ -/* - HitoePoseEstimationProfile - Copyright (c) 2015 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.profile; - -import android.content.Intent; - -import org.deviceconnect.android.deviceplugin.hitoe.HitoeApplication; -import org.deviceconnect.android.deviceplugin.hitoe.HitoeDeviceService; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeDevice; -import org.deviceconnect.android.deviceplugin.hitoe.data.PoseEstimationData; -import org.deviceconnect.android.event.Event; -import org.deviceconnect.android.event.EventDispatcher; -import org.deviceconnect.android.event.EventDispatcherFactory; -import org.deviceconnect.android.event.EventDispatcherManager; -import org.deviceconnect.android.event.EventError; -import org.deviceconnect.android.event.EventManager; -import org.deviceconnect.android.message.DConnectMessageService; -import org.deviceconnect.android.message.MessageUtils; -import org.deviceconnect.android.profile.PoseEstimationProfile; -import org.deviceconnect.android.profile.api.DConnectApi; -import org.deviceconnect.android.profile.api.DeleteApi; -import org.deviceconnect.android.profile.api.GetApi; -import org.deviceconnect.android.profile.api.PutApi; -import org.deviceconnect.message.DConnectMessage; - -import java.util.List; - -/** - * Implement PoseEstimationProfile. - * @author NTT DOCOMO, INC. - */ -public class HitoePoseEstimationProfile extends PoseEstimationProfile { - - /** - * Implementation of {@link HitoeManager.OnHitoePoseEstimationEventListener}. - */ - private final HitoeManager.OnHitoePoseEstimationEventListener mPoseEstimationEventListener = - this::notifyPoseEstimationData; - /** - * Event Dispatcher object. - */ - private EventDispatcherManager mDispatcherManager; - - /** - * Constructor. - * @param mgr instance of {@link HitoeManager} - */ - public HitoePoseEstimationProfile(final HitoeManager mgr) { - mgr.setHitoePoseEstimationEventListener(mPoseEstimationEventListener); - mDispatcherManager = new EventDispatcherManager(); - addApi(mGetOnPose); - addApi(mPutOnPose); - addApi(mDeleteOnPose); - } - - /** - * Get Pose estimation. - */ - private final DConnectApi mGetOnPose = new GetApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_POSE_ESTIMATION; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String serviceId = getServiceID(request); - if (serviceId == null) { - MessageUtils.setEmptyServiceIdError(response); - } else { - HitoeManager mgr = getManager(); - if (mgr == null) { - MessageUtils.setNotFoundServiceError(response); - return true; - } - - PoseEstimationData data = mgr.getPoseEstimationData(serviceId); - if (data == null) { - MessageUtils.setNotFoundServiceError(response); - } else { - setResult(response, DConnectMessage.RESULT_OK); - setPose(response, data.toBundle()); - } - } - return true; - } - }; - - /** - * Register event pose estimation. - */ - private final DConnectApi mPutOnPose = new PutApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_POSE_ESTIMATION; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String serviceId = getServiceID(request); - if (serviceId == null) { - MessageUtils.setNotFoundServiceError(response, "Not found serviceID"); - } else { - HitoeManager mgr = getManager(); - if (mgr == null) { - MessageUtils.setNotFoundServiceError(response); - return true; - } - PoseEstimationData data = mgr.getPoseEstimationData(serviceId); - if (data == null) { - MessageUtils.setNotFoundServiceError(response); - } else { - EventError error = EventManager.INSTANCE.addEvent(request); - if (error == EventError.NONE) { - mgr.setHitoePoseEstimationEventListener(mPoseEstimationEventListener); - addEventDispatcher(request); - setResult(response, DConnectMessage.RESULT_OK); - } else { - MessageUtils.setUnknownError(response); - } - } - } - return true; - } - }; - - /** - * Unregister event pose estimation. - */ - private final DConnectApi mDeleteOnPose = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_POSE_ESTIMATION; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String serviceId = getServiceID(request); - if (serviceId == null) { - MessageUtils.setEmptyServiceIdError(response); - } else { - removeEventDispatcher(request); - EventError error = EventManager.INSTANCE.removeEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else if (error == EventError.INVALID_PARAMETER) { - MessageUtils.setInvalidRequestParameterError(response); - } else if (error == EventError.FAILED) { - MessageUtils.setUnknownError(response, "Failed to delete event."); - } else if (error == EventError.NOT_FOUND) { - MessageUtils.setUnknownError(response, "Not found event."); - } else { - MessageUtils.setUnknownError(response); - } - } - return true; - } - }; - - /** - * Notify the stress estimation event to DeviceConnectManager. - * @param device Identifies the remote device - * @param data Data of Stress Estimation - */ - private void notifyPoseEstimationData(final HitoeDevice device, final PoseEstimationData data) { - List events = EventManager.INSTANCE.getEventList(device.getId(), - getProfileName(), null, ATTRIBUTE_ON_POSE_ESTIMATION); - synchronized (events) { - for (Event event : events) { - if (data == null) { - break; - } - - Intent intent = EventManager.createEventMessage(event); - - setPose(intent, data.toBundle()); - mDispatcherManager.sendEvent(event, intent); - } - } - } - /** - * Add Event Dispatcher. - * @param request request parameter - */ - private void addEventDispatcher(final Intent request) { - Event event = EventManager.INSTANCE.getEvent(request); - EventDispatcher dispatcher = EventDispatcherFactory.createEventDispatcher( - (DConnectMessageService) getContext(), request); - mDispatcherManager.addEventDispatcher(event, dispatcher); - } - - /** - * Remove Event Dispatcher. - * @param request request parameter - */ - private void removeEventDispatcher(final Intent request) { - Event event = EventManager.INSTANCE.getEvent(request); - mDispatcherManager.removeEventDispatcher(event); - } - - - /** - * Gets a instance of HitoeManager. - * - * @return {@link HitoeManager}, or null on error - */ - private HitoeManager getManager() { - HitoeDeviceService service = (HitoeDeviceService) getContext(); - if (service == null) { - return null; - } - HitoeApplication app = (HitoeApplication) service.getApplication(); - if (app == null) { - return null; - } - return app.getHitoeManager(); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeServiceDiscoveryProfile.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeServiceDiscoveryProfile.java deleted file mode 100644 index 3d6e7c8148..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeServiceDiscoveryProfile.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - HitoeServiceDiscoveryProfile - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.profile; - -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.os.Handler; -import android.os.HandlerThread; - -import androidx.annotation.NonNull; - -import org.deviceconnect.android.activity.PermissionUtility; -import org.deviceconnect.android.deviceplugin.hitoe.util.BleUtils; -import org.deviceconnect.android.message.DConnectMessageService; -import org.deviceconnect.android.message.MessageUtils; -import org.deviceconnect.android.profile.ServiceDiscoveryProfile; -import org.deviceconnect.android.profile.api.DConnectApi; -import org.deviceconnect.android.profile.api.GetApi; -import org.deviceconnect.android.service.DConnectServiceProvider; -import org.deviceconnect.message.DConnectMessage; - -import java.util.ArrayList; -import java.util.List; - -/** - * ServiceDiscoveryProfile. - * @author NTT DOCOMO, INC. - */ -public class HitoeServiceDiscoveryProfile extends ServiceDiscoveryProfile { - - private final HandlerThread mWorkerThread; - - private final DConnectApi mServiceDiscoveryApi = new GetApi() { - @Override - public boolean onRequest(final Intent request, final Intent response) { - if (!BleUtils.isBLESupported(getContext())) { - mLogger.warning("BLE not supported."); - List services = new ArrayList<>(); - setResult(response, DConnectMessage.RESULT_OK); - setServices(response, services); - return true; - } - - final Runnable perform = () -> { - appendServiceList(response); - }; - - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - perform.run(); - return true; - } else { - if (BleUtils.isBLEPermission(getContext())) { - perform.run(); - return true; - } else { - PermissionUtility.requestPermissions(getContext(), new Handler(mWorkerThread.getLooper()), - BleUtils.BLE_PERMISSIONS, - new PermissionUtility.PermissionRequestCallback() { - @Override - public void onSuccess() { - perform.run(); - sendResponses(response); - } - - @Override - public void onFail(@NonNull String deniedPermission) { - MessageUtils.setIllegalServerStateError(response, - "Bluetooth LE scan requires permissions ACCESS_COARSE_LOCATION and ACCESS_FINE_LOCATION."); - sendResponses(response); - } - }); - return false; - } - } - } - }; - - /** - * コンストラクタ. - * @param provider プロファイルプロバイダ - */ - public HitoeServiceDiscoveryProfile(final DConnectServiceProvider provider) { - super(provider); - mWorkerThread = new HandlerThread(getClass().getSimpleName() + "_" + this.hashCode()); - mWorkerThread.start(); - - addApi(mServiceDiscoveryApi); - } - - @Override - protected void finalize() throws Throwable { - super.finalize(); - mWorkerThread.quit(); - } - - private void sendResponses(final Intent response) { - DConnectMessageService s = (DConnectMessageService) getContext(); - s.sendResponse(response); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeStressEstimationProfile.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeStressEstimationProfile.java deleted file mode 100644 index 32d02ff0b2..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeStressEstimationProfile.java +++ /dev/null @@ -1,227 +0,0 @@ -/* - HitoeStressEstimationProfile - Copyright (c) 2015 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.profile; - -import android.content.Intent; - -import org.deviceconnect.android.deviceplugin.hitoe.HitoeApplication; -import org.deviceconnect.android.deviceplugin.hitoe.HitoeDeviceService; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeDevice; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; -import org.deviceconnect.android.deviceplugin.hitoe.data.StressEstimationData; -import org.deviceconnect.android.event.Event; -import org.deviceconnect.android.event.EventDispatcher; -import org.deviceconnect.android.event.EventDispatcherFactory; -import org.deviceconnect.android.event.EventDispatcherManager; -import org.deviceconnect.android.event.EventError; -import org.deviceconnect.android.event.EventManager; -import org.deviceconnect.android.message.DConnectMessageService; -import org.deviceconnect.android.message.MessageUtils; -import org.deviceconnect.android.profile.StressEstimationProfile; -import org.deviceconnect.android.profile.api.DConnectApi; -import org.deviceconnect.android.profile.api.DeleteApi; -import org.deviceconnect.android.profile.api.GetApi; -import org.deviceconnect.android.profile.api.PutApi; -import org.deviceconnect.message.DConnectMessage; - -import java.util.List; - -/** - * Implement StressEstimationProfile. - * @author NTT DOCOMO, INC. - */ -public class HitoeStressEstimationProfile extends StressEstimationProfile { - - /** - * Implementation of {@link HitoeManager.OnHitoeStressEstimationEventListener}. - */ - private final HitoeManager.OnHitoeStressEstimationEventListener mStressEstimationEventListener = - new HitoeManager.OnHitoeStressEstimationEventListener() { - @Override - public void onReceivedData(final HitoeDevice device, final StressEstimationData data) { - notifyStressEstimationData(device, data); - } - }; - /** - * Event Dispatcher object. - */ - private EventDispatcherManager mDispatcherManager; - - /** - * Constructor. - * @param mgr instance of {@link HitoeManager} - */ - public HitoeStressEstimationProfile(final HitoeManager mgr) { - mgr.setHitoeStressEstimationEventListener(mStressEstimationEventListener); - mDispatcherManager = new EventDispatcherManager(); - addApi(mGetOnStress); - addApi(mPutOnStress); - addApi(mDeleteOnStress); - } - - /** - * Get Stress estimation. - */ - private final DConnectApi mGetOnStress = new GetApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_STRESS_ESTIMATION; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String serviceId = getServiceID(request); - if (serviceId == null) { - MessageUtils.setEmptyServiceIdError(response); - } else { - HitoeManager mgr = getManager(); - if (mgr == null) { - MessageUtils.setNotFoundServiceError(response); - return true; - } - StressEstimationData data = mgr.getStressEstimationData(serviceId); - if (data == null) { - MessageUtils.setNotFoundServiceError(response); - } else { - setResult(response, DConnectMessage.RESULT_OK); - setStress(response, data.toBundle()); - } - } - return true; - } - }; - - /** - * Register event stress estimation. - */ - private final DConnectApi mPutOnStress = new PutApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_STRESS_ESTIMATION; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String serviceId = getServiceID(request); - if (serviceId == null) { - MessageUtils.setNotFoundServiceError(response, "Not found serviceID"); - } else { - HitoeManager mgr = getManager(); - if (mgr == null) { - MessageUtils.setNotFoundServiceError(response); - return true; - } - StressEstimationData data = mgr.getStressEstimationData(serviceId); - if (data == null) { - MessageUtils.setNotFoundServiceError(response); - } else { - EventError error = EventManager.INSTANCE.addEvent(request); - if (error == EventError.NONE) { - mgr.setHitoeStressEstimationEventListener(mStressEstimationEventListener); - addEventDispatcher(request); - setResult(response, DConnectMessage.RESULT_OK); - } else { - MessageUtils.setUnknownError(response); - } - } - } - return true; - } - }; - - /** - * Unregister event stress estimation. - */ - private final DConnectApi mDeleteOnStress = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_STRESS_ESTIMATION; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String serviceId = getServiceID(request); - if (serviceId == null) { - MessageUtils.setEmptyServiceIdError(response); - } else { - removeEventDispatcher(request); - EventError error = EventManager.INSTANCE.removeEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else if (error == EventError.INVALID_PARAMETER) { - MessageUtils.setInvalidRequestParameterError(response); - } else if (error == EventError.FAILED) { - MessageUtils.setUnknownError(response, "Failed to delete event."); - } else if (error == EventError.NOT_FOUND) { - MessageUtils.setUnknownError(response, "Not found event."); - } else { - MessageUtils.setUnknownError(response); - } - } - return true; - } - }; - - /** - * Notify the stress estimation event to DeviceConnectManager. - * @param device Identifies the remote device - * @param data Data of Stress Estimation - */ - private void notifyStressEstimationData(final HitoeDevice device, final StressEstimationData data) { - List events = EventManager.INSTANCE.getEventList(device.getId(), - getProfileName(), null, ATTRIBUTE_ON_STRESS_ESTIMATION); - synchronized (events) { - for (Event event : events) { - if (data == null) { - break; - } - Intent intent = EventManager.createEventMessage(event); - - setStress(intent, data.toBundle()); - mDispatcherManager.sendEvent(event, intent); - } - } - } - - /** - * Add Event Dispatcher. - * @param request request parameter - */ - private void addEventDispatcher(final Intent request) { - Event event = EventManager.INSTANCE.getEvent(request); - EventDispatcher dispatcher = EventDispatcherFactory.createEventDispatcher( - (DConnectMessageService) getContext(), request); - mDispatcherManager.addEventDispatcher(event, dispatcher); - } - - /** - * Remove Event Dispatcher. - * @param request request parameter - */ - private void removeEventDispatcher(final Intent request) { - Event event = EventManager.INSTANCE.getEvent(request); - mDispatcherManager.removeEventDispatcher(event); - } - - - /** - * Gets a instance of HitoeManager. - * - * @return {@link HitoeManager}, or null on error - */ - private HitoeManager getManager() { - HitoeDeviceService service = (HitoeDeviceService) getContext(); - if (service == null) { - return null; - } - HitoeApplication app = (HitoeApplication) service.getApplication(); - if (app == null) { - return null; - } - return app.getHitoeManager(); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeSystemProfile.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeSystemProfile.java deleted file mode 100644 index 752b89440a..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeSystemProfile.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - HitoeSystemProfile - Copyright (c) 2015 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.profile; - -import android.app.Activity; -import android.content.Intent; -import android.os.Bundle; - -import org.deviceconnect.android.deviceplugin.hitoe.activity.HitoeDeviceListActivity; -import org.deviceconnect.android.profile.SystemProfile; - -/** - * Implement SystemProfile. - * @author NTT DOCOMO, INC. - */ -public class HitoeSystemProfile extends SystemProfile { - @Override - protected Class getSettingPageActivity(final Intent request, final Bundle param) { - return HitoeDeviceListActivity.class; - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeWalkStateProfile.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeWalkStateProfile.java deleted file mode 100644 index f585371cfa..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/HitoeWalkStateProfile.java +++ /dev/null @@ -1,223 +0,0 @@ -/* - HitoeWalkStateProfile - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.profile; - -import android.content.Intent; - -import org.deviceconnect.android.deviceplugin.hitoe.HitoeApplication; -import org.deviceconnect.android.deviceplugin.hitoe.HitoeDeviceService; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeDevice; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeManager; -import org.deviceconnect.android.deviceplugin.hitoe.data.WalkStateData; -import org.deviceconnect.android.event.Event; -import org.deviceconnect.android.event.EventDispatcher; -import org.deviceconnect.android.event.EventDispatcherFactory; -import org.deviceconnect.android.event.EventDispatcherManager; -import org.deviceconnect.android.event.EventError; -import org.deviceconnect.android.event.EventManager; -import org.deviceconnect.android.message.DConnectMessageService; -import org.deviceconnect.android.message.MessageUtils; -import org.deviceconnect.android.profile.WalkStateProfile; -import org.deviceconnect.android.profile.api.DConnectApi; -import org.deviceconnect.android.profile.api.DeleteApi; -import org.deviceconnect.android.profile.api.GetApi; -import org.deviceconnect.android.profile.api.PutApi; -import org.deviceconnect.message.DConnectMessage; - -import java.util.List; - -/** - * Implement WalkStateProfile. - * @author NTT DOCOMO, INC. - */ -public class HitoeWalkStateProfile extends WalkStateProfile { - - /** - * Implementation of {@link HitoeManager.OnHitoeWalkStateEventListener}. - */ - private final HitoeManager.OnHitoeWalkStateEventListener mWalkStateEventListener = - this::notifyWalkStateData; - /** - * Event Dispatcher object. - */ - private EventDispatcherManager mDispatcherManager; - - - /** - * Constructor. - * @param mgr instance of {@link HitoeManager} - */ - public HitoeWalkStateProfile(final HitoeManager mgr) { - mgr.setHitoeWalkStateEventListener(mWalkStateEventListener); - mDispatcherManager = new EventDispatcherManager(); - addApi(mGetOnWalk); - addApi(mPutOnWalk); - addApi(mDeleteOnWalk); - - } - - /** - * Get walk state. - */ - private final DConnectApi mGetOnWalk = new GetApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_WALK_STATE; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String serviceId = getServiceID(request); - if (serviceId == null) { - MessageUtils.setEmptyServiceIdError(response); - } else { - HitoeManager mgr = getManager(); - if (mgr == null) { - MessageUtils.setNotFoundServiceError(response); - return true; - } - WalkStateData data = mgr.getWalkStateData(serviceId); - if (data == null) { - MessageUtils.setNotFoundServiceError(response); - } else { - setResult(response, DConnectMessage.RESULT_OK); - setWalk(response, data.toBundle()); - } - } - return true; - } - }; - - /** - * Register event walk state. - */ - private final DConnectApi mPutOnWalk = new PutApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_WALK_STATE; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String serviceId = getServiceID(request); - if (serviceId == null) { - MessageUtils.setNotFoundServiceError(response, "Not found serviceID"); - } else { - HitoeManager mgr = getManager(); - if (mgr == null) { - MessageUtils.setNotFoundServiceError(response); - return true; - } - WalkStateData data = mgr.getWalkStateData(serviceId); - if (data == null) { - MessageUtils.setNotFoundServiceError(response); - } else { - EventError error = EventManager.INSTANCE.addEvent(request); - if (error == EventError.NONE) { - mgr.setHitoeWalkStateEventListener(mWalkStateEventListener); - addEventDispatcher(request); - setResult(response, DConnectMessage.RESULT_OK); - } else { - MessageUtils.setUnknownError(response); - } - } - } - return true; - } - }; - - /** - * Unregister event walk state. - */ - private final DConnectApi mDeleteOnWalk = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_WALK_STATE; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String serviceId = getServiceID(request); - if (serviceId == null) { - MessageUtils.setEmptyServiceIdError(response); - } else { - removeEventDispatcher(request); - EventError error = EventManager.INSTANCE.removeEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else if (error == EventError.INVALID_PARAMETER) { - MessageUtils.setInvalidRequestParameterError(response); - } else if (error == EventError.FAILED) { - MessageUtils.setUnknownError(response, "Failed to delete event."); - } else if (error == EventError.NOT_FOUND) { - MessageUtils.setUnknownError(response, "Not found event."); - } else { - MessageUtils.setUnknownError(response); - } - } - return true; - } - }; - - /** - * Notify the stress estimation event to DeviceConnectManager. - * @param device Identifies the remote device - * @param data Data of Stress Estimation - */ - private void notifyWalkStateData(final HitoeDevice device, final WalkStateData data) { - List events = EventManager.INSTANCE.getEventList(device.getId(), - getProfileName(), null, ATTRIBUTE_ON_WALK_STATE); - synchronized (events) { - for (Event event : events) { - if (data == null) { - break; - } - - Intent intent = EventManager.createEventMessage(event); - setWalk(intent, data.toBundle()); - mDispatcherManager.sendEvent(event, intent); - } - } - } - - /** - * Add Event Dispatcher. - * @param request request parameter - */ - private void addEventDispatcher(final Intent request) { - Event event = EventManager.INSTANCE.getEvent(request); - EventDispatcher dispatcher = EventDispatcherFactory.createEventDispatcher( - (DConnectMessageService) getContext(), request); - mDispatcherManager.addEventDispatcher(event, dispatcher); - } - - /** - * Remove Event Dispatcher. - * @param request request parameter - */ - private void removeEventDispatcher(final Intent request) { - Event event = EventManager.INSTANCE.getEvent(request); - mDispatcherManager.removeEventDispatcher(event); - } - - /** - * Gets a instance of HitoeManager. - * - * @return {@link HitoeManager}, or null on error - */ - private HitoeManager getManager() { - HitoeDeviceService service = (HitoeDeviceService) getContext(); - if (service == null) { - return null; - } - HitoeApplication app = (HitoeApplication) service.getApplication(); - if (app == null) { - return null; - } - return app.getHitoeManager(); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/package-info.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/package-info.java deleted file mode 100755 index 892d25746f..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/profile/package-info.java +++ /dev/null @@ -1,12 +0,0 @@ -/* -org.deviceconnect.android.deviceplugin.hitoe.profile -Copyright (c) 2014 NTT DOCOMO,INC. -Released under the MIT license -http://opensource.org/licenses/mit-license.php - */ - -/** - * Profiles of this device plug-in. - */ -package org.deviceconnect.android.deviceplugin.hitoe.profile; - diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/BleUtils.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/BleUtils.java deleted file mode 100644 index 11292ded9b..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/BleUtils.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - BleUtils - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.util; - -import android.Manifest; -import android.bluetooth.BluetoothAdapter; -import android.bluetooth.BluetoothManager; -import android.content.Context; -import android.content.pm.PackageManager; -import android.os.Build; - -/** - * A class containing utility methods related to BLE. - * @author NTT DOCOMO, INC. - */ -public final class BleUtils { - - // 1800 Generic Access - public static final String SERVICE_GENERIC_ACCESS = "00001800-0000-1000-8000-00805f9b34fb"; - public static final String CHAR_DEVICE_NAME = "00002a00-0000-1000-8000-00805f9b34fb"; - public static final String CHAR_APPEARANCE = "00002a01-0000-1000-8000-00805f9b34fb"; - public static final String CHAR_PERIPHERAL_PRIVACY_FLAG = "00002a02-0000-1000-8000-00805f9b34fb"; - public static final String CHAR_RECONNECTION_ADDRESS = "00002a03-0000-1000-8000-00805f9b34fb"; - public static final String CHAR_PERIPHERAL_PREFERRED_CONNECTION_PARAMETERS = "00002a04-0000-1000-8000-00805f9b34fb"; - - // 1801 Generic Attribute - public static final String SERVICE_GENERIC_ATTRIBUTE = "00001801-0000-1000-8000-00805f9b34fb"; - public static final String CHAR_SERVICE_CHANGED = "00002a05-0000-1000-8000-00805f9b34fb"; - - // 1802 Immediate Alert - public static final String SERVICE_IMMEDIATE_ALERT = "00001802-0000-1000-8000-00805f9b34fb"; - public static final String CHAR_ALERT_LEVEL = "00002a06-0000-1000-8000-00805f9b34fb"; - // StickNFindではCHAR_ALERT_LEVELに0x01をWriteすると光り、0x02では音が鳴り、0x03では光って鳴る。 - - // 180a Device Information - public static final String SERVICE_DEVICE_INFORMATION = "0000180a-0000-1000-8000-00805f9b34fb"; - public static final String CHAR_MANUFACTURER_NAME_STRING = "00002a29-0000-1000-8000-00805f9b34fb"; - public static final String CHAR_MODEL_NUMBER_STRING = "00002a24-0000-1000-8000-00805f9b34fb"; - public static final String CHAR_SERIAL_NUMBER_STRING = "00002a25-0000-1000-8000-00805f9b34fb"; - public static final String CHAR_HARDWARE_REVISION_STRING = "00002a27-0000-1000-8000-00805f9b34fb"; - public static final String CHAR_FIRMWARE_REVISION_STRING = "00002a26-0000-1000-8000-00805f9b34fb"; - public static final String CHAR_SOFTWARE_REVISION_STRING = "00002a28-0000-1000-8000-00805f9b34fb"; - public static final String CHAR_SYSTEM_ID = "00002a23-0000-1000-8000-00805f9b34fb"; - public static final String CHAR_IEEE_11073_20601_REGULATORY_CERTIFICATION_DATA_LIST = "00002a2A-0000-1000-8000-00805f9b34fb"; - public static final String CHAR_PNP_ID = "00002a50-0000-1000-8000-00805f9b34fb"; - - // 180F Battery Service - public static final String SERVICE_BATTERY_SERVICE = "0000180f-0000-1000-8000-00805f9b34fb"; - public static final String CHAR_BATTERY_LEVEL = "00002a19-0000-1000-8000-00805f9b34fb"; - - // 180D Heart Reate Service - public static final String SERVICE_HEART_RATE_SERVICE = "0000180d-0000-1000-8000-00805f9b34fb"; - public static final String CHAR_HEART_RATE_MEASUREMENT = "00002a37-0000-1000-8000-00805f9b34fb"; - public static final String CHAR_BODY_SENSOR_LOCATION = "00002a38-0000-1000-8000-00805f9b34fb"; - public static final String CHAR_HEART_RATE_CONTROL_POINT = "00002a39-0000-1000-8000-00805f9b34fb"; - - /** - * Defined the permission of BLE scan. - */ - public static final String[] BLE_PERMISSIONS = new String[] { - Manifest.permission.ACCESS_COARSE_LOCATION, - Manifest.permission.ACCESS_FINE_LOCATION - }; - - /** - * Private constructor. - */ - private BleUtils() { - } - - /** - * Checks whether device(smart phone) supports BLE. - * @param context context of application - * @return Returns true if the device supports BLE, else - * false. - */ - public static boolean isBLESupported(final Context context) { - return Build.VERSION.SDK_INT >= 18 - && context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE); - } - - /** - * Gets instance of BluetoothManager. - * @param context context of application - * @return Instance of BluetoothManager or null if the BluetoothManager does not exist. - */ - public static BluetoothManager getManager(final Context context) { - return (BluetoothManager) context.getSystemService(Context.BLUETOOTH_SERVICE); - } - - /** - * Checks whether permission allow by user. - * @param context context of application - * @return Returns true if permission allow, otherwise false - */ - public static boolean isBLEPermission(final Context context) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - return true; - } else { - boolean result = true; - for (int i = 0; i < BLE_PERMISSIONS.length; i++) { - if (context.checkSelfPermission(BLE_PERMISSIONS[i]) != PackageManager.PERMISSION_GRANTED) { - result = false; - } - } - return result; - } - } - - /** - * Checks whether bluetooth on/off. - * @param context context of application - * @return Returns true if bluetooth on, otherwise false - */ - public static boolean isEnabled(final Context context) { - BluetoothManager manager = getManager(context); - BluetoothAdapter bluetoothAdapter = manager.getAdapter(); - - if (!isBLEPermission(context)) { - return false; - } - return bluetoothAdapter.isEnabled(); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/HitoeScheduler.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/HitoeScheduler.java deleted file mode 100644 index 9a1f52a90c..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/HitoeScheduler.java +++ /dev/null @@ -1,99 +0,0 @@ -package org.deviceconnect.android.deviceplugin.hitoe.util; - -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; - -/** - * Hitoe Scheduler. - * - * @author NTT DOCOMO, INC. - */ - -public class HitoeScheduler { - - /** - * Instance of ScheduledExecutorService. - */ - private ScheduledExecutorService mExecutor = Executors.newSingleThreadScheduledExecutor(); - - /** - * ScheduledFuture of scan timer. - */ - private ScheduledFuture mScanTimerFuture; - - /** - * Defines a delay 1 second at first execution. - */ - private static final long SCAN_FIRST_WAIT_PERIOD = 1000; - - /** - * Defines a period 10 seconds between successive executions. - */ - private static final long SCAN_WAIT_PERIOD = 10 * 1000; - /** - * Scanning flag. - */ - private boolean mScanning; - /** Notify listener. */ - private OnRegularNotify mNotify; - /** Default wait period. */ - private long mWaitPeriod = SCAN_WAIT_PERIOD; - /** Default first wait period. */ - private long mFirstWaitPeriod = SCAN_FIRST_WAIT_PERIOD; - - /** - * Constructor. - * @param notify listener - * @param first first wait period - * @param period wait period - */ - public HitoeScheduler(final OnRegularNotify notify, final long first, final long period) { - mNotify = notify; - if (first > 0) { - mFirstWaitPeriod = first; - } - if (period > 0) { - mWaitPeriod = period; - } - } - /** - * Scan Hitoe device. - * @param enable scan flag - */ - public synchronized void scanHitoeDevice(final boolean enable) { - if (enable) { - if (mScanning || mScanTimerFuture != null) { - // scan have already started. - return; - } - mScanning = true; - mScanTimerFuture = mExecutor.scheduleAtFixedRate(new Runnable() { - @Override - public void run() { - if (mNotify != null) { - mNotify.onRegularNotify(); - } - } - }, mFirstWaitPeriod, mWaitPeriod, TimeUnit.MILLISECONDS); - } else { - mScanning = false; - cancelScanTimer(); - } - } - - /** - * Stopped the scan timer. - */ - private synchronized void cancelScanTimer() { - if (mScanTimerFuture != null) { - mScanTimerFuture.cancel(true); - mScanTimerFuture = null; - } - } - - public interface OnRegularNotify { - void onRegularNotify(); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/MDERFloatConvreterUtils.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/MDERFloatConvreterUtils.java deleted file mode 100644 index baa6e211da..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/MDERFloatConvreterUtils.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - MDERFloatConvreterUtils - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.util; - -import java.math.BigDecimal; -import java.text.DecimalFormat; - -/** - * A class containing utility methods convert MDER Float. - * @author NTT DOCOMO, INC. - */ -public final class MDERFloatConvreterUtils { - - /** - * Private Constructor. - */ - private MDERFloatConvreterUtils() { - } - - /** - * The Plug-Ins and the APIs designed for consumer/ personal use perspective. - * The following requirements specify the guidelines for all Health Device Plug-Ins. - * Values, when reported, are reported as Strings or MDER FLOATs. - * MDER FLOATs are used to report integers or real numbers. - * The reason for using MDER FLOATs is to capture precision as reported by the device. - * An MDER FLOAT is a 32 bit integer interpreted as follows: - * @param target target float value - * @return mder float value - */ - public static String convertMDERFloatToFloat(final float target) { - DecimalFormat df = new DecimalFormat("##########.##########"); - BigDecimal value = new BigDecimal(target); - int exponent = getExponent(df.format(target)); - int mantissa = value.scaleByPowerOfTen(exponent * -1).setScale(0, BigDecimal.ROUND_HALF_UP).intValue(); - return String.format("%02X%06X",(exponent & 0xFF), (mantissa & 0xFFFFFF)); - } - - /** - * Get Exponent. - * @param value target value - * @return exponent - */ - private static int getExponent(final String value) { - int index = value.indexOf("."); - if (index != -1) { - return ((value.length() -1) - index) * -1; - } else { - return countZero(value); - } - } - - /** - * Count Zero. - * @param c target - * @return Count - */ - private static int countZero(final String c) { - int count = 0; - if (c.charAt(c.length() - 1) != '0') { - return 0; - } - for (int i = 0; i < c.length(); i++) { - if (c.charAt(i) == '0') { - count++; - } - } - return count; - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/RawDataParseUtils.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/RawDataParseUtils.java deleted file mode 100644 index 6d48770627..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/RawDataParseUtils.java +++ /dev/null @@ -1,309 +0,0 @@ -/* - RawDataParseUtils - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.hitoe.util; - -import org.deviceconnect.android.deviceplugin.hitoe.data.AccelerationData; -import org.deviceconnect.android.deviceplugin.hitoe.data.HeartData; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeConstants; -import org.deviceconnect.android.deviceplugin.hitoe.data.HitoeDevice; -import org.deviceconnect.android.deviceplugin.hitoe.data.PoseEstimationData; -import org.deviceconnect.android.deviceplugin.hitoe.data.StressEstimationData; -import org.deviceconnect.android.deviceplugin.hitoe.data.TargetDeviceData; -import org.deviceconnect.android.deviceplugin.hitoe.data.WalkStateData; -import org.deviceconnect.profile.PoseEstimationProfileConstants; -import org.deviceconnect.profile.WalkStateProfileConstants; -import org.deviceconnect.utils.RFC3339DateUtils; - -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.TimeZone; - -/** - * A class containing utility methods parse raw data. - * @author NTT DOCOMO, INC. - */ -public final class RawDataParseUtils { - - /** - * Private Constructor. - */ - private RawDataParseUtils() { - } - - - /** - * Parse HeartRate data. - * @param raw raw data - * @return HeartRate object - */ - public static HeartData parseHeartRate(final String raw) { - return parseHeartRate(raw, HeartData.HeartRateType.Rate, "heart rate", - 147842, "beat per min", 264864); - } - - /** - * Parse RRI data. - * @param raw raw data - * @return RRI object - */ - public static HeartData parseRRI(final String raw) { - return parseHeartRate(raw, HeartData.HeartRateType.RRI, "RR interval", - 147240, "ms", 264338); - } - - /** - * Parse EnergyExpended data. - * @param raw raw data - * @return EnergyExpended object - */ - public static HeartData parseEnergyExpended(final String raw) { - return parseHeartRate(raw, HeartData.HeartRateType.EnergyExpended, "energy expended", - 119, "Calories", 6784); - } - - - /** - * Parse Hitoe Device info data. - * @param hitoe hitoe device - * @param batteryLevel battery level - * @return Hitoe device info object - */ - public static TargetDeviceData parseDeviceData(final HitoeDevice hitoe, final float batteryLevel) { - TargetDeviceData device = new TargetDeviceData(); - device.setProductName(hitoe.getName()); - if (batteryLevel > -1.0) { - device.setBatteryLevel((batteryLevel + 1) / 4.0f); - } - return device; - } - - - /** - * Parse Acceleration Data. - * @param data Accleration data - * @param raw raw data - * @return Acceleration object - */ - public static AccelerationData parseAccelerationData(final AccelerationData data, final String raw) { - if (raw == null) { - return data; - } - String[] lineList = raw.split(HitoeConstants.BR); - String[] list = lineList[0].split(HitoeConstants.COMMA, -1); - String[] accList = list[1].split(HitoeConstants.COLON, -1); - double[] accelList = new double[3]; - for (int i = 0; i < accList.length; i++) { - accelList[i] = Double.valueOf(accList[i]); - } - data.setAccelX(accelList[0]); - data.setAccelY(accelList[1]); - data.setAccelZ(accelList[2]); - return data; - } - - - - /** - * Parse ECG Data. - * @param raw raw data - * @return ECG data object - */ - public static HeartData parseECG(final String raw) { - String[] lineList = raw.split(HitoeConstants.BR); - HeartData heart = new HeartData(); - for (int i = 0; i < lineList.length; i++) { - String val = lineList[i]; - if (val == null) { - continue; - } - String[] list = val.split(HitoeConstants.COMMA, -1); - long timestamp = Long.parseLong(list[0]); - String[] ecgList = list[1].split(HitoeConstants.COLON, -1); - String date = RFC3339DateUtils.toString(timestamp); - heart.setValue(Float.parseFloat(ecgList[0])); - heart.setTimeStamp(timestamp); - heart.setTimeStampString(date); - } - heart.setHeartRateType(HeartData.HeartRateType.ECG); - heart.setMderFloat(MDERFloatConvreterUtils.convertMDERFloatToFloat(heart.getValue())); - heart.setType("ecg beat"); - heart.setTypeCode(663568); - heart.setUnit("mVolt * miliSecond"); - heart.setUnitCode(3328); - - return heart; - - } - - /** - * Parse Stress Estimation data. - * @param raw raw data - * @return Stress Estimation object - */ - public static StressEstimationData parseStressEstimation(final String raw) { - StressEstimationData stress = new StressEstimationData(); - if (raw == null) { - return stress; - } - String[] lineList = raw.split(HitoeConstants.BR); - String[] stressList = lineList[0].split(HitoeConstants.COMMA, -1); - if (stressList[0].isEmpty() || stressList[1].isEmpty()) { - return stress; - } - long timestamp = Long.parseLong(stressList[0]); - double lfhf = Double.parseDouble(stressList[1]); - stress.setLFHFValue(lfhf); - stress.setTimeStamp(timestamp); - stress.setTimeStampString(RFC3339DateUtils.toString(timestamp)); - return stress; - } - - - /** - * Parse Pose Estimation data. - * @param raw raw data - * @return Pose Estimation object - */ - public static PoseEstimationData parsePoseEstimation(final String raw) { - PoseEstimationData pose = new PoseEstimationData(); - if (raw == null) { - return pose; - } - String[] lineList = raw.split(HitoeConstants.BR); - String[] poseList = lineList[0].split(HitoeConstants.COMMA, -1); - long timestamp = 0; - try { - timestamp = Long.parseLong(poseList[0]); - } catch (NumberFormatException e) { - return pose; - } - pose.setTimeStamp(timestamp); - pose.setTimeStampString(RFC3339DateUtils.toString(timestamp)); - - String type = poseList[1]; - - int backForward = Integer.parseInt(poseList[2]); - int leftRight = Integer.parseInt(poseList[3]); - - if (type.equals("LyingLeft")) { - pose.setPoseState(PoseEstimationProfileConstants.PoseState.FaceLeft); - } else if (type.equals("LyingRight")) { - pose.setPoseState(PoseEstimationProfileConstants.PoseState.FaceRight); - } else if (type.equals("LyingFaceUp")) { - pose.setPoseState(PoseEstimationProfileConstants.PoseState.FaceUp); - } else if (type.equals("LyingFaceDown")) { - pose.setPoseState(PoseEstimationProfileConstants.PoseState.FaceDown); - } else { - if (backForward > HitoeConstants.BACK_FORWARD_THRESHOLD) { - pose.setPoseState(PoseEstimationProfileConstants.PoseState.Forward); - } else if (backForward < -1 * HitoeConstants.BACK_FORWARD_THRESHOLD) { - pose.setPoseState(PoseEstimationProfileConstants.PoseState.Backward); - } else if (leftRight > HitoeConstants.LEFT_RIGHT_THRESHOLD) { - pose.setPoseState(PoseEstimationProfileConstants.PoseState.Leftside); - } else if (leftRight < -1 * HitoeConstants.LEFT_RIGHT_THRESHOLD) { - pose.setPoseState(PoseEstimationProfileConstants.PoseState.Rightside); - } else { - pose.setPoseState(PoseEstimationProfileConstants.PoseState.Standing); - } - } - - return pose; - } - - /** - * Parse Walk State data. - * @param data exist walk state data - * @param raw raw data - * @return walk state object - */ - public static WalkStateData parseWalkState(final WalkStateData data, final String raw) { - String[] lineList = raw.split(HitoeConstants.BR); - String[] walkList = lineList[0].split(HitoeConstants.COMMA, -1); - long timestamp = 0; - try { - timestamp = Long.parseLong(walkList[0]); - } catch (NumberFormatException e) { - return data; - } - data.setTimeStamp(timestamp); - data.setTimeStampString(RFC3339DateUtils.toString(timestamp)); - data.setStep(Integer.parseInt(walkList[1])); - if (walkList[4].equals("Walking")) { - data.setState(WalkStateProfileConstants.WalkState.Walking); - } else if (walkList[4].equals("Running")) { - data.setState(WalkStateProfileConstants.WalkState.Running); - } else { - data.setState(WalkStateProfileConstants.WalkState.Stop); - } - data.setSpeed(Double.parseDouble(walkList[6])); - data.setDistance(Double.parseDouble(walkList[7])); - return data; - } - - /** - * Parse Walk State data for balance. - * @param data walk state data - * @param raw raw data - * @return walk state object - */ - public static WalkStateData parseWalkStateForBalance(final WalkStateData data, final String raw) { - String[] lineList = raw.split(HitoeConstants.BR); - String[] walkList = lineList[0].split(HitoeConstants.COMMA, -1); - if (walkList.length <= 1) { - return data; - } - data.setBalance(Double.parseDouble(walkList[1])); - return data; - } - - /** - * Parse HeartRate data. - * @param raw raw data - * @param heartRateType HeartRate type - * @param type type - * @param typeCode type code - * @param unit unit - * @param unitCode unit Code - * @return HeartRate data - */ - private static HeartData parseHeartRate(final String raw, final HeartData.HeartRateType heartRateType, - final String type, final int typeCode, - final String unit, final int unitCode) { - HeartData heart = new HeartData(); - String[] lineList = raw.split(HitoeConstants.BR); - String rateString = lineList[lineList.length - 1]; - heart.setHeartRateType(heartRateType); - if (rateString == null) { - return null; - } - String[] hrValue = splitComma(rateString); - float rate = Float.parseFloat(hrValue[1]); - heart.setValue(rate); - heart.setMderFloat(MDERFloatConvreterUtils.convertMDERFloatToFloat(rate)); - heart.setType(type); - heart.setTypeCode(typeCode); - heart.setUnit(unit); - heart.setUnitCode(unitCode); - heart.setTimeStamp(Long.parseLong(hrValue[0])); - heart.setTimeStampString(RFC3339DateUtils.toString(Long.parseLong(hrValue[0]))); - return heart; - - } - - - - /** - * Split Comma. - * @param val split value - * @return string array - */ - private static String[] splitComma(final String val) { - return val.split(",", -1); - } - - } diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/UserSettings.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/UserSettings.java deleted file mode 100755 index 39f573c69c..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/UserSettings.java +++ /dev/null @@ -1,75 +0,0 @@ -/* -UserSettings -Copyright (c) 2014 NTT DOCOMO,INC. -Released under the MIT license -http://opensource.org/licenses/mit-license.php -*/ - -package org.deviceconnect.android.deviceplugin.hitoe.util; - -import android.app.Activity; -import android.content.Context; -import android.content.SharedPreferences; - -/** - * UserSettings. - * @author NTT DOCOMO, INC. - */ -public class UserSettings { - /** Preference name. */ - private static final String PREF_NAME = "hitoe_setting_pref"; - /** Key of next on. */ - private static final String KEY_HITOE_ON_NEXT = "next_on"; - /** Key of warning message. */ - private static final String KEY_WARNING_MESSAGE = "warning_message"; - - /** SharedPreferences' instance. */ - private SharedPreferences mPref; - /** SharedPreferences.Editor's instance. */ - private SharedPreferences.Editor mEditor; - - /** - * Constructor. - * @param context Context in which this class belongs - */ - public UserSettings(final Context context) { - mPref = context.getSharedPreferences(PREF_NAME, Activity.MODE_PRIVATE); - } - - /** - * Get the Next state registered. - * Returns null if the Next state is not registered. - * @return true:next show false:next not show - */ - public boolean isNextState() { - return mPref.getBoolean(KEY_HITOE_ON_NEXT, false); - } - - /** - * Get the Warning message flag. - * @return true:next show false:next not show - */ - public boolean isWarningMessage() { - return mPref.getBoolean(KEY_WARNING_MESSAGE, false); - } - - /** - * Register the Next state. - * @param state true:next show false:next not show - */ - public void setNextState(final boolean state) { - mEditor = mPref.edit(); - mEditor.putBoolean(KEY_HITOE_ON_NEXT, state); - mEditor.commit(); - } - - /** - * Register the Warning Message flag. - * @param state true:next show false:next not show - */ - public void setWarningMessage(final boolean state) { - mEditor = mPref.edit(); - mEditor.putBoolean(KEY_WARNING_MESSAGE, state); - mEditor.commit(); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/package-info.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/package-info.java deleted file mode 100755 index 8b5066be35..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/deviceplugin/hitoe/util/package-info.java +++ /dev/null @@ -1,12 +0,0 @@ -/* -org.deviceconnect.android.deviceplugin.hitoe.util -Copyright (c) 2016 NTT DOCOMO,INC. -Released under the MIT license -http://opensource.org/licenses/mit-license.php - */ - -/** - * Utils for hitoe device. - */ -package org.deviceconnect.android.deviceplugin.hitoe.util; - diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/event/EventDispatcher.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/event/EventDispatcher.java deleted file mode 100644 index 1de05d4415..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/event/EventDispatcher.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.deviceconnect.android.event; - -import android.content.Intent; - -import org.deviceconnect.android.message.DConnectMessageService; - -public abstract class EventDispatcher { - - private DConnectMessageService mMessageService; - - public EventDispatcher(final DConnectMessageService service) { - if (service == null) { - throw new NullPointerException("service is null."); - } - mMessageService = service; - } - - public abstract void sendEvent(final Event event, final Intent message); - public abstract void start(); - public abstract void stop(); - - protected void sendEventInternal(final Event event, final Intent message) { - mMessageService.sendEvent(message, event.getAccessToken()); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/event/EventDispatcherFactory.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/event/EventDispatcherFactory.java deleted file mode 100644 index 98184bf766..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/event/EventDispatcherFactory.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.deviceconnect.android.event; - -import android.content.Intent; - -import org.deviceconnect.android.message.DConnectMessageService; - -public final class EventDispatcherFactory { - - private EventDispatcherFactory() { - } - - public static EventDispatcher createEventDispatcher(final DConnectMessageService service, final Intent request) { - if (request.getExtras().containsKey("interval")) { - int interval = getInterval(request); - if (interval > 0) { - return createIntervalEventDispatcher(service, interval); - } - } - return createImmediateEventDispatcher(service); - } - - public static EventDispatcher createIntervalEventDispatcher(final DConnectMessageService service, final int periodTime) { - return new IntervalEventDispatcher(service, periodTime, periodTime); - } - - public static EventDispatcher createImmediateEventDispatcher(final DConnectMessageService service) { - return new ImmediateEventDispatcher(service); - } - - private static int getInterval(final Intent request) { - try { - String interval = request.getStringExtra("interval"); - return Integer.parseInt(interval); - } catch (NumberFormatException e) { - return -1; - } - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/event/EventDispatcherManager.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/event/EventDispatcherManager.java deleted file mode 100644 index 2c3b77f3f8..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/event/EventDispatcherManager.java +++ /dev/null @@ -1,44 +0,0 @@ -package org.deviceconnect.android.event; - -import android.content.Intent; - -import java.util.HashMap; -import java.util.Map; - -public class EventDispatcherManager { - - private Map mEventMap = new HashMap<>(); - - public void addEventDispatcher(final Event event, final org.deviceconnect.android.event.EventDispatcher dispatcher) { - if (containsEventDispatcher(event)) { - return; - } - mEventMap.put(event, dispatcher); - dispatcher.start(); - } - - public void removeEventDispatcher(final Event event) { - org.deviceconnect.android.event.EventDispatcher dispatcher = mEventMap.remove(event); - if (dispatcher != null) { - dispatcher.stop(); - } - } - - public void removeAllEventDispatcher() { - for (Map.Entry e : mEventMap.entrySet()) { - e.getValue().stop(); - } - mEventMap.clear(); - } - - public boolean containsEventDispatcher(final Event event) { - return mEventMap.containsKey(event); - } - - public void sendEvent(final Event event, final Intent message) { - org.deviceconnect.android.event.EventDispatcher dispatcher = mEventMap.get(event); - if (dispatcher != null) { - dispatcher.sendEvent(event, message); - } - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/event/ImmediateEventDispatcher.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/event/ImmediateEventDispatcher.java deleted file mode 100644 index b41d8b57e5..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/event/ImmediateEventDispatcher.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.deviceconnect.android.event; - -import android.content.Intent; - -import org.deviceconnect.android.message.DConnectMessageService; - -public class ImmediateEventDispatcher extends EventDispatcher { - - public ImmediateEventDispatcher(final DConnectMessageService service) { - super(service); - } - - @Override - public void sendEvent(final Event event, final Intent message) { - sendEventInternal(event, message); - } - - @Override - public void start() { - // do nothing. - } - - @Override - public void stop() { - // do nothing. - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/event/IntervalEventDispatcher.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/event/IntervalEventDispatcher.java deleted file mode 100644 index 14ac5c054d..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/event/IntervalEventDispatcher.java +++ /dev/null @@ -1,73 +0,0 @@ -package org.deviceconnect.android.event; - -import android.content.Intent; - -import org.deviceconnect.android.message.DConnectMessageService; - -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.ScheduledFuture; -import java.util.concurrent.TimeUnit; - -public class IntervalEventDispatcher extends EventDispatcher { - - private ScheduledExecutorService mExecutorService = Executors.newSingleThreadScheduledExecutor(); - private ScheduledFuture mScheduledFuture; - - private int mFirstPeriodTime; - private int mPeriodTime; - - private Event mEvent; - private Intent mMessage; - - private final Object mLockObject = new Object(); - - public IntervalEventDispatcher(final DConnectMessageService service, final int firstPeriodTime, final int periodTime) { - super(service); - - if (firstPeriodTime < 0) { - throw new IllegalArgumentException("firstPeriodTime is negative."); - } - - if (periodTime <= 0) { - throw new IllegalArgumentException("periodTime is zero or negative."); - } - - mFirstPeriodTime = firstPeriodTime; - mPeriodTime = periodTime; - } - - @Override - public void sendEvent(final Event event, final Intent message) { - synchronized (mLockObject) { - mEvent = event; - mMessage = message; - } - } - - @Override - public void start() { - if (mScheduledFuture != null) { - throw new IllegalStateException("This IntervalEventDispatcher already started."); - } - mScheduledFuture = mExecutorService.scheduleAtFixedRate(mRunnable, mFirstPeriodTime, mPeriodTime,TimeUnit.MILLISECONDS); - } - - @Override - public void stop() { - if (mScheduledFuture != null) { - mScheduledFuture.cancel(true); - mExecutorService.shutdown(); - } - } - - private Runnable mRunnable = () -> { - synchronized (mLockObject) { - if (mEvent != null && mMessage != null) { - sendEventInternal(mEvent, mMessage); - } - mEvent = null; - mMessage = null; - } - }; -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/profile/ECGProfile.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/profile/ECGProfile.java deleted file mode 100644 index 891f5216c3..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/profile/ECGProfile.java +++ /dev/null @@ -1,130 +0,0 @@ -/* - ECGProfile.java - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.profile; - -import android.content.Intent; -import android.os.Bundle; - -import org.deviceconnect.profile.ECGProfileConstants; - -/** - * ECG プロファイル. - * - *

- * スマートデバイスに対しての心電図計測機能を提供するAPI.
- * スマートデバイスに対しての心電図計測機能を提供するデバイスプラグインは当クラスを継承し、対応APIを実装すること。
- *

- * - *

各API提供メソッド

- *

- * ECG Profile の各APIへのリクエストに対し、以下のコールバックメソッド群が自動的に呼び出される。
- * サブクラスは以下のメソッド群からデバイスプラグインが提供するAPI用のメソッドをオーバーライドし、機能を実装すること。
- * オーバーライドされていない機能は自動的に非対応APIとしてレスポンスを返す。 - *

- * @author NTT DOCOMO, INC. - */ -public class ECGProfile extends DConnectProfile implements ECGProfileConstants { - - @Override - public final String getProfileName() { - return PROFILE_NAME; - } - - - // ------------------------------------ - // セッターメソッド群 - // ------------------------------------ - - /** - * レスポンスにECGを設定する. - * - * @param response レスポンス - * @param ecg ECGオブジェクト - */ - public static void setECG(final Intent response, final Bundle ecg) { - response.putExtra(PARAM_ECG, ecg); - } - - /** - * レスポンスに測定値を設定する. - * - * @param response レスポンス - * @param value 測定値 - */ - public static void setValue(final Bundle response, final float value) { - response.putFloat(PARAM_VALUE, value); - } - - /** - * レスポンスにMDER Float値を設定する. - * - * @param response レスポンス - * @param mder MDER Float値 - */ - public static void setMDERFloat(final Bundle response, final String mder) { - response.putString(PARAM_MDER_FLOAT, mder); - } - /** - * レスポンスにtype値を設定する. - * - * @param response レスポンス - * @param type type - */ - public static void setType(final Bundle response, final String type) { - response.putString(PARAM_TYPE, type); - } - /** - * レスポンスにtypeCode値を設定する. - * - * @param response レスポンス - * @param typeCode typeCode - */ - public static void setTypeCode(final Bundle response, final int typeCode) { - response.putInt(PARAM_TYPE_CODE, typeCode); - } - /** - * レスポンスにunit値を設定する. - * - * @param response レスポンス - * @param unit unit - */ - public static void setUnit(final Bundle response, final String unit) { - response.putString(PARAM_UNIT, unit); - } - /** - * レスポンスにUnitCode値を設定する. - * - * @param response レスポンス - * @param unitCode UnitCode - */ - public static void setUnitCode(final Bundle response, final int unitCode) { - response.putInt(PARAM_UNIT_CODE, unitCode); - } - /** - * レスポンスにTimeStamp値を設定する. - * - * @param response レスポンス - * @param timeStamp TimeStamp - */ - public static void setTimestamp(final Bundle response, final long timeStamp) { - response.putLong(PARAM_TIMESTAMP, timeStamp); - } - /** - * レスポンスにTimeStampString値を設定する. - * - * @param response レスポンス - * @param timeStampString TimeStampString - */ - public static void setTimestampString(final Bundle response, final String timeStampString) { - response.putString(PARAM_TIMESTAMP_STRING, timeStampString); - } - - - // ------------------------------------ - // ゲッターメソッド群 - // ------------------------------------ -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/profile/HealthProfile.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/profile/HealthProfile.java deleted file mode 100644 index 78ae540f82..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/profile/HealthProfile.java +++ /dev/null @@ -1,274 +0,0 @@ -/* - HealthProfile.java - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.profile; - -import android.content.Intent; -import android.os.Bundle; - -import org.deviceconnect.profile.HealthProfileConstants; - -/** - * Health プロファイル. - * - *

- * スマートデバイスに対しての健康機器操作機能を提供するAPI.
- * スマートデバイスに対しての健康機器操作機能を提供するデバイスプラグインは当クラスを継承し、対応APIを実装すること。
- *

- * - *

各API提供メソッド

- *

- * Health Profile の各APIへのリクエストに対し、以下のコールバックメソッド群が自動的に呼び出される。
- * サブクラスは以下のメソッド群からデバイスプラグインが提供するAPI用のメソッドをオーバーライドし、機能を実装すること。
- * オーバーライドされていない機能は自動的に非対応APIとしてレスポンスを返す。 - *

- - * @author NTT DOCOMO, INC. - */ -public class HealthProfile extends DConnectProfile implements HealthProfileConstants { - - @Override - public final String getProfileName() { - return PROFILE_NAME; - } - - - // ------------------------------------ - // セッターメソッド群 - // ------------------------------------ - - /** - * レスポンスに心拍数を設定する. - * - * @param response レスポンス - * @param heartRate 心拍数 - */ - public static void setHeartRate(final Intent response, final int heartRate) { - response.putExtra(PARAM_HEART_RATE, heartRate); - } - /** - * レスポンスにHealthを設定する. - * - * @param response レスポンス - * @param heart 心拍数,RRIオブジェクト - */ - public static void setHeart(final Intent response, final Bundle heart) { - response.putExtra(PARAM_HEART, heart); - } - /** - * レスポンスに心拍数を設定する. - * - * @param response レスポンス - * @param rate 心拍数オブジェクト - */ - public static void setRate(final Bundle response, final Bundle rate) { - response.putBundle(PARAM_RATE, rate); - } - /** - * レスポンスにRRIを設定する. - * - * @param response レスポンス - * @param rr RRIオブジェクト - */ - public static void setRRI(final Bundle response, final Bundle rr) { - response.putBundle(PARAM_RR, rr); - } - /** - * レスポンスにEnergyExtendedを設定する. - * - * @param response レスポンス - * @param energy RRIオブジェクト - */ - public static void setEnergyExtended(final Bundle response, final Bundle energy) { - response.putBundle(PARAM_ENERGY, energy); - } - /** - * レスポンスにHealthデバイス情報を設定する. - * - * @param response レスポンス - * @param device Healthデバイスオブジェクト - */ - public static void setDevice(final Bundle response, final Bundle device) { - response.putBundle(PARAM_DEVICE, device); - } - - /** - * レスポンスに測定値を設定する. - * - * @param response レスポンス - * @param value 測定値 - */ - public static void setValue(final Bundle response, final float value) { - response.putFloat(PARAM_VALUE, value); - } - - /** - * レスポンスにMDER Float値を設定する. - * - * @param response レスポンス - * @param mder MDER Float値 - */ - public static void setMDERFloat(final Bundle response, final String mder) { - response.putString(PARAM_MDER_FLOAT, mder); - } - /** - * レスポンスにtype値を設定する. - * - * @param response レスポンス - * @param type type - */ - public static void setType(final Bundle response, final String type) { - response.putString(PARAM_TYPE, type); - } - /** - * レスポンスにtypeCode値を設定する. - * - * @param response レスポンス - * @param typeCode typeCode - */ - public static void setTypeCode(final Bundle response, final int typeCode) { - response.putInt(PARAM_TYPE_CODE, typeCode); - } - /** - * レスポンスにunit値を設定する. - * - * @param response レスポンス - * @param unit unit - */ - public static void setUnit(final Bundle response, final String unit) { - response.putString(PARAM_UNIT, unit); - } - /** - * レスポンスにUnitCode値を設定する. - * - * @param response レスポンス - * @param unitCode UnitCode - */ - public static void setUnitCode(final Bundle response, final int unitCode) { - response.putInt(PARAM_UNIT_CODE, unitCode); - } - /** - * レスポンスにTimeStamp値を設定する. - * - * @param response レスポンス - * @param timeStamp TimeStamp - */ - public static void setTimestamp(final Bundle response, final long timeStamp) { - response.putLong(PARAM_TIMESTAMP, timeStamp); - } - /** - * レスポンスにTimeStampString値を設定する. - * - * @param response レスポンス - * @param timeStampString TimeStampString - */ - public static void setTimestampString(final Bundle response, final String timeStampString) { - response.putString(PARAM_TIMESTAMP_STRING, timeStampString); - } - - /** - * レスポンスにProductName値を設定する. - * - * @param response レスポンス - * @param productName productName - */ - public static void setProductName(final Bundle response, final String productName) { - response.putString(PARAM_PRODUCT_NAME, productName); - } - /** - * レスポンスにManufacturerName値を設定する. - * - * @param response レスポンス - * @param manufacturerName ManufacturerName - */ - public static void setManufacturerName(final Bundle response, final String manufacturerName) { - response.putString(PARAM_MANUFACTURER_NAME, manufacturerName); - } - /** - * レスポンスにModelNumber値を設定する. - * - * @param response レスポンス - * @param modelNumber ModelNumber - */ - public static void setModelNumber(final Bundle response, final String modelNumber) { - response.putString(PARAM_MODEL_NUMBER, modelNumber); - } - /** - * レスポンスにFirmwareRevision値を設定する. - * - * @param response レスポンス - * @param firmwareRevision FirmwareRevision - */ - public static void setFirmwareRevision(final Bundle response, final String firmwareRevision) { - response.putString(PARAM_FIRMWARE_REVISION, firmwareRevision); - } - /** - * レスポンスにSerialNumber値を設定する. - * - * @param response レスポンス - * @param serialNumber SerialNumber - */ - public static void setSerialNumber(final Bundle response, final String serialNumber) { - response.putString(PARAM_SERIAL_NUMBER, serialNumber); - } - /** - * レスポンスにSoftwareRevision値を設定する. - * - * @param response レスポンス - * @param softwareRevision SoftwareRevision - */ - public static void setSoftwareRevision(final Bundle response, final String softwareRevision) { - response.putString(PARAM_SOFTWARE_REVISION, softwareRevision); - } - /** - * レスポンスにHardwareRevision値を設定する. - * - * @param response レスポンス - * @param hardwareRevision HardwareRevision - */ - public static void setHardwareRevision(final Bundle response, final String hardwareRevision) { - response.putString(PARAM_HARDWARE_REVISION, hardwareRevision); - } - /** - * レスポンスにPartNumber値を設定する. - * - * @param response レスポンス - * @param partNumber PartNumber - */ - public static void setPartNumber(final Bundle response, final String partNumber) { - response.putString(PARAM_PART_NUMBER, partNumber); - } - /** - * レスポンスにProtocolRevision値を設定する. - * - * @param response レスポンス - * @param protocolRevision ProtocolRevision - */ - public static void setProtocolRevision(final Bundle response, final String protocolRevision) { - response.putString(PARAM_PROTOCOL_REVISION, protocolRevision); - } - /** - * レスポンスにSystemId値を設定する. - * - * @param response レスポンス - * @param systemId SystemId - */ - public static void setSystemId(final Bundle response, final String systemId) { - response.putString(PARAM_SYSTEM_ID, systemId); - } - /** - * レスポンスにBatteryLevel値を設定する. - * - * @param response レスポンス - * @param batteryLevel BatteryLevel - */ - public static void setBatteryLevel(final Bundle response, final float batteryLevel) { - response.putFloat(PARAM_BATTERY_LEVEL, batteryLevel); - } - // ------------------------------------ - // ゲッターメソッド群 - // ------------------------------------ -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/profile/PoseEstimationProfile.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/profile/PoseEstimationProfile.java deleted file mode 100644 index db4aa8571c..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/profile/PoseEstimationProfile.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - PoseEstimationProfile.java - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.profile; - -import android.content.Intent; -import android.os.Bundle; - -import org.deviceconnect.profile.PoseEstimationProfileConstants; - -/** - * PoseEstimation プロファイル. - * - *

- * スマートデバイスに対しての姿勢推定機能を提供するAPI.
- * スマートデバイスに対しての姿勢推定機能を提供するデバイスプラグインは当クラスを継承し、対応APIを実装すること。
- *

- * - *

各API提供メソッド

- *

- * Pose Estimation Profile の各APIへのリクエストに対し、以下のコールバックメソッド群が自動的に呼び出される。
- * サブクラスは以下のメソッド群からデバイスプラグインが提供するAPI用のメソッドをオーバーライドし、機能を実装すること。
- * オーバーライドされていない機能は自動的に非対応APIとしてレスポンスを返す。 - *

- * @author NTT DOCOMO, INC. - */ -public class PoseEstimationProfile extends DConnectProfile implements PoseEstimationProfileConstants { - - @Override - public final String getProfileName() { - return PROFILE_NAME; - } - - - - // ------------------------------------ - // セッターメソッド群 - // ------------------------------------ - - /** - * レスポンスにPoseを設定する. - * - * @param response レスポンス - * @param stress Poseオブジェクト - */ - public static void setPose(final Intent response, final Bundle stress) { - response.putExtra(PARAM_STRESS, stress); - } - - /** - * レスポンスに姿勢状態を設定する. - * - * @param response レスポンス - * @param state 姿勢 - */ - public static void setState(final Bundle response, final String state) { - response.putString(PARAM_STATE, state); - } - - /** - * レスポンスにTimeStamp値を設定する. - * - * @param response レスポンス - * @param timeStamp TimeStamp - */ - public static void setTimestamp(final Bundle response, final long timeStamp) { - response.putLong(PARAM_TIMESTAMP, timeStamp); - } - /** - * レスポンスにTimeStampString値を設定する. - * - * @param response レスポンス - * @param timeStampString TimeStampString - */ - public static void setTimestampString(final Bundle response, final String timeStampString) { - response.putString(PARAM_TIMESTAMP_STRING, timeStampString); - } - - - // ------------------------------------ - // ゲッターメソッド群 - // ------------------------------------ -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/profile/StressEstimationProfile.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/profile/StressEstimationProfile.java deleted file mode 100644 index fa3ca82a53..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/profile/StressEstimationProfile.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - StressEstimationProfile.java - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.profile; - -import android.content.Intent; -import android.os.Bundle; - -import org.deviceconnect.profile.StressEstimationProfileConstants; - -/** - * StressEstimation プロファイル. - * - *

- * スマートデバイスに対してのストレス推定機能を提供するAPI.
- * スマートデバイスに対してのストレス推定機能を提供するデバイスプラグインは当クラスを継承し、対応APIを実装すること。
- *

- * - *

各API提供メソッド

- *

- * Stress Estimation Profile の各APIへのリクエストに対し、以下のコールバックメソッド群が自動的に呼び出される。
- * サブクラスは以下のメソッド群からデバイスプラグインが提供するAPI用のメソッドをオーバーライドし、機能を実装すること。
- * オーバーライドされていない機能は自動的に非対応APIとしてレスポンスを返す。 - *

- * @author NTT DOCOMO, INC. - */ -public class StressEstimationProfile extends DConnectProfile implements StressEstimationProfileConstants { - - @Override - public final String getProfileName() { - return PROFILE_NAME; - } - - - - - // ------------------------------------ - // セッターメソッド群 - // ------------------------------------ - - /** - * レスポンスにStressを設定する. - * - * @param response レスポンス - * @param stress Stressオブジェクト - */ - public static void setStress(final Intent response, final Bundle stress) { - response.putExtra(PARAM_STRESS, stress); - } - - /** - * レスポンスにLFHFを設定する. - * - * @param response レスポンス - * @param lfhf 測定値 - */ - public static void setLFHF(final Bundle response, final double lfhf) { - response.putDouble(PARAM_LFHF, lfhf); - } - - /** - * レスポンスにTimeStamp値を設定する. - * - * @param response レスポンス - * @param timeStamp TimeStamp - */ - public static void setTimestamp(final Bundle response, final long timeStamp) { - response.putLong(PARAM_TIMESTAMP, timeStamp); - } - /** - * レスポンスにTimeStampString値を設定する. - * - * @param response レスポンス - * @param timeStampString TimeStampString - */ - public static void setTimestampString(final Bundle response, final String timeStampString) { - response.putString(PARAM_TIMESTAMP_STRING, timeStampString); - } - - - // ------------------------------------ - // ゲッターメソッド群 - // ------------------------------------ -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/profile/WalkStateProfile.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/profile/WalkStateProfile.java deleted file mode 100644 index a0194adfe1..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/android/profile/WalkStateProfile.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - WalkStateProfile.java - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.profile; - -import android.content.Intent; -import android.os.Bundle; - -import org.deviceconnect.profile.WalkStateProfileConstants; - -/** - * WalkState プロファイル. - * - *

- * スマートデバイスに対しての歩行状態計測機能を提供するAPI.
- * スマートデバイスに対しての歩行状態計測機能を提供するデバイスプラグインは当クラスを継承し、対応APIを実装すること。
- *

- * - *

各API提供メソッド

- *

- * Walk State Profile の各APIへのリクエストに対し、以下のコールバックメソッド群が自動的に呼び出される。
- * サブクラスは以下のメソッド群からデバイスプラグインが提供するAPI用のメソッドをオーバーライドし、機能を実装すること。
- * オーバーライドされていない機能は自動的に非対応APIとしてレスポンスを返す。 - *

- * @author NTT DOCOMO, INC. - */ -public class WalkStateProfile extends DConnectProfile implements WalkStateProfileConstants { - - @Override - public final String getProfileName() { - return PROFILE_NAME; - } - - - - // ------------------------------------ - // セッターメソッド群 - // ------------------------------------ - - /** - * レスポンスにWalkを設定する. - * - * @param response レスポンス - * @param walk Walkオブジェクト - */ - public static void setWalk(final Intent response, final Bundle walk) { - response.putExtra(PARAM_WALK, walk); - } - - /** - * レスポンスに歩数を設定する. - * - * @param response レスポンス - * @param step 歩数 - */ - public static void setStep(final Bundle response, final int step) { - response.putInt(PARAM_STEP, step); - } - /** - * レスポンスに歩行状態を設定する. - * - * @param response レスポンス - * @param state 状態 - */ - public static void setState(final Bundle response, final String state) { - response.putString(PARAM_STATE, state); - } - /** - * レスポンスに速度を設定する. - * - * @param response レスポンス - * @param speed 速度 - */ - public static void setSpeed(final Bundle response, final double speed) { - response.putDouble(PARAM_SPEED, speed); - } - /** - * レスポンスに距離を設定する. - * - * @param response レスポンス - * @param distance 距離 - */ - public static void setDistance(final Bundle response, final double distance) { - response.putDouble(PARAM_DISTANCE, distance); - } - /** - * レスポンスにバランスを設定する. - * - * @param response レスポンス - * @param balance バランス - */ - public static void setBalance(final Bundle response, final double balance) { - response.putDouble(PARAM_BALANCE, balance); - } - /** - * レスポンスにTimeStamp値を設定する. - * - * @param response レスポンス - * @param timeStamp TimeStamp - */ - public static void setTimestamp(final Bundle response, final long timeStamp) { - response.putLong(PARAM_TIMESTAMP, timeStamp); - } - /** - * レスポンスにTimeStampString値を設定する. - * - * @param response レスポンス - * @param timeStampString TimeStampString - */ - public static void setTimestampString(final Bundle response, final String timeStampString) { - response.putString(PARAM_TIMESTAMP_STRING, timeStampString); - } - - - // ------------------------------------ - // ゲッターメソッド群 - // ------------------------------------ -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/profile/ECGProfileConstants.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/profile/ECGProfileConstants.java deleted file mode 100644 index a14056da7c..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/profile/ECGProfileConstants.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - ECGProfileConstants.java - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.profile; - -/** - * ECG Profile API 定数群.
- * ECG Profile API のパラメータ名、インタフェース名、属性名、プロファイル名を定義する。 - * - * @author NTT DOCOMO, INC. - */ -public interface ECGProfileConstants extends DConnectProfileConstants { - /** - * プロファイル名: {@value} . - */ - String PROFILE_NAME = "ecg"; - /** - * 属性: {@value} . - */ - String ATTRIBUTE_ON_ECG = "onECG"; - - /** - * パラメータ: {@value} . - */ - String PARAM_ECG = "ecg"; - /** - * パラメータ: {@value} . - */ - String PARAM_VALUE = "value"; - /** - * パラメータ: {@value} . - */ - String PARAM_MDER_FLOAT = "mderFloat"; - /** - * パラメータ: {@value} . - */ - String PARAM_TYPE = "type"; - /** - * パラメータ: {@value} . - */ - String PARAM_TYPE_CODE = "typeCode"; - /** - * パラメータ: {@value} . - */ - String PARAM_UNIT = "unit"; - /** - * パラメータ: {@value} . - */ - String PARAM_UNIT_CODE = "unitCode"; - /** - * パラメータ: {@value} . - */ - String PARAM_TIMESTAMP = "timeStamp"; - /** - * パラメータ: {@value} . - */ - String PARAM_TIMESTAMP_STRING = "timeStampString"; - -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/profile/HealthProfileConstants.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/profile/HealthProfileConstants.java deleted file mode 100644 index 54dc6be8ed..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/profile/HealthProfileConstants.java +++ /dev/null @@ -1,147 +0,0 @@ -/* - HealthProfileConstants.java - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.profile; - -/** - * Health Profile API 定数群.
- * Health Profile API のパラメータ名、インタフェース名、属性名、プロファイル名を定義する。 - * - * @author NTT DOCOMO, INC. - */ -public interface HealthProfileConstants extends DConnectProfileConstants { - /** - * プロファイル名: {@value} . - */ - String PROFILE_NAME = "health"; - - /** - * 属性: {@value} . - */ - String ATTRIBUTE_HEART_RATE = "heartrate"; - - /** - * 属性: {@value} . - */ - String ATTRIBUTE_HEART = "heart"; - /** - * 属性: {@value} . - */ - String ATTRIBUTE_ONHEART = "onHeart"; - - /** - * パラメータ: {@value} . - */ - String PARAM_HEART_RATE = "heartRate"; - /** - * パラメータ: {@value} . - */ - String PARAM_HEART = "heart"; - /** - * パラメータ: {@value} . - */ - String PARAM_RATE = "rate"; - /** - * パラメータ: {@value} . - */ - String PARAM_VALUE = "value"; - /** - * パラメータ: {@value} . - */ - String PARAM_MDER_FLOAT = "mderFloat"; - /** - * パラメータ: {@value} . - */ - String PARAM_TYPE = "type"; - /** - * パラメータ: {@value} . - */ - String PARAM_TYPE_CODE = "typeCode"; - /** - * パラメータ: {@value} . - */ - String PARAM_UNIT = "unit"; - /** - * パラメータ: {@value} . - */ - String PARAM_UNIT_CODE = "unitCode"; - /** - * パラメータ: {@value} . - */ - String PARAM_TIMESTAMP = "timeStamp"; - /** - * パラメータ: {@value} . - */ - String PARAM_TIMESTAMP_STRING = "timeStampString"; - - /** - * パラメータ: {@value} . - */ - String PARAM_RR = "rr"; - /** - * パラメータ: {@value} . - */ - String PARAM_ENERGY = "energy"; - /** - * パラメータ: {@value} . - */ - String PARAM_DEVICE = "device"; - /** - * パラメータ: {@value} . - */ - String PARAM_PRODUCT_NAME = "productName"; - /** - * パラメータ: {@value} . - */ - String PARAM_MANUFACTURER_NAME = "manufacturerName"; - /** - * パラメータ: {@value} . - */ - String PARAM_MODEL_NUMBER = "modelNumber"; - /** - * パラメータ: {@value} . - */ - String PARAM_FIRMWARE_REVISION = "firmwareRevision"; - /** - * パラメータ: {@value} . - */ - String PARAM_SERIAL_NUMBER = "serialNumber"; - /** - * パラメータ: {@value} . - */ - String PARAM_SOFTWARE_REVISION = "softwareRevision"; - /** - * パラメータ: {@value} . - */ - String PARAM_HARDWARE_REVISION = "hardwareRevision"; - /** - * パラメータ: {@value} . - */ - String PARAM_PART_NUMBER = "partNumber"; - /** - * パラメータ: {@value} . - */ - String PARAM_PROTOCOL_REVISION = "protocolRevision"; - /** - * パラメータ: {@value} . - */ - String PARAM_SYSTEM_ID = "systemId"; - /** - * パラメータ: {@value} . - */ - String PARAM_BATTERY_LEVEL = "batteryLevel"; - - /** - * パス: {@value}. - */ - String PATH_HEARTRATE = PROFILE_NAME + SEPARATOR + ATTRIBUTE_HEART_RATE; - - /** - * パス: {@value}. - */ - String PATH_HEART = PROFILE_NAME + SEPARATOR + ATTRIBUTE_HEART; - -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/profile/PoseEstimationProfileConstants.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/profile/PoseEstimationProfileConstants.java deleted file mode 100644 index d4ca89a414..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/profile/PoseEstimationProfileConstants.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - PoseEstimationProfileConstants.java - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.profile; - -/** - * PoseEstimation Profile API 定数群.
- * PoseEstimation Profile API のパラメータ名、インタフェース名、属性名、プロファイル名を定義する。 - * - * @author NTT DOCOMO, INC. - */ -public interface PoseEstimationProfileConstants extends DConnectProfileConstants { - /** Pose State enum. */ - public enum PoseState { - /** Forward. */ - Forward("Forward"), - /** Backward. */ - Backward("Backward"), - /** Rightside. */ - Rightside("Rightside"), - /** Leftside. */ - Leftside("Leftside"), - /** FaceUp. */ - FaceUp("FaceUp"), - /** FaceLeft. */ - FaceLeft("FaceLeft"), - /** FaceDown. */ - FaceDown("FaceDown"), - /** FaceRight. */ - FaceRight("FaceRight"), - /** Standing. */ - Standing("Standing"); - - /** - * Text. - */ - private final String mState; - - /** - * Constructor. - * @param state State - */ - private PoseState(final String state) { - mState = state; - } - - /** - * Get Pose State. - * @return Pose state - */ - public String getState() { - return mState; - } - } - /** - * プロファイル名: {@value} . - */ - String PROFILE_NAME = "poseEstimation"; - /** - * 属性: {@value} . - */ - String ATTRIBUTE_ON_POSE_ESTIMATION = "onPoseEstimation"; - - /** - * パラメータ: {@value} . - */ - String PARAM_STRESS = "pose"; - /** - * パラメータ: {@value} . - */ - String PARAM_STATE = "state"; - - /** - * パラメータ: {@value} . - */ - String PARAM_TIMESTAMP = "timeStamp"; - /** - * パラメータ: {@value} . - */ - String PARAM_TIMESTAMP_STRING = "timeStampString"; - -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/profile/StressEstimationProfileConstants.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/profile/StressEstimationProfileConstants.java deleted file mode 100644 index 8703728b0f..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/profile/StressEstimationProfileConstants.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - StressEstimationProfileConstants.java - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.profile; - -/** - * StressEstimation Profile API 定数群.
- * StressEstimation Profile API のパラメータ名、インタフェース名、属性名、プロファイル名を定義する。 - * - * @author NTT DOCOMO, INC. - */ -public interface StressEstimationProfileConstants extends DConnectProfileConstants { - /** - * プロファイル名: {@value} . - */ - String PROFILE_NAME = "stressEstimation"; - /** - * 属性: {@value} . - */ - String ATTRIBUTE_ON_STRESS_ESTIMATION = "onStressEstimation"; - /** - * パラメータ: {@value} . - */ - String PARAM_STRESS = "stress"; - /** - * パラメータ: {@value} . - */ - String PARAM_LFHF = "lfhf"; - /** - * パラメータ: {@value} . - */ - String PARAM_TIMESTAMP = "timeStamp"; - /** - * パラメータ: {@value} . - */ - String PARAM_TIMESTAMP_STRING = "timeStampString"; - -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/profile/WalkStateProfileConstants.java b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/profile/WalkStateProfileConstants.java deleted file mode 100644 index 370594dbc1..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/java/org/deviceconnect/profile/WalkStateProfileConstants.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - WalkStateProfileConstants.java - Copyright (c) 2016 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.profile; - -/** - * WalkState Profile API 定数群.
- * WalkState Profile API のパラメータ名、インタフェース名、属性名、プロファイル名を定義する。 - * - * @author NTT DOCOMO, INC. - */ -public interface WalkStateProfileConstants extends DConnectProfileConstants { - /** Walk State enum. */ - public enum WalkState { - /** Stop. */ - Stop("Stop"), - /** Walking. */ - Walking("Walking"), - /** Running. */ - Running("Running"); - - /** - * Text. - */ - private final String mState; - - /** - * Constructor. - * @param state State - */ - private WalkState(final String state) { - mState = state; - } - - /** - * Get Walk State. - * @return Walk state - */ - public String getState() { - return mState; - } - } - - /** - * プロファイル名: {@value} . - */ - String PROFILE_NAME = "walkState"; - /** - * 属性: {@value} . - */ - String ATTRIBUTE_ON_WALK_STATE = "onWalkState"; - - /** - * パラメータ: {@value} . - */ - String PARAM_WALK = "walk"; - /** - * パラメータ: {@value} . - */ - String PARAM_STEP = "step"; - /** - * パラメータ: {@value} . - */ - String PARAM_STATE = "state"; - /** - * パラメータ: {@value} . - */ - String PARAM_SPEED = "speed"; - /** - * パラメータ: {@value} . - */ - String PARAM_DISTANCE = "distance"; - /** - * パラメータ: {@value} . - */ - String PARAM_BALANCE = "balance"; - - /** - * パラメータ: {@value} . - */ - String PARAM_TIMESTAMP = "timeStamp"; - /** - * パラメータ: {@value} . - */ - String PARAM_TIMESTAMP_STRING = "timeStampString"; - -} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/bg_orientation_graph.png b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/bg_orientation_graph.png deleted file mode 100755 index 9c016e56017a5b91d0d32b2c10f0bf36dbdb1fd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 429 zcmeAS@N?(olHy`uVBq!ia0y~yVA2G#12~v~WUzBlCXiw*4sv&5Sa(k5C6L3C?&#~t zz_78O`%fY(kk47*5n0T@z;_sg8IR|$NC9ea@^o - - - \ No newline at end of file diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/button_blue.xml b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/button_blue.xml deleted file mode 100644 index c3a1c8095e..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/button_blue.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/button_red.xml b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/button_red.xml deleted file mode 100644 index 38d7427112..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/button_red.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/hitoe_explain.png b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/hitoe_explain.png deleted file mode 100644 index 8160c9b5a7b944f2f4c5944e5584eae202fb767d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13672 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 diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/hitoe_set.png b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/hitoe_set.png deleted file mode 100644 index bd3e6f4ee0710078c3f098a981ca280ebadcbbbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12596 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 diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/mark_battery01.png b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/mark_battery01.png deleted file mode 100644 index 92972d67bfa4ba19f3af468d07883362a60d39f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2931 zcmd^BX;4#H8oeO_!{SI}X#!ypRD_8vq6R?_0ijVg*`n-g5NJqb--%!=vWPSdB5U^` z*g!)BMOH)D2T>5x2mun(!KGyj0a1hi^KeFIs=MaL{Fy&pb#A?S-&ghOzH`5G?zv%W zZN6JXRs;aB+v00eI{;v8Xk9`IL6t1rAtmU64nK1t+@44XkMauj1E+n7-hN6J!CwA; zc79&IF_-)OP68k*Wnp^SA$nq-Ib#|?f>9FwC{O@w)yDeAjWXPS32Z1kwLPR?n##2)zO6{`_osJu z8b^t)tgKY*1yuI@{LdS)v9S|O4Gj$rWk?^j#mj*$Ud4&D8WN_X+3{K!^wsLjgyt`lD1qc$Tv*CR}76wsqWuRu5JB+;dpPVDtoEc*YisKfB9~PT zNx^cSJ~idKzP`wO*wmCyAP_RfqBFmO5$eOYg&z#|s|Rtq(Ju2Y&0!-|4(h!@ZN2G0 zXUi~t?biFGj|X({$WnS6wcujRnwFK76`I0(o!I7^5=Y~!%!JmjuZbwXXGCX?MWZ}> zov`#wdjIT9j?;WAPnKBH2Ysi41Ixv-ROTG#<1#v;GjUlnXUJ$DRiF6!byXiN_n8Pw zWty+?Nq+V{Z5awr?;y(ah!=*N%Or?F8@XxmU#I_z06r^YWnp=FWIsS^bv4@2mF<;{rso_Gu@sNc<>a`yIFrp16n~tv zA)VgykoqW3JvU8J$VliyvI0knWJ+?FScqJQ)Z2QIB_z&vjcKdXUQW1lRQBzw7kS8? zq+s`5sJUSlxQ)MAFggl zbwszEFtl$Ov!RCyifP5?{h(@#CF1dT`v&KQw{r%mf=aY^!)3WrIgn;EIA>-42Me$F z3klJ{e^E>4SQPhl;J@^dZ+XGh_35Y#Bx(5^q}ClR9i5yfKJm0ZYTr(6Mb{mXuZ^#C z=v}7T&xie6m#>`^3^CP^QiJ9n@MI}GWm-lyqj!|ddugZgxrA_{+o9xHybhr>yaH7a4iyF4%d7FIm~*; z-lNb|?f~+s&sL>#O+!=DNYjM;B4xU?VWLb!kI zt&{JIJ~f1%DzWJ-AbpvWnbRVcizncC+PjYBk?$-(kq#pNJpZ^0R@w@&bmnp`Ne~M$ zJ(IaR2gDDrPZU^)d#OmP>`dq$J$lYg-r6OE;lR7X3Z~FM79RoDfx2(-dqTM|D&A1 z)6~S3%$m`_@|3Qw#UP5}I4q+yH5iNQ+lXhT?e#pO^q204T`IKa&AY^QZZHUcVC2)) z_GjpQBl3p`)2m7I_xC3VfNSiE=2|H8nBr-xbh^C`449CZQ?ZD(+)qJ?uP(sna5&2H zii(9&K<0-_!AEfu8;&(j`m_9BKMoI{4{V$y>;ghcpF){g98sZjojW?}_}Jts%oFf3 zd(DFMd7Ii>E;w3od$-PTLm|@TrVx26wSv`+bB0k+6{P!*DcbGjcJ&_4RA3i?I<$4IM>2>bW(;U*9%o%h#Rt}aLd!)G4gYP-( gG1aHmN};q;bxpVq^;2;sl%j#f8Eey8W6$J&081`lmjD0& diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/mark_battery02.png b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/mark_battery02.png deleted file mode 100644 index 74ebafa15ac729acbddcc376f3b6da9356cab4f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2904 zcmds3dpOhkAODWo8Ifik=5nGuMCdf-Vj+0i%oFfJk)AACF<*cXNi3Di+aiT*r+tgn95p?A0|-^$K#%pUcr&gDBWPK~?y9&>0yyZo^?vi<2j>JC0Y# zGlF*)X5SEsfk``6>mZ3_a_d$Sp={CMegDdc>@wWWLU->wtFJ5kxiROog1C9g) z%*F)=2S4 z7>NgzX2=B4gMd%F+4lfCjSk4psQ{=V3SN7+JdB7SmzRH!1yC9g81My96aZo!b``cn z2#CK4kp6db<_drwa}`8Dp802)nZkz`(T#&+10HkruVTsT$~-5J?=Cq|b^l)5@F@qP z=0&H<^ML|ERZ45zF1_!@6;fhlGFi2+(T$?TMXzcv*FwO=u-t7keV8jyK>cwub!>U4 z&&`;rioqQI?GSov=%`jg-?)r$%Ab%~VWHl+b0bLwjpQ9pArZFY_U3?& z$vu{gn3Mn;u8VFYZ}`17&0Wv+JgxQQ%BbFR{$i%C$vUj{Z#;_OCdTtdGbHS=LEs_Y z-X>Z8UF~`&mYS(m;?$Z{l0LI=?B`vhyGejNxF>*|@+#oyRfrO;^W+&%hnjHDW@e5p zO|U7+iHYa))5%n-JCDmKFD)${tnqIusNhwHYf`CXo)*!8Yqt{`Au}?A~6Gz2H#`vDY=29R2u7^YCngSj$*W8M&?W z$IUa~%Dz4Cxv51OkTdy6%$qPV8QUJh3svrlX@jF(e|@HCZLwk#iVkeAgrmdkhG#F_ z+=;5=c|cLSg4OC>5j>&fJ!7tNGe@u*`o}s>dYUdNxxA1t1ZBzE@rADrf7&CTGp; zoiCEU;4d;5jDQ^!QvlL;)B8@z+G0{#F*_pZIdvN0gno9CAT`)4A28wdYKZZwvkyvG1cCe6m>U*s=>j#WO; z93bTL|Ff8OyFEkTio!ktJ2bGRb$0}hW&^Jb}`i!;Qd7Xtck(+re`=yOFH|VIk=Bc9=k98tE!dHve% zh+sw9^XPmu$j=#Btid=qW(Ns{OPSy{Td!BjSxAl9hD4Ai-)7A9!fc5*4LbaMNh#{e z;13jt+#8SJv?bhudL0#J)Ja`Y*<-(iSj59em6anCw=U&O$l|3}*Mh33q#5kJ1@Gdr z#g_+{GsvYTSmHnf)G8&0EoQmhu&d39zlF#{iPhyAInW zj(*^4M23$xjQfr$`w}&;=29pI5b5tlizhCEYV#cS8VkZhtbZgSNJzQfbA4Icw?lN1 zEZDYi@ajwNU9vM*@^L!ai%A`!~0q2{YZsk$IqL&JQG zWNf;*x%obg_HwABqa(`?N_2ng^uE934egcT1AYv{9oI)#F=uiR3{HCLAa}!wrrTQ; oh{o!XZN@D_4SZRRwI~QI(!sYvnBhiafTJ?t?C9oDYlqGH3m%wlUjP6A diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/mark_battery03.png b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/mark_battery03.png deleted file mode 100644 index 6128562dc88a2cf0b08626f81eaf76fc032076ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2884 zcmds3do+~m9)7=>F%2OT%~s=H(nT32Q5X^<<MlR)+NtDaUb&Fgo=aaSDXP>p#I{%$N_FB*Pz3Y2_>wUlVKF{y@y}v8R zZ7ifDwnzW~q%4n^*#Q6zz|ScR8lFkk+o1vvo6nj%o;^YLJ;AuECW4g zK6XAH-Vq_seGCDR7`8M!WFOu;-fwM-?@|)HO^K543qbrX;;$@ z)og7YY3}BwlBhJ=2xa80B`vD6XO}owu;U8n@0A$kJLEUUuCSkwWZt+R++f@y6z0~~ z*H7YxM@FR70kdIoG2+wA`1r#LHwvY}ogJq3d3GK0wK!caj20PLer8I{ke7p4$H^lt9f5zSFr9tKIv4z zzWvVlmI)!Nh+ei7?c-Dbm~5 zfs$XvS^$3k&0~iFKuE3vLjYDueuuBqTYQO%N{Z){@mDWG=f(fAE4970*3{XFGD%Vs zNLunKwng*vcKI)LBqVSdS zk`Afqx|SCE9deSt%9NoqOBP6PL^$_5yMVH$Dq_) zOF%^$rUJX$;O3pNgj-qzy4L_Pp7EU3rT?84m>CtpDg>7n)uabfL{-rlHnz4M%5>4s ziHV6fy6^LNypIzTeSUs^J6oEY^(iR%bj|+Qdxf%`A7wp~_RJS_Ua{l3hE-w+gs&og zRGM_ma-g>_i``z9T~H{hX6NSSDrkAt=~4%j8`Q~DtukJ0MJ{*eCn7?T%P5hw#t=?^EA735JYtZpD?d+0EJrr@Q&(HCZ( zz0N6s$h7?iWU%<;Jr^D&k~INWj&`82=I<{oS}rC znR&eXTriESe6!Hao`)5$OW8Tk4BwqgY- zlTxO1_%lzOf{WSo^yn|k>2r^RKZ~T?J0TT8gj`qr@}`=yiUUZ-n5{gy(ib~a2`7c zyOsCdDLFYgu8N06*M5M|P__L%P3vDGw6vFBK+!Bfp_4_fIwxn zI9XNybTlVBrqCfjr}smbNWBgvWDao^i)Lc7i3^cc;sLdLeou-h<_$zjlu#g=MFjYtrwP;RnPP|z0CK*|1BT~cwN!#3o^h1h~;TQ>kp(pB#X4vJBQTO2=@yBUiOw`I90DY6^{K*|+d9VSOr=fNFama(A`iDU!I zG71F1%!|WqdwpuE#oBR&Uta#;++_lgRH=SfhtGXh>+k2GGl_sc)v9xeR(GOV@J#$|iVrPuuGiLbi+lS*KxNutxEX{4q3QehT F{|3EbGjad` diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/mark_battery04.png b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/mark_battery04.png deleted file mode 100644 index 9402a050b25736a02291441e690e0eabe4e1c73b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2841 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 Wi{P%k1@ED=E^s{LY+rGZbnPEeNiE9& diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/mark_battery05.png b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/mark_battery05.png deleted file mode 100644 index 92f2b45360ccdaed089a2b24cb52f3ccd0a44689..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2563 zcmds(Yfw{X8pq$01Pr&Gq$0Oiq_`-hDHlNl0s@vx0YO1qK|=@#AtDeW7(gi;Eh|vO z=pq+Iz{(0Daw!P5axp-d7>NNy4HzI0%FQJtEE@`P+e7WTU)=q$ANrv)|8w4%=YM9N znfLuY|MO-Z^7YVCH&6!vXnB6=>JI=kf;@DrDpFySOpTC5Ki(}M{xE|UpAd379Jqur zLc@(bqeCLX{li1Tl9>E(2LROWc)GeANqjvs_=7KDz>qVV^Q6v{Y?RgR7B;SK@O(to zz@IC=@{m8fnLMv+o0khe}vXt!;#JjZ=U zrpfISNh$jxgo}Y^xm3%<>rTyGY|>J%H{dwsj`PY_7JKBs)U3T_cN=EPYnD2?2?WB) zQ>Q9z+b1T`EXi^(~9_Ur!L6b{@Nfr z`;~iKmcF9nV&(em%uE1F6*l>9d@3s|YjG~v3Z0@$sOBPHes+xTEPKHnmIzpT(V$D& zGf2XZ6a%z#1vKkO(gufGjXAAhXza`;@Tvle&LjIB^8^sjvBwP|^|LM$`TgUX0~(>CAiv-=dK`QmW0VlCRz6t(hJ zVY$1|=UabB1fSB8uz5VGhPIT9n@qDM8F7eqt;{N2>JFirF_A;`Bid(KD5|hLI}}7~ z3%$;-vsS!FYA?c}1Q$AEBH;1@6%9)bZEx?G-KYutqL>me)gP4jSFR+CP-cN-3@*9$&OWLlX=^Q-!fqEEZc+YiUxna;C-cU|KZSjBP?! zx0+XJ=HaPki`O(0+1vjc7VpXU02cqt`!`N2BV~ORF34s-WwBCXaNz4B9k~0G0+O^a ze1P07kKe1R@8%s9$M4;Z1*ii9LSeTS3I_G2 zMZOW$li`7Rbv41y(x6x54&1d;g#KQ-O={Zw34AYG(p29P zWk|%44bR)wQr@tdD4OsVs@fy2eynS)Sq}ftt9$gc)5oI$RGlkIPtRT7cCjPmZDKO9 z9XY9OOdr;kJeW830~U>qU8S{E)_!7Uyt4E&R|Dyw?1|dbCoV0`&4?v>bT?TO07NOo z*0i5~5NHVlk$Jn5a=Ft_IXe|_S@jkfK|ernVJrhn*_hpM3k{y!QQ`J6(#3=6ljw)P zH1uq)==pp~VV=IF^Agde=KFx*S()q(rG_M$kLIFqRGq1pv(+1D-YZZ;zYo3-=i)p1 z{~vGu?sR-4j&p7+R2CI6IjIV544uxMzG;E7nb_sOpsYN|uf1q3No4TOC10J?Yz;;R zd>p#*fV`*U&KFrIp#W-r7jYi`GjKdD0*4Ixl1tur=6i&-}uVT^bx)NIw zcO!QA_(lOH%~m&qab|E6xdXfYLS8-^ThMy5xQrhbdgvAn83dx;@^dYy?DoM{<|W=( zJTocKLAd;vk2&m}zfFa=A4;H}L6V*)ZFim~qkrZ7gUJ8J`ybxhg8}bS@ITS%M1hfn z$i{$c)K_F{D!5Bmy*V^EsHX-@+rEga$0~M0s<1zLZyUiIL30*cLFIiP)e%m%8S{a?p&dz?&(D2pPkhr)$Qxr$?WcxDD z>vUA(cVnYBsq~^df{JTcAFUh diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/mark_heartrate.png b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/mark_heartrate.png deleted file mode 100644 index bc243b741acaaa5fd4eb9b9f5cfe3eafe8ef8c9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10177 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 diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_backward.png b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_backward.png deleted file mode 100644 index 1e8817dd76b92857ff18aa3d6344928bce5988d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5247 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 H?RfJ)n^$L+ diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_default.png b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_default.png deleted file mode 100644 index b190b01c306dd7c4e35511783bd93a36a0afb144..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1637 zcmeAS@N?(olHy`uVBq!ia0y~yV0-|?860dtk$!Ux1t29^;u=vBoS#-wo>-L1;Fyx1 zl&avFo0y&&l$w}QS$HzlhJk^N-P6S}q~g|_JGOa`93&bNg#!bCAZUXS`vZ<2E-LB~ zZ#kLNjod#lPPoRZ+RDwv)paKQ=0&xna#7W?S+I&wF5MgV z_^qDnkC%B3!4-=)9Idd4)1Q7iXJf<+C5DZ!-iFLsNe+IqYAw_2Qk3e3pvKcT3n9eqA*y7iNs(Hele9dhoS5km10GSq#6` zr5Ox*-mUMQ)4-VE@c3gy1LK3;90m*!q;P-%h#DA}frx>L2ZTn5+y+5x-bM}&^dK2Y za?rE@PY%d_A0cuhBp(=n3IHI2mI3oQ3u3RUF)}c}nDv^4hv9w+livB~n>`s0Fx+}J zP4Gc81M`6ejCL*!-><(mwVvy@jETXv>zZ5f;=TNp^TJ;qUAJo0o1&dF_!zz@NJ+2l zedboZ+dE=Eu+W>?VZiW3;6A8SJNjMIE}Lo2y(4p9?CIWc{362#(?u&|YZh<4`+V_t z`v{Sv#kb_tCwrRBKR;VEZSzb`rUUj%PVBSu>^mK{@z(vH?{-aoAJ2Tptzzc3+^E@G suDNkB$cw4pbB_A`ZQoUCePEJZd||h4#?&fTV7FVdQ&MBb@0FK;`DgXcg diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_facedown.png b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_facedown.png deleted file mode 100644 index 55fb32476264a2967c838676f530fb82b12d651b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8452 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 H_EG->%1H~1 diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_faceright.png b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_faceright.png deleted file mode 100644 index a2b67ede8fda541db638842e8ab10c77b6d82d8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6162 zcmZ`d2{aVk_cLP~YlzTLB!sf$%P4DQXc1Y{*e0@MO=HV4mZZo~pBhWDi^!Ta+hiFE zAu(CUk|pa{23h}azRvmm&iT&oKj+NMdGFqL-@W(UJ@Tf$E+^YjHV6d5dG(665d;Dq z179aNGuVkmo)QIrLS86yFJlh}FW);4>>(HLdf3{FUUj?UXm4bH=k7z#&-Q8%h(Os@ z?TaRUg9{@Dt}lK4S*X61K94>Ko=|PPBItZ_8pEc4Gy|1q%>Q@qbTMz`&+o&fIeXY2 z7Wox}qsXCNXM@Ga_0npIoYN-wL+>FxmshT7qvZwd@wV(F_~n(tImZs}*62mWjgFlF z%I4Y&9Z3vzOT@8$d2M$;NY-V1xEd?oejHb}t5Uw}ca8y4G52M4a(8u7Ajcpz#d_xn z#hIsG(`KJKX;tH6FW<2HV3Nn$|CdBOFGSgMb7_RsT2#NCx8k=&y|X*R(k`|eM}XD} z*S;v8@%Q()77-Hq9P#9d6$ZDL}gtH1vR3p6?^%J2LW14__QVt$kF?TUa+_gfqg zpSHc7%@4A-3IoN%8}@#7?cd&lX*p_F=#X^!b*7bN#-t7x;(~v+@whocX49N>gI8Jv zR@$2kp$DfVEm>_Kv+vsm+lJdl;bX>~iC-aFj_RL>jd_SgY#7L_Go)eLEglB>Sj0nA z9)N@_ITb1!K^e3JXzS~645aNDgc$N#2`BfC}5^X#SISYO^VqpKzViIHu;;-2#E?@efydPX3zg z$<&p*qAw{anX>OssSg?`v1=_w7Z4UlYRD~6s9vIFjZeYK+oEqby56YzmQr@7k$7Fk zm94ERQD&%K4{8jz`dMnA^EJ{cI&Anq#_UW|rPxSQz*)P_tYw z8-5XDyiUaka<9X7O%~l`1-c2c73@_sbd_bEKK4ovn0lmR%ok%8+ zusg!B@QEr%sj@#B-fh}Rn!}*PbmS*b);@0n&+#4ytUU0 zZsPNdgsQ`R-_VA%Btr`h&qsWV(`I7AMMbRMaLg6GTE)t|=NWlXiZ)T=B!3ESXVH-q zNDjbXgj|k6FS_;xis$%cz})-Fxruc2eB`tr0}@+Nm4Pks>CkX5op4}hR5&R*`jQ;8 zr$arai5qT_t~xBGueKHd6NGX^I-OgQA>m9LS}OhPs5(VRIHv7lKBq9cGb7tCgQ>29 z^Gpa2@p*B2x|l$^wipK-lh%&*R+>m-1`jTB_w?~Ub^#XWYm`&%E0=1xUdB(tL$d<6 zP=vkS$ERyHgJlnb?)wtaMmy_KE+ zbaP=~ZCFeg;matd*CWUf!4=iLyYL}$hKo|35f&3HPl|pv*PVX3Yu7hlDNH=vj^(}2 zU^`D^NhnKhNT^O90y-QSwcYrb;*gn{IY6a`Hd@6$Vmain+;D*NSsW|}Z>s9!y4N+b z=Pgk?5S|YoS8u!EUlAgv*4pED=VB$mC_p_?!Fm)MTNm5e=|cl z8Y?qxWF3s-N6ap%pnEPQoahdV5cx}8eT0_h^c>2TsI-{Qmpn(I@f{D=1` zP3VznKdP$kuHK1|^mW_B9@@OI)xk&E#o7D;gh#ZLr-;$ON#Kt%)5{{OAFd{qrQLaQ ziMrM$h27a!l-(xb|Jp9h?^^A&2rq6za1(FZ_Vxz11tC5=1<&jWpYTIo=s6WTGs!5y zsPM9C8&ADH{;>JNxLV6a)_0NI`YR7ZArT_EIE%%Zl2O{oevXVw`KqQqeW(U=1#Dak%JJg zYm@%sisf4fSI_FA_E6=>4do2}eI*N{3|Pc!RCz$F6EfY5*{9O6! z7lqHA3N(Z=xQgnnIb*cK*4=p>{am1n{@FO?0NLzjr(x=2(SFeh<9*zld z8~hT=Rr0;S<5fKr82k197v9JZG zBUP2Vw6IN)fI|+&n;Uod^k4?sL}t zo3-wxJ9A1aWhr>$RMX0yPjyD}0u!g|SaT$~v`gc4n|h!f%&fd2pWNNO%S40`ySOcbsy{*a#6YTd~_)+3&YdeAP z_+fZ4Xm_QRo)#YjSo0M3Xv9e96gaF!IEWS;84QYO0&O0LSEbFto z<<3Z5Q(>`TH=c^PxVV98?97LGa!x-dg{JL{I2n@87@2Ja#bY=4md`Q0ZSG)X{{CtinCKe5Hm=%cFHQd_}jy-D=H_2dx`UPNwd!=QwIe5fXzAb|_u`{(p_-7S4wK z)(rWH%H~`ALL=cakH+YR-#>jXGPV=BJ@c;gL}2EP;WKe@w?4#4?f8_5h+Ooe&Gixb z9CMl-q>&z@!&L0Vxrdu0zU3)mO3Zo}wcF2z(Z~(^w2$fEoa3{%0xX1N-Sr7`Zv`D= zoOkd@lJ8xS`XL*oRos$E37u=cQ_InpU!QtXl{KX_~=J{sT%Q|c*SaT3;TO? z!o{XO@S*O0f%~oc*O9~^P>7I4x>)!X__S(68`i$6;(Z+7%Z|LCs^&NRt#d9Z-dq#d ztN>o=ar-J7)wk1c;lXOnO?>(8XpCr#y`15c4tJ4NAzxC#d}nj?j2Xho%i=vYCMc~E zJJz@|*@_@%_0eW^W_6yN2tytV6JS)3;E(gqs2eET{+{Kx=CPUerhLeHTAK98;LY~V z%&|i;%c_zWyj4T&cyFsBRY8rG^=ieeC25#1kMh>(QLDL^ux8bpYv09Ko-4-{=hm9X z#wR7<-%PB*7!?+tCIltVjdm!Cx#S1vGr$Dd#Ij2$aufj&#IbrWkEE^#bGn}foGUB zobRTC@+isLvKP2wL6Mt_t62cKial5y3c}?Hg2*e0GTXyE|ImY@2K+Lu3_D%ucV)E@ z;tbCb@MeF(F*o<7McrlIzI|Iu6b-pZd)>MzFv9})HEFOqg79(z=*)c{@u)59`oIBp zF8cn6G7{-=kN2OW-c92~P)z|bK4o8z$Fl(9fz8bPrun$n6Fc?y$17#-(4mVJ^x8x4 zuo>s&B!5fT7xO(*cvjxCF+AeMkJ43QCD{p?w}k8KrKHZ`=a)UszNda^@&xA{Z6C zuDobO3Tvo++n6EwIrCWb+)$LW%!>3B4Y|W^YKE0`=lLss(G{iFCbQZxkuf3)iWFr% zgM;*&QhQ}e8#QL(%aMnR_&3f)bsB;W=ohSNxX;6Qx2~k5ZoYGJnkZvjI-`ZzVfMc$K29xU;5TqwK z*junQ!EbFli?^+*sR`!<8XjiU(H*>mHVc>V>>SymCe};oxp?#>c_g{&$P9~W0u(qq zx0q4ZoNt{tON}%^p}=~d&u+$3WS;hTN-M=Ba6$VN(!d*duEfnO?*_3Jq4rM2fmbpQ zvoGKw*5>AZXz5lv)wtmaN^GPpsDWS!yr+z4H3KgmNk=++yJZU}O}2GLRliZ3ntn(` zjcOcbRCv$JfBOaD7{7OKbe}TYRFx1KjlO3EQoXXzw)19|lorIe7$O(tR7WV^8|0We zJB-m9b#1;V#^<)m9|DPxiz+b~Lcw5yA6=cCQl9}c{E~SpE}$$Gw1e+zw`{ke!bsNs zdKfIh=-2YH!T$MU8t=E60RM;MUK@E_7WnlP_|j!*m>jxGIUPiY?3b&nDdnmJ%J@ugE~mUcQzpT2j43N5F5*Eh5cL?{2p}4lETU}=uDzyFO-*mLiYe5 zuMVL1n!kXb6WlIO3N=XfJ5xR5y|-;*Rz$AT0vNTnPu}w(XA_cZ=UTvHO_}A3Ty?)^ zWI{A#WdLW+v}9jZJffzlx%?0G)!etN>+y0(2VFW)mLLf{?j$YQj36m=h#BZWAOO|c z{QhOf*RSX#MxZ%)f@HSxG2xoKx9Q7kXGo9i;$mL@Wzj==MCY_c`PDl&Qz3rp_m|mM z0W&`{*!11h{2Zoz?DRmCzKK@k622a1gg6vqR%RRr)cOv^lsw^g|2_S(m*~97PZfEL zAWX+k_!Sq(fcExR_Jw1v`PaZv|93GgHubJ*f&kGnYVs2nyY>(66u`Z&*H&sO0V?zI zmt+>iA$p)EfL#-!rxSx{Ncwjp;X^Sc7z@)dNW{16o@(aw`2W%xtEM8+naK_X*hl!O zJ(>6LEV_unZzt)OiHnO5ba&r0>XMecd;T0N9o_kQoEf?&&YCWVJ5Rloel6iUw)FZD z5JA6w&h(>$~y{JDoDt+hBj)XgKeI!*qoJT`4wY>Bi2eu8s~rL!hs7S>K~#j;!zQ z)(QXVojg0Q0$n)MVVSp8HfDgQm8U`F;?y2(n*q9ct zsRA8|L?S)#KxyJ?e?A7&o4#*kGWkc|S%bATtTh}^Q};B#%&16rpMa@XiULq>Vz(Ou z1H)A}V^C@5Mysd_{%0oS6~d_qNSrrEmr5!986&;vrFd+d1Bk`d)q!89Z;YF3|3SYX z|5%&{XuR6o($b3uoHAt_+uz5@1FuXQ(rbi4IbPAmE^6=>Gl&9dv#0vPKo0R-xd>qx z=_iwCP5_2vZV?YXU>gIuFULHfghmP{h9nggM}ttK%6$H*l+u7!vej|BD)B`woFE$JmiY&X#TN}xieSKQe%^$>hJva9jIz3K(EQco zi&Rxq#wNfk&Y{u%3n%`}$GR2O)d^xCz_Ycx2>p#$`G?hV9u^=xxD?>bhSb+<2mtr% zc9X9^1@6B5_&hr>9Do4j@cLU3!%ftZgYITLqtgRoM6#K)1Dovjrc-5pFm@6=s3;u! z&;QMP4;k-xcoeZ80(5b+n>BFJkWlyeWisv$zwC5ky`<^$k>0k$mX=@gq<>A3C}xMeX5(R+tir&`Kg% znxB$pdDh7FjNoZfXl!geFg(0VIKYAKbOUr){d-{$<_Z~-Yv$2H^87$Y$D*r`kFtfO zBN8?=~V4F|f1Pn`2-ge=zar z*RNj-`+GZuTo5mz diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_faceup.png b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_faceup.png deleted file mode 100644 index 849df218336c4a2488e226335418a9b0084f252b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8321 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 Jv7zgO{{hTi1Nr~} diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_forward.png b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_forward.png deleted file mode 100644 index d6f7cf098bc0a62d061f0b3ef2411be3f8315260..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5377 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 Sc^3S?18HmMsh6su!v6~eVkR>H diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_rightside.png b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_rightside.png deleted file mode 100644 index 652508511ba6b645811c3381f972a1111cc50bbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6831 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 UzrJt^ynzCAGz~OL)NCLB7uQaP3jhEB diff --git a/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_running.png b/dConnectDevicePlugin/dConnectDeviceHitoe/app/src/main/res/drawable/pose_running.png deleted file mode 100644 index 453a036604a50edebcedd43952be59580be2a071..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5315 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