From 604c31c52f1b6e03a2460d2a1330e7dfff596726 Mon Sep 17 00:00:00 2001 From: TakayukiHoshi1984 Date: Thu, 13 Jan 2022 10:59:08 +0900 Subject: [PATCH] =?UTF-8?q?DeviceConnect-Android=E3=81=8B=E3=82=89DeviceCo?= =?UTF-8?q?nnect-Old=E3=81=B8=E3=83=97=E3=83=A9=E3=82=B0=E3=82=A4=E3=83=B3?= =?UTF-8?q?=E3=81=AE=E7=A7=BB=E5=8B=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 移動するプラグイン dConnectDeviceAndroidWear dConnectDeviceChromeCast dConnectDeviceFaBo dConnectDeviceHeartRate dConnectDeviceHOGP dConnectDeviceHue dConnectDeviceIRKit dConnectDeviceMidi dConnectDeviceSwitchBot dConnectDeviceTheta dConnectDeviceTag --- README.md | 9 - .../dConnectDeviceAndroidWear/LICENSE.TXT | 21 - .../dConnectDeviceAndroidWear/README.md | 18 - .../app/build.gradle | 89 - .../app/src/main/AndroidManifest.xml | 57 - .../deviceplugin/wear/WearDeviceProvider.java | 26 - .../deviceplugin/wear/WearDeviceService.java | 124 - .../deviceplugin/wear/WearManager.java | 449 - .../deviceplugin/wear/package-info.java | 12 - .../wear/profile/WearCanvasProfile.java | 325 - .../deviceplugin/wear/profile/WearConst.java | 260 - .../profile/WearDeviceOrientationProfile.java | 279 - .../wear/profile/WearKeyEventProfile.java | 442 - .../wear/profile/WearNotificationProfile.java | 347 - .../profile/WearServiceDiscoveryProfile.java | 43 - .../wear/profile/WearSystemProfile.java | 27 - .../wear/profile/WearTouchProfile.java | 897 -- .../deviceplugin/wear/profile/WearUtils.java | 75 - .../wear/profile/WearVibrationProfile.java | 112 - .../wear/profile/package-info.java | 12 - .../wear/service/WearService.java | 38 - .../wear/setting/WearServiceListActivity.java | 21 - .../wear/setting/WearSettingActivity.java | 58 - .../wear/setting/WearSettingFragment.java | 59 - .../wear/setting/package-info.java | 11 - .../main/res/drawable-hdpi/ic_launcher.png | Bin 7686 -> 0 bytes .../main/res/drawable-mdpi/ic_launcher.png | Bin 3801 -> 0 bytes .../notification_00_post_lollipop.png | Bin 826 -> 0 bytes .../notification_01_post_lollipop.png | Bin 1019 -> 0 bytes .../notification_02_post_lollipop.png | Bin 779 -> 0 bytes .../notification_03_post_lollipop.png | Bin 821 -> 0 bytes .../notification_04_post_lollipop.png | Bin 970 -> 0 bytes .../main/res/drawable-xhdpi/dconnect_icon.png | Bin 26324 -> 0 bytes .../main/res/drawable-xhdpi/g_play_img.png | Bin 9614 -> 0 bytes .../main/res/drawable-xhdpi/ic_launcher.png | Bin 12532 -> 0 bytes .../res/drawable-xhdpi/notification_00.png | Bin 21945 -> 0 bytes .../res/drawable-xhdpi/notification_01.png | Bin 23848 -> 0 bytes .../res/drawable-xhdpi/notification_02.png | Bin 19772 -> 0 bytes .../res/drawable-xhdpi/notification_03.png | Bin 20895 -> 0 bytes .../res/drawable-xhdpi/notification_04.png | Bin 21794 -> 0 bytes .../main/res/drawable-xxhdpi/ic_launcher.png | Bin 24726 -> 0 bytes .../src/main/res/layout/wear_setting_0.xml | 50 - .../app/src/main/res/values-v11/styles.xml | 12 - .../app/src/main/res/values-v14/styles.xml | 13 - .../app/src/main/res/values/strings.xml | 8 - .../app/src/main/res/values/styles.xml | 21 - .../main/res/xml/network_security_config.xml | 4 - ...eviceconnect_android_deviceplugin_wear.xml | 71 - .../app/src/main/res/xml/wear.xml | 7 - .../src/main/res/xml/wearable_app_desc.xml | 5 - .../dConnectDeviceAndroidWear/build.gradle | 18 - .../gradle.properties | 6 - .../gradle/wrapper/gradle-wrapper.jar | Bin 53636 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - .../dConnectDeviceAndroidWear/gradlew | 160 - .../dConnectDeviceAndroidWear/gradlew.bat | 90 - .../dConnectDeviceAndroidWear/lint.xml | 190 - .../proguard-project.txt | 20 - .../dConnectDeviceAndroidWear/settings.gradle | 1 - .../wear-app/build.gradle | 50 - .../wear-app/proguard-rules.pro | 17 - .../wear-app/src/main/AndroidManifest.xml | 62 - .../wear/DataLayerListenerService.java | 247 - .../deviceplugin/wear/WearAppService.java | 197 - .../deviceplugin/wear/WearApplication.java | 93 - .../android/deviceplugin/wear/WearConst.java | 272 - .../wear/activity/CanvasActivity.java | 292 - .../activity/WearKeyEventProfileActivity.java | 314 - .../activity/WearTouchProfileActivity.java | 287 - .../deviceplugin/wear/package-info.java | 11 - .../main/res/drawable-xhdpi/dconnect_icon.png | Bin 26324 -> 0 bytes .../activity_wear_keyevent_profile.xml | 36 - .../activity_wear_touch_profile.xml | 17 - .../activity_wear_keyevent_profile.xml | 36 - .../activity_wear_touch_profile.xml | 17 - .../src/main/res/layout/activity_canvas.xml | 19 - .../wear-app/src/main/res/values/dimens.xml | 7 - .../wear-app/src/main/res/values/strings.xml | 18 - .../wear-app/src/main/res/values/wear.xml | 7 - .../main/res/xml/network_security_config.xml | 4 - .../dConnectDeviceChromeCast/LICENSE.TXT | 21 - .../dConnectDeviceChromeCast/README.md | 18 - .../dConnectDeviceChromeCast/app/build.gradle | 80 - .../app/src/main/AndroidManifest.xml | 59 - .../main/java/fi/iki/elonen/NanoHTTPD.java | 1435 -- .../chromecast/CastOptionsProvider.java | 66 - .../chromecast/ChromeCastApplication.java | 53 - .../chromecast/ChromeCastDeviceService.java | 37 - .../chromecast/ChromeCastProvider.java | 31 - .../chromecast/ChromeCastService.java | 464 - .../chromecast/core/AppLocalMediaFile.java | 33 - .../chromecast/core/ChromeCastController.java | 313 - .../chromecast/core/ChromeCastDiscovery.java | 227 - .../chromecast/core/ChromeCastHttpServer.java | 342 - .../core/ChromeCastMediaPlayer.java | 392 - .../chromecast/core/ChromeCastMessage.java | 174 - .../chromecast/core/MediaFile.java | 35 - .../chromecast/core/MediaStoreContent.java | 37 - .../chromecast/core/package-info.java | 11 - .../deviceplugin/chromecast/package-info.java | 11 - .../profile/ChromeCastCanvasProfile.java | 262 - .../profile/ChromeCastConstants.java | 48 - .../profile/ChromeCastMediaPlayerProfile.java | 1320 -- .../ChromeCastNotificationProfile.java | 156 - .../ChromeCastServiceDiscoveryProfile.java | 78 - .../profile/ChromeCastSystemProfile.java | 58 - .../chromecast/profile/package-info.java | 11 - .../ChromeCastServiceListActivity.java | 64 - .../ChromeCastSettingFragmentActivity.java | 94 - .../ChromeCastSettingFragmentPage1.java | 33 - .../ChromeCastSettingFragmentPage2.java | 33 - .../ChromeCastSettingFragmentPage3.java | 111 - ...nectSettingCompatPageFragmentActivity.java | 80 - .../chromecast/setting/package-info.java | 11 - .../main/res/drawable-hdpi/ic_launcher.png | Bin 26324 -> 0 bytes .../main/res/drawable-mdpi/ic_launcher.png | Bin 26324 -> 0 bytes .../main/res/drawable-xhdpi/button_blue.xml | 23 - .../res/drawable-xhdpi/button_circle_blue.xml | 22 - .../res/drawable-xhdpi/button_circle_red.xml | 20 - .../res/drawable-xhdpi/button_google_play.png | Bin 10486 -> 0 bytes .../main/res/drawable-xhdpi/button_red.xml | 22 - .../res/drawable-xhdpi/chromecast_img01.png | Bin 10074 -> 0 bytes .../res/drawable-xhdpi/chromecast_img02.png | Bin 10839 -> 0 bytes .../res/drawable-xhdpi/chromecast_img03.png | Bin 14530 -> 0 bytes .../main/res/drawable-xhdpi/ic_launcher.png | Bin 26324 -> 0 bytes .../main/res/drawable-xxhdpi/ic_launcher.png | Bin 26324 -> 0 bytes .../res/layout/chromecast_settings_step_1.xml | 46 - .../res/layout/chromecast_settings_step_2.xml | 53 - .../res/layout/chromecast_settings_step_3.xml | 55 - .../app/src/main/res/menu/browse.xml | 27 - .../app/src/main/res/values-ja/strings.xml | 4 - .../app/src/main/res/values-v11/styles.xml | 12 - .../app/src/main/res/values-v14/styles.xml | 13 - .../app/src/main/res/values-w820dp/dimens.xml | 10 - .../app/src/main/res/values/color.xml | 7 - .../app/src/main/res/values/dimens.xml | 11 - .../app/src/main/res/values/strings.xml | 23 - .../app/src/main/res/values/styles.xml | 29 - .../main/res/xml/network_security_config.xml | 4 - ...onnect_android_deviceplugin_chromecast.xml | 10 - .../dConnectDeviceChromeCast/build.gradle | 17 - .../gradle.properties | 6 - .../gradle/wrapper/gradle-wrapper.jar | Bin 53636 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - .../dConnectDeviceChromeCast/gradlew | 160 - .../dConnectDeviceChromeCast/gradlew.bat | 90 - .../dConnectDeviceChromeCast/lint.xml | 6 - .../proguard-project.txt | 20 - .../dConnectDeviceChromeCast/settings.gradle | 1 - .../dConnectDeviceFaBo/.gitignore | 8 - .../dConnectDeviceFaBo/README.md | 29 - .../dConnectDeviceFaBo/app/.gitignore | 1 - .../dConnectDeviceFaBo/app/build.gradle | 75 - .../dConnectDeviceFaBo/app/proguard-rules.pro | 17 - .../deviceplugin/fabo/ApplicationTest.java | 14 - .../app/src/main/AndroidManifest.xml | 27 - .../src/main/assets/api/driveController.json | 220 - .../app/src/main/assets/api/fabo.json | 461 - .../app/src/main/assets/api/gpio.json | 2399 ---- .../deviceplugin/fabo/FaBoDeviceService.java | 470 - .../fabo/device/FaBoDeviceControl.java | 173 - .../deviceplugin/fabo/device/IADT7410.java | 47 - .../deviceplugin/fabo/device/IADXL345.java | 49 - .../deviceplugin/fabo/device/IHTS221.java | 34 - .../deviceplugin/fabo/device/IISL29034.java | 46 - .../fabo/device/ILIDARLiteV3.java | 48 - .../deviceplugin/fabo/device/IMPL115.java | 31 - .../deviceplugin/fabo/device/IMouseCar.java | 21 - .../deviceplugin/fabo/device/IRobotCar.java | 23 - .../deviceplugin/fabo/device/IVCNL4010.java | 68 - .../deviceplugin/fabo/param/FaBoConst.java | 68 - .../deviceplugin/fabo/param/FaBoShield.java | 305 - .../fabo/profile/FaBoGPIOProfile.java | 402 - .../fabo/profile/FaBoProfile.java | 502 - .../fabo/profile/FaBoSystemProfile.java | 27 - .../fabo/service/FaBoService.java | 32 - .../fabo/service/virtual/VirtualService.java | 40 - .../virtual/VirtualServiceFactory.java | 155 - .../fabo/service/virtual/db/ProfileData.java | 374 - .../service/virtual/db/ProfileDataUtil.java | 151 - .../fabo/service/virtual/db/ServiceData.java | 188 - .../virtual/db/VirtualServiceDBHelper.java | 382 - .../virtual/profile/BaseFaBoProfile.java | 46 - .../virtual/profile/FlashingExecutor.java | 138 - .../virtual/profile/GPIOHumidityProfile.java | 52 - .../profile/GPIOIlluminanceProfile.java | 54 - .../virtual/profile/GPIOKeyEventProfile.java | 363 - .../virtual/profile/GPIOLightProfile.java | 249 - .../virtual/profile/GPIOProximityProfile.java | 184 - .../profile/GPIOTemperatureProfile.java | 75 - .../virtual/profile/GPIOVibrationProfile.java | 217 - .../I2C3AxisDeviceOrientationProfile.java | 238 - .../I2C9AxisDeviceOrientationProfile.java | 68 - .../I2CAtmosphericPressureProfile.java | 53 - .../virtual/profile/I2CBarLightProfile.java | 15 - .../virtual/profile/I2CHumidityProfile.java | 55 - .../profile/I2CIlluminanceProfile.java | 59 - .../profile/I2CLIDARLiteProximityProfile.java | 194 - .../profile/I2CMatrixLightProfile.java | 15 - .../I2CMouseCarDriveControllerProfile.java | 156 - .../virtual/profile/I2COneLightProfile.java | 15 - .../virtual/profile/I2CProximityProfile.java | 205 - .../virtual/profile/I2CRingLightProfile.java | 15 - .../I2CRobotCarDriveControllerProfile.java | 126 - .../profile/I2CTemperatureProfile.java | 75 - .../fabo/setting/FaBoPinListActivity.java | 107 - .../fabo/setting/FaBoProfileListActivity.java | 212 - .../fabo/setting/FaBoServiceListActivity.java | 591 - .../setting/FaBoVirtualServiceActivity.java | 429 - .../deviceplugin/fabo/setting/Util.java | 65 - .../setting/fragment/FaBoBasePinFragment.java | 100 - .../fragment/FaBoPinCheckBoxFragment.java | 118 - .../fragment/FaBoPinRadioGroupFragment.java | 80 - .../android/profile/GPIOProfile.java | 23 - .../profile/GPIOProfileConstants.java | 19 - .../src/main/res/anim/decelerate_quint.xml | 3 - .../res/anim/fragment_slide_left_enter.xml | 13 - .../res/anim/fragment_slide_left_exit.xml | 14 - .../res/anim/fragment_slide_right_enter.xml | 14 - .../res/anim/fragment_slide_right_exit.xml | 15 - .../main/res/drawable-hdpi/dconnect_icon.png | Bin 6896 -> 0 bytes .../main/res/drawable-mdpi/dconnect_icon.png | Bin 4413 -> 0 bytes .../main/res/drawable-xhdpi/dconnect_icon.png | Bin 8995 -> 0 bytes .../res/drawable-xxhdpi/dconnect_icon.png | Bin 14173 -> 0 bytes .../main/res/drawable-xxhdpi/fabo_arrow.png | Bin 1954 -> 0 bytes .../app/src/main/res/drawable/button_blue.xml | 41 - .../main/res/drawable/button_blue_circle.xml | 16 - .../main/res/drawable/button_blue_text.xml | 14 - .../app/src/main/res/drawable/button_red.xml | 41 - .../app/src/main/res/drawable/divider.xml | 6 - .../res/layout/activity_fabo_pin_list.xml | 43 - .../res/layout/activity_fabo_profile_list.xml | 23 - .../layout/activity_fabo_virtual_service.xml | 109 - .../res/layout/fragment_fabo_pin_group.xml | 14 - .../res/layout/fragment_fabo_pin_list.xml | 8 - .../layout/fragment_service_list_remover.xml | 41 - .../layout/fragment_service_list_viewer.xml | 23 - .../res/layout/item_fabo_check_box_pin.xml | 12 - .../src/main/res/layout/item_fabo_profile.xml | 13 - .../main/res/layout/item_fabo_profile_a.xml | 44 - .../res/layout/item_fabo_radio_button_pin.xml | 8 - .../res/layout/item_fabo_service_list.xml | 58 - .../menu/menu_fabo_service_list_viewer.xml | 9 - .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 3418 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 2206 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 4842 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 7718 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 10486 -> 0 bytes .../app/src/main/res/raw/standardfirmata_hex | 764 - .../app/src/main/res/values-w820dp/dimens.xml | 6 - .../app/src/main/res/values/anim.xml | 2 - .../app/src/main/res/values/colors.xml | 8 - .../app/src/main/res/values/dimens.xml | 11 - .../app/src/main/res/values/strings.xml | 68 - .../app/src/main/res/values/styles.xml | 29 - .../app/src/main/res/xml/device_filter.xml | 6 - ...eviceconnect_android_deviceplugin_fabo.xml | 18 - .../deviceplugin/fabo/ExampleUnitTest.java | 15 - .../dConnectDeviceFaBo/build.gradle | 25 - .../dConnectDeviceFaBo/gradle.properties | 24 - .../gradle/wrapper/gradle-wrapper.jar | Bin 53636 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - .../dConnectDeviceFaBo/gradlew | 160 - .../dConnectDeviceFaBo/gradlew.bat | 90 - .../dConnectDeviceFaBo/plugin/.gitignore | 1 - .../dConnectDeviceFaBo/plugin/build.gradle | 82 - .../plugin/proguard-rules.pro | 25 - .../fabo/ExampleInstrumentedTest.java | 26 - .../plugin/src/main/AndroidManifest.xml | 71 - .../fabo/FaBoArduinoDeviceProvider.java | 26 - .../fabo/FaBoArduinoDeviceService.java | 77 - .../deviceplugin/fabo/FaBoSettings.java | 47 - .../fabo/device/arduino/ADT7410.java | 271 - .../fabo/device/arduino/ADXL345.java | 282 - .../fabo/device/arduino/BaseI2C.java | 152 - .../device/arduino/FaBoUsbDeviceControl.java | 925 -- .../fabo/device/arduino/FirmataUtil.java | 125 - .../fabo/device/arduino/FirmataV32.java | 70 - .../fabo/device/arduino/HTS221.java | 526 - .../fabo/device/arduino/ISL29034.java | 285 - .../fabo/device/arduino/LIDARLiteV3.java | 258 - .../fabo/device/arduino/MPL115.java | 155 - .../fabo/device/arduino/MouseCar.java | 97 - .../fabo/device/arduino/RobotCar.java | 92 - .../fabo/device/arduino/RobotCarUtil.java | 34 - .../fabo/device/arduino/VCNL4010.java | 452 - .../fabo/setting/FaBoArduinoActivity.java | 203 - .../fabo/setting/FaBoSettingActivity.java | 43 - .../setting/fragment/FaBoArduinoFragment.java | 20 - .../setting/fragment/FaBoConnectFragment.java | 289 - .../fragment/FaBoFirmwareFragment.java | 323 - .../setting/fragment/FaBoSettingFragment.java | 46 - .../main/res/layout/activity_fabo_arduino.xml | 8 - .../main/res/layout/activity_fabo_setting.xml | 12 - .../main/res/layout/fragment_fabo_connect.xml | 73 - .../main/res/layout/fragment_fabo_firmata.xml | 94 - .../plugin/src/main/res/values/keys.xml | 4 - .../plugin/src/main/res/values/strings.xml | 47 - .../plugin/src/main/res/xml/settings_fabo.xml | 41 - .../deviceplugin/fabo/ExampleUnitTest.java | 17 - .../dConnectDeviceFaBo/settings.gradle | 1 - .../things-plugin/.gitignore | 1 - .../things-plugin/build.gradle | 80 - .../things-plugin/proguard-rules.pro | 25 - .../fabo/ExampleInstrumentedTest.java | 27 - .../src/main/AndroidManifest.xml | 42 - .../fabo/FaBoThingsDeviceProvider.java | 15 - .../fabo/FaBoThingsDeviceService.java | 22 - .../fabo/device/things/ADT7410.java | 240 - .../fabo/device/things/ADXL345.java | 263 - .../fabo/device/things/BaseI2C.java | 50 - .../things/FaBoThingsDeviceControl.java | 496 - .../fabo/device/things/HTS221.java | 248 - .../fabo/device/things/ISL29034.java | 316 - .../fabo/device/things/LIDARLiteV3.java | 233 - .../fabo/device/things/MPL115.java | 100 - .../fabo/device/things/MouseCar.java | 121 - .../fabo/device/things/RobotCar.java | 205 - .../fabo/device/things/VCNL4010.java | 466 - .../src/main/res/values/strings.xml | 3 - .../deviceplugin/fabo/ExampleUnitTest.java | 17 - .../dConnectDeviceHOGP/LICENSE.TXT | 21 - .../dConnectDeviceHOGP/README.md | 351 - .../dConnectDeviceHOGP/build.gradle | 16 - .../dConnectDeviceHOGP/gradle.properties | 6 - .../gradle/wrapper/gradle-wrapper.jar | Bin 53636 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - .../dConnectDeviceHOGP/gradlew | 160 - .../dConnectDeviceHOGP/gradlew.bat | 90 - .../dConnectDeviceHOGP/plugin/build.gradle | 69 - .../plugin/src/main/AndroidManifest.xml | 51 - .../plugin/src/main/assets/api/hogp.json | 1 - .../plugin/src/main/assets/api/joystick.json | 1 - .../plugin/src/main/assets/api/keyboard.json | 1 - .../plugin/src/main/assets/api/mouse.json | 1 - .../deviceplugin/hogp/HOGPMessageService.java | 310 - .../hogp/HOGPMessageServiceProvider.java | 25 - .../deviceplugin/hogp/HOGPService.java | 71 - .../deviceplugin/hogp/HOGPSetting.java | 153 - .../hogp/activity/HOGPBaseActivity.java | 143 - .../hogp/activity/HOGPControlActivity.java | 432 - .../hogp/activity/HOGPHelpActivity.java | 43 - .../hogp/activity/HOGPSettingActivity.java | 502 - .../hogp/fragment/HOGPHelp01Fragment.java | 30 - .../hogp/fragment/HOGPHelp02Fragment.java | 30 - .../hogp/fragment/HOGPHelp03Fragment.java | 30 - .../hogp/fragment/HOGPHelp04Fragment.java | 30 - .../hogp/profiles/HOGPHogpProfile.java | 94 - .../hogp/profiles/HOGPJoystickProfile.java | 58 - .../hogp/profiles/HOGPKeyboardProfile.java | 377 - .../hogp/profiles/HOGPMouseProfile.java | 254 - .../hogp/profiles/HOGPServiceInformation.java | 91 - .../hogp/profiles/HOGPSystemProfile.java | 26 - .../hogp/server/AbstractHOGPServer.java | 996 -- .../deviceplugin/hogp/server/HOGPServer.java | 688 - .../deviceplugin/hogp/util/BatteryUtils.java | 39 - .../deviceplugin/hogp/util/BleUtils.java | 116 - .../deviceplugin/hogp/util/BleUuidUtils.java | 182 - .../deviceplugin/hogp/util/HIDUtils.java | 99 - .../deviceplugin/hogp/util/KeyboardCode.java | 321 - .../main/res/drawable-hdpi/ic_launcher.png | Bin 2905 -> 0 bytes .../main/res/drawable-mdpi/ic_launcher.png | Bin 2154 -> 0 bytes .../main/res/drawable-xhdpi/hogp_help01.png | Bin 30211 -> 0 bytes .../main/res/drawable-xhdpi/hogp_help02_1.png | Bin 65132 -> 0 bytes .../main/res/drawable-xhdpi/hogp_help02_2.png | Bin 165749 -> 0 bytes .../main/res/drawable-xhdpi/hogp_help03.png | Bin 88625 -> 0 bytes .../main/res/drawable-xhdpi/ic_launcher.png | Bin 4379 -> 0 bytes .../main/res/drawable-xxhdpi/ic_launcher.png | Bin 6085 -> 0 bytes .../main/res/drawable/hogp_button_blue.xml | 40 - .../res/drawable/hogp_keyboard_button.xml | 22 - .../res/drawable/hogp_keyboard_select.xml | 15 - .../src/main/res/layout/activity_control.xml | 70 - .../src/main/res/layout/activity_help.xml | 10 - .../src/main/res/layout/activity_setting.xml | 240 - .../src/main/res/layout/contents_keyboard.xml | 274 - .../res/layout/contents_keyboard_footer.xml | 51 - .../res/layout/contents_keyboard_menu.xml | 146 - .../res/layout/contents_keyboard_special.xml | 214 - .../src/main/res/layout/fragment_help_01.xml | 27 - .../src/main/res/layout/fragment_help_02.xml | 51 - .../src/main/res/layout/fragment_help_03.xml | 27 - .../src/main/res/layout/fragment_help_04.xml | 19 - .../main/res/layout/item_setting_device.xml | 21 - .../main/res/menu/activity_setting_menu.xml | 8 - .../plugin/src/main/res/values/dimens.xml | 4 - .../plugin/src/main/res/values/strings.xml | 150 - .../plugin/src/main/res/xml/deviceplugin.xml | 13 - .../dConnectDeviceHOGP/settings.gradle | 1 - .../dConnectDeviceHeartRate/README.md | 18 - .../dConnectDeviceHeartRate/app/build.gradle | 84 - .../app/proguard-rules.pro | 17 - .../heartrate/ApplicationTest.java | 14 - .../heartrate/ble/BleDeviceDetectorTest.java | 307 - .../app/src/main/AndroidManifest.xml | 68 - .../heartrate/HeartRateConnector.java | 550 - .../heartrate/HeartRateDeviceService.java | 286 - .../HeartRateDeviceServiceProvider.java | 25 - .../heartrate/HeartRateManager.java | 529 - .../HeartRateDeviceSettingsActivity.java | 41 - .../HeartRateServiceListActivity.java | 33 - .../heartrate/activity/package-info.java | 12 - .../heartrate/ble/BleDeviceAdapter.java | 44 - .../ble/BleDeviceAdapterFactory.java | 22 - .../heartrate/ble/BleDeviceDetector.java | 348 - .../deviceplugin/heartrate/ble/BleUtils.java | 171 - .../ble/activity/BleEnableActivity.java | 60 - .../ble/adapter/NewBleDeviceAdapterImpl.java | 127 - .../ble/adapter/OldBleDeviceAdapterImpl.java | 68 - .../heartrate/ble/adapter/package-info.java | 12 - .../heartrate/ble/package-info.java | 12 - .../heartrate/data/HeartRateDBHelper.java | 165 - .../heartrate/data/HeartRateData.java | 60 - .../heartrate/data/HeartRateDevice.java | 101 - .../heartrate/data/health/HeartData.java | 242 - .../heartrate/data/health/HeartRateData.java | 114 - .../data/health/TargetDeviceData.java | 270 - .../heartrate/data/package-info.java | 12 - .../fragment/BluetoothSettingsFragment.java | 98 - .../HeartRateDeviceSettingsFragment.java | 606 - .../MioAlphaInstructionsFragment.java | 30 - .../heartrate/fragment/SummaryFragment.java | 72 - .../fragment/dialog/ErrorDialogFragment.java | 82 - .../dialog/ProgressDialogFragment.java | 59 - .../fragment/dialog/package-info.java | 12 - .../heartrate/fragment/package-info.java | 12 - .../deviceplugin/heartrate/package-info.java | 12 - .../profile/HeartRateHealthProfile.java | 443 - .../HeartRateServiceDiscoveryProfile.java | 105 - .../profile/HeartRateSystemProfile.java | 25 - .../heartrate/profile/package-info.java | 12 - .../heartrate/service/HeartRateService.java | 26 - .../util/MDERFloatConvreterUtils.java | 73 - .../heartrate/util/RawDataParseUtils.java | 111 - .../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/HealthProfile.java | 265 - .../profile/HealthProfileConstants.java | 146 - .../main/res/drawable-hdpi/dconnect_icon.png | Bin 6896 -> 0 bytes .../res/drawable-hdpi/mioalpha_explain.png | Bin 25796 -> 0 bytes .../main/res/drawable-mdpi/dconnect_icon.png | Bin 4413 -> 0 bytes .../main/res/drawable-xhdpi/dconnect_icon.png | Bin 8995 -> 0 bytes .../res/drawable-xxhdpi/dconnect_icon.png | Bin 14173 -> 0 bytes .../app/src/main/res/drawable/button_blue.xml | 40 - .../app/src/main/res/drawable/button_red.xml | 40 - .../activity_heart_rate_device_settings.xml | 7 - .../src/main/res/layout/dialog_progress.xml | 45 - .../layout/fragment_bluetooth_settings.xml | 89 - .../fragment_heart_rate_device_settings.xml | 31 - .../fragment_mio_alpha_instructions.xml | 50 - .../src/main/res/layout/fragment_summary.xml | 42 - .../res/layout/item_heart_rate_device.xml | 45 - .../main/res/layout/item_heart_rate_error.xml | 18 - .../res/layout/item_heart_rate_searching.xml | 21 - .../menu/menu_heart_rate_device_settings.xml | 5 - .../app/src/main/res/values-w820dp/dimens.xml | 6 - .../app/src/main/res/values/colors.xml | 7 - .../app/src/main/res/values/dimens.xml | 12 - .../app/src/main/res/values/strings.xml | 37 - .../app/src/main/res/values/styles.xml | 21 - ...connect_android_deviceplugin_heartrate.xml | 9 - .../dConnectDeviceHeartRate/build.gradle | 21 - .../dConnectDeviceHeartRate/gradle.properties | 25 - .../gradle/wrapper/gradle-wrapper.jar | Bin 53636 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - .../dConnectDeviceHeartRate/gradlew | 160 - .../dConnectDeviceHeartRate/gradlew.bat | 90 - .../dConnectDeviceHeartRate/settings.gradle | 1 - .../dConnectDeviceHue/LICENSE.TXT | 21 - .../dConnectDeviceHue/README.md | 14 - .../dConnectDeviceHue/app/build.gradle | 89 - .../dConnectDeviceHue/app/libs/LICENSE.txt | 19 - .../app/libs/huelocalsdk.jar | Bin 186776 -> 0 bytes .../app/libs/huesdkresources.jar | Bin 275284 -> 0 bytes .../app/src/main/AndroidManifest.xml | 49 - .../app/src/main/assets/api/device.json | 125 - .../deviceplugin/hue/HueConstants.java | 28 - .../hue/HueDeviceApplication.java | 39 - .../deviceplugin/hue/HueDeviceProvider.java | 34 - .../deviceplugin/hue/HueDeviceService.java | 362 - .../hue/activity/HueMainActivity.java | 61 - .../hue/activity/HueServiceListActivity.java | 61 - .../hue/activity/fragment/HueFragment01.java | 298 - .../hue/activity/fragment/HueFragment02.java | 365 - .../hue/activity/fragment/HueFragment03.java | 74 - .../hue/activity/fragment/HueFragment04.java | 436 - .../hue/activity/fragment/package-info.java | 10 - .../hue/activity/package-info.java | 10 - .../deviceplugin/hue/db/HueDBHelper.java | 223 - .../deviceplugin/hue/db/HueLightDBHelper.java | 260 - .../deviceplugin/hue/db/HueManager.java | 740 - .../deviceplugin/hue/package-info.java | 10 - .../hue/profile/FlashingExecutor.java | 130 - .../hue/profile/HueDeviceProfile.java | 275 - .../hue/profile/HueLightProfile.java | 564 - .../hue/profile/HueSystemProfile.java | 29 - .../hue/profile/package-info.java | 10 - .../hue/service/HueLightService.java | 34 - .../deviceplugin/hue/service/HueService.java | 32 - .../src/main/res/anim/decelerate_quint.xml | 3 - .../res/anim/fragment_slide_left_enter.xml | 13 - .../res/anim/fragment_slide_left_exit.xml | 14 - .../res/anim/fragment_slide_right_enter.xml | 14 - .../res/anim/fragment_slide_right_exit.xml | 15 - .../drawable-hdpi/ic_ab_back_holo_dark.png | Bin 548 -> 0 bytes .../main/res/drawable-hdpi/ic_launcher.png | Bin 26324 -> 0 bytes .../main/res/drawable-mdpi/ic_launcher.png | Bin 26324 -> 0 bytes .../main/res/drawable-mdpi/image_clear.png | Bin 2539 -> 0 bytes .../main/res/drawable-nodpi/card_item_bg.xml | 13 - .../src/main/res/drawable-nodpi/hue_arraw.png | Bin 4624 -> 0 bytes .../res/drawable-nodpi/hue_small_icon.png | Bin 4775 -> 0 bytes .../res/drawable-nodpi/pageindicator_off.png | Bin 1375 -> 0 bytes .../res/drawable-nodpi/pageindicator_on.png | Bin 1359 -> 0 bytes .../main/res/drawable-xhdpi/ic_launcher.png | Bin 26324 -> 0 bytes .../main/res/drawable-xxhdpi/button_blue.xml | 37 - .../main/res/drawable-xxhdpi/ic_launcher.png | Bin 26324 -> 0 bytes .../src/main/res/drawable-xxhdpi/img01.png | Bin 13705 -> 0 bytes .../src/main/res/drawable-xxhdpi/img02.png | Bin 20156 -> 0 bytes .../src/main/res/drawable-xxhdpi/img03.png | Bin 29699 -> 0 bytes .../src/main/res/drawable-xxhdpi/img04.png | Bin 35439 -> 0 bytes .../src/main/res/drawable-xxhdpi/img05.png | Bin 25241 -> 0 bytes .../res/drawable-xxhdpi/item_listview.xml | 9 - .../app/src/main/res/layout/activity_main.xml | 11 - .../src/main/res/layout/dialog_progress.xml | 45 - .../src/main/res/layout/hue_access_point.xml | 23 - .../src/main/res/layout/hue_fragment_01.xml | 76 - .../res/layout/hue_fragment_01_header.xml | 25 - .../src/main/res/layout/hue_fragment_02.xml | 120 - .../src/main/res/layout/hue_fragment_03.xml | 58 - .../src/main/res/layout/hue_fragment_04.xml | 60 - .../app/src/main/res/layout/hue_list.xml | 28 - .../src/main/res/layout/selectbridge_item.xml | 20 - .../app/src/main/res/values-ja/keys.xml | 4 - .../app/src/main/res/values-ja/strings.xml | 42 - .../app/src/main/res/values-v14/styles.xml | 20 - .../app/src/main/res/values/colors.xml | 5 - .../app/src/main/res/values/dimens.xml | 7 - .../app/src/main/res/values/keys.xml | 4 - .../app/src/main/res/values/strings.xml | 42 - .../app/src/main/res/values/styles.xml | 30 - .../main/res/xml/network_security_config.xml | 4 - ...deviceconnect_android_deviceplugin_hue.xml | 9 - .../app/src/things/AndroidManifest.xml | 26 - .../hue/HueThingsDeviceService.java | 22 - .../dConnectDeviceHue/build.gradle | 19 - .../dConnectDeviceHue/gradle.properties | 6 - .../gradle/wrapper/gradle-wrapper.jar | Bin 53636 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - .../dConnectDeviceHue/gradlew | 160 - .../dConnectDeviceHue/gradlew.bat | 90 - .../dConnectDeviceHue/lint.xml | 4 - .../dConnectDeviceHue/proguard-project.txt | 20 - .../dConnectDeviceHue/settings.gradle | 1 - .../dConnectDeviceIRKit/LICENSE.TXT | 21 - .../dConnectDeviceIRKit/README.md | 19 - .../dConnectDeviceIRKit/app/build.gradle | 78 - .../app/src/main/AndroidManifest.xml | 74 - .../src/main/assets/api/remoteController.json | 58 - .../app/src/main/assets/api/tv.json | 255 - .../app/src/main/java/javax/jmdns/JmDNS.java | 422 - .../app/src/main/java/javax/jmdns/JmmDNS.java | 396 - .../javax/jmdns/NetworkTopologyDiscovery.java | 164 - .../javax/jmdns/NetworkTopologyEvent.java | 45 - .../javax/jmdns/NetworkTopologyListener.java | 30 - .../main/java/javax/jmdns/ServiceEvent.java | 74 - .../main/java/javax/jmdns/ServiceInfo.java | 727 - .../java/javax/jmdns/ServiceListener.java | 49 - .../java/javax/jmdns/ServiceTypeListener.java | 35 - .../main/java/javax/jmdns/impl/DNSCache.java | 543 - .../main/java/javax/jmdns/impl/DNSEntry.java | 296 - .../java/javax/jmdns/impl/DNSIncoming.java | 578 - .../java/javax/jmdns/impl/DNSListener.java | 28 - .../java/javax/jmdns/impl/DNSMessage.java | 307 - .../java/javax/jmdns/impl/DNSOutgoing.java | 451 - .../java/javax/jmdns/impl/DNSQuestion.java | 328 - .../main/java/javax/jmdns/impl/DNSRecord.java | 1025 -- .../javax/jmdns/impl/DNSStatefulObject.java | 559 - .../java/javax/jmdns/impl/DNSTaskStarter.java | 464 - .../main/java/javax/jmdns/impl/HostInfo.java | 443 - .../main/java/javax/jmdns/impl/JmDNSImpl.java | 2222 --- .../java/javax/jmdns/impl/JmmDNSImpl.java | 585 - .../java/javax/jmdns/impl/ListenerStatus.java | 286 - .../java/javax/jmdns/impl/NameRegister.java | 168 - .../impl/NetworkTopologyDiscoveryImpl.java | 132 - .../jmdns/impl/NetworkTopologyEventImpl.java | 82 - .../javax/jmdns/impl/ServiceEventImpl.java | 124 - .../javax/jmdns/impl/ServiceInfoImpl.java | 1323 -- .../java/javax/jmdns/impl/SocketListener.java | 81 - .../jmdns/impl/constants/DNSConstants.java | 60 - .../javax/jmdns/impl/constants/DNSLabel.java | 87 - .../impl/constants/DNSOperationCode.java | 86 - .../jmdns/impl/constants/DNSOptionCode.java | 78 - .../jmdns/impl/constants/DNSRecordClass.java | 138 - .../jmdns/impl/constants/DNSRecordType.java | 312 - .../jmdns/impl/constants/DNSResultCode.java | 149 - .../javax/jmdns/impl/constants/DNSState.java | 215 - .../jmdns/impl/constants/package-info.java | 2 - .../java/javax/jmdns/impl/package-info.java | 2 - .../java/javax/jmdns/impl/tasks/DNSTask.java | 223 - .../javax/jmdns/impl/tasks/RecordReaper.java | 61 - .../javax/jmdns/impl/tasks/Responder.java | 157 - .../javax/jmdns/impl/tasks/package-info.java | 2 - .../impl/tasks/resolver/DNSResolverTask.java | 116 - .../tasks/resolver/ServiceInfoResolver.java | 102 - .../impl/tasks/resolver/ServiceResolver.java | 77 - .../impl/tasks/resolver/TypeResolver.java | 75 - .../impl/tasks/resolver/package-info.java | 2 - .../jmdns/impl/tasks/state/Announcer.java | 146 - .../jmdns/impl/tasks/state/Canceler.java | 143 - .../jmdns/impl/tasks/state/DNSStateTask.java | 188 - .../javax/jmdns/impl/tasks/state/Prober.java | 161 - .../javax/jmdns/impl/tasks/state/Renewer.java | 141 - .../jmdns/impl/tasks/state/package-info.java | 2 - .../main/java/javax/jmdns/package-info.java | 9 - .../deviceplugin/irkit/IRKitApplication.java | 111 - .../deviceplugin/irkit/IRKitDevice.java | 81 - .../irkit/IRKitDeviceProvider.java | 28 - .../irkit/IRKitDeviceService.java | 304 - .../deviceplugin/irkit/IRKitManager.java | 1378 -- .../irkit/data/IRKitDBHelper.java | 411 - .../irkit/data/VirtualDeviceData.java | 67 - .../irkit/data/VirtualProfileData.java | 147 - .../deviceplugin/irkit/data/package-info.java | 12 - .../deviceplugin/irkit/network/WiFiUtil.java | 117 - .../irkit/network/package-info.java | 11 - .../deviceplugin/irkit/package-info.java | 11 - .../irkit/profile/IRKitLightProfile.java | 118 - .../irkit/profile/IRKitPowerProfile.java | 54 - .../profile/IRKitRemoteControllerProfile.java | 152 - .../irkit/profile/IRKitSystemProfile.java | 56 - .../irkit/profile/IRKitTVProfile.java | 231 - .../irkit/profile/package-info.java | 11 - .../irkit/service/IRKitService.java | 24 - .../irkit/service/VirtualService.java | 145 - .../IRKitAbstractSettingActivity.java | 78 - .../activity/IRKitServiceListActivity.java | 174 - .../activity/IRKitSettingActivity.java | 333 - .../IRKitVirtualDeviceListActivity.java | 200 - .../irkit/settings/activity/package-info.java | 11 - .../IRKitAccessPointSettingFragment.java | 165 - .../settings/fragment/IRKitBaseFragment.java | 136 - .../IRKitCategorySelectDialogFragment.java | 108 - ...RKitCreateVirtualDeviceDialogFragment.java | 208 - .../fragment/IRKitEndingFragment.java | 199 - .../fragment/IRKitPowerOnFragment.java | 28 - .../fragment/IRKitProgressDialogFragment.java | 57 - .../fragment/IRKitRegisterIRFragment.java | 247 - .../fragment/IRKitVirtualDeviceFragment.java | 447 - .../IRKitVirtualProfileListFragment.java | 279 - .../fragment/IRKitWiFiSelectionFragment.java | 295 - .../irkit/settings/fragment/package-info.java | 11 - .../settings/widget/HoldableViewPager.java | 76 - .../irkit/settings/widget/package-info.java | 11 - .../main/res/drawable-hdpi/button_pink.xml | 29 - .../main/res/drawable-hdpi/dconnect_icon.png | Bin 26324 -> 0 bytes .../main/res/drawable-hdpi/ic_launcher.png | Bin 7658 -> 0 bytes .../src/main/res/drawable-hdpi/irkit_icon.png | Bin 4461 -> 0 bytes .../app/src/main/res/drawable-hdpi/light.png | Bin 2968 -> 0 bytes .../app/src/main/res/drawable-hdpi/tv.png | Bin 2264 -> 0 bytes .../main/res/drawable-mdpi/button_dark.xml | 29 - .../main/res/drawable-mdpi/ic_launcher.png | Bin 3777 -> 0 bytes .../main/res/drawable-xhdpi/button_blue.xml | 37 - .../main/res/drawable-xhdpi/ic_launcher.png | Bin 12516 -> 0 bytes .../app/src/main/res/drawable-xhdpi/img01.png | Bin 19402 -> 0 bytes .../app/src/main/res/drawable-xhdpi/img02.png | Bin 22997 -> 0 bytes .../app/src/main/res/drawable-xhdpi/img03.png | Bin 26778 -> 0 bytes .../app/src/main/res/drawable-xhdpi/img04.png | Bin 29961 -> 0 bytes .../app/src/main/res/drawable-xhdpi/img05.png | Bin 28660 -> 0 bytes .../app/src/main/res/drawable-xhdpi/img06.png | Bin 33806 -> 0 bytes .../app/src/main/res/drawable-xhdpi/img07.png | Bin 36485 -> 0 bytes .../app/src/main/res/drawable-xhdpi/irkit.png | Bin 169646 -> 0 bytes .../main/res/drawable-xhdpi/select_irkit.png | Bin 72726 -> 0 bytes .../res/drawable-xxhdpi/button_orange.xml | 37 - .../main/res/drawable-xxhdpi/ic_launcher.png | Bin 24777 -> 0 bytes .../src/main/res/layout/dialog_progress.xml | 45 - .../main/res/layout/dialog_virtual_device.xml | 67 - .../res/layout/dialog_virtual_profile.xml | 38 - .../main/res/layout/fragment_profilelist.xml | 29 - .../main/res/layout/fragment_register_ir.xml | 43 - .../layout/fragment_virtual_device_list.xml | 108 - .../layout/irkit_activity_setting_page.xml | 7 - .../main/res/layout/irkit_settings_step_1.xml | 56 - .../main/res/layout/irkit_settings_step_2.xml | 124 - .../main/res/layout/irkit_settings_step_3.xml | 57 - .../main/res/layout/irkit_settings_step_4.xml | 57 - .../res/layout/item_irkit_profile_list.xml | 34 - .../main/res/layout/item_irkitdevice_list.xml | 50 - .../app/src/main/res/values-v11/styles.xml | 12 - .../app/src/main/res/values-v14/styles.xml | 14 - .../app/src/main/res/values/dimens.xml | 10 - .../app/src/main/res/values/strings.xml | 106 - .../app/src/main/res/values/styles.xml | 21 - .../main/res/xml/network_security_config.xml | 4 - ...viceconnect_android_deviceplugin_irkit.xml | 12 - .../dConnectDeviceIRKit/build.gradle | 17 - .../dConnectDeviceIRKit/gradle.properties | 6 - .../gradle/wrapper/gradle-wrapper.jar | Bin 53636 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - .../dConnectDeviceIRKit/gradlew | 160 - .../dConnectDeviceIRKit/gradlew.bat | 90 - .../dConnectDeviceIRKit/lint.xml | 4 - .../dConnectDeviceIRKit/proguard-project.txt | 20 - .../dConnectDeviceIRKit/settings.gradle | 1 - .../dConnectDeviceMidi/NOTICE | 2 - .../dConnectDeviceMidi/README.md | 33 - .../dConnectDeviceMidi/build.gradle | 20 - .../dConnectDeviceMidi/demo/.browserslistrc | 3 - .../dConnectDeviceMidi/demo/.eslintrc.js | 17 - .../dConnectDeviceMidi/demo/.gitignore | 22 - .../dConnectDeviceMidi/demo/README.md | 24 - .../dConnectDeviceMidi/demo/babel.config.js | 5 - .../dConnectDeviceMidi/demo/build.bat | 10 - .../dConnectDeviceMidi/demo/build.sh | 27 - .../dConnectDeviceMidi/demo/package-lock.json | 11580 --------------- .../dConnectDeviceMidi/demo/package.json | 29 - .../demo/public/favicon.ico | Bin 4286 -> 0 bytes .../dConnectDeviceMidi/demo/public/index.html | 19 - .../dConnectDeviceMidi/demo/src/App.vue | 152 - .../demo/src/assets/logo.png | Bin 6849 -> 0 bytes .../demo/src/assets/logo.svg | 1 - .../demo/src/components/PadPanel.vue | 63 - .../demo/src/components/SliderPanel.vue | 37 - .../demo/src/components/ValueField.vue | 49 - .../dConnectDeviceMidi/demo/src/libs/core.js | 420 - .../dConnectDeviceMidi/demo/src/main.js | 16 - .../demo/src/plugins/vuetify.js | 7 - .../demo/src/router/index.js | 37 - .../demo/src/views/ControllerPage.vue | 235 - .../demo/src/views/ProfileSelectPage.vue | 84 - .../demo/src/views/ServiceListPage.vue | 61 - .../demo/src/views/SettingsPage.vue | 201 - .../dConnectDeviceMidi/demo/vue.config.js | 6 - .../dConnectDeviceMidi/gradle.properties | 6 - .../gradle/wrapper/gradle-wrapper.jar | Bin 54329 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - .../dConnectDeviceMidi/gradlew | 172 - .../dConnectDeviceMidi/gradlew.bat | 84 - .../dConnectDeviceMidi/plugin/build.gradle | 116 - .../plugin/src/main/AndroidManifest.xml | 91 - .../api/keyevent.json | 604 - .../api/midi.json | 442 - .../api/soundController.json | 231 - .../api/soundModule.json | 136 - .../api/volumeController.json | 227 - .../deviceplugin/midi/CustomTableRow.java | 68 - .../midi/DConnectMidiBleSettingsActivity.java | 41 - .../midi/DConnectMidiDeviceService.java | 594 - .../DConnectMidiServiceDetailActivity.java | 79 - .../midi/DConnectMidiServiceListActivity.java | 84 - .../DConnectMidiSettingsListActivity.java | 26 - .../deviceplugin/midi/MidiDemoInstaller.java | 23 - .../midi/MidiDemoSettingActivity.java | 26 - .../deviceplugin/midi/MidiDeviceManager.java | 258 - .../deviceplugin/midi/MidiInputBuffer.java | 54 - .../deviceplugin/midi/MidiMessageSender.java | 20 - .../deviceplugin/midi/MidiMessageService.java | 218 - .../midi/MidiMessageServiceProvider.java | 26 - .../midi/MidiPluginApplication.java | 44 - .../deviceplugin/midi/NoteNameTable.java | 66 - .../deviceplugin/midi/ServiceInfo.java | 134 - .../midi/ble/BleDeviceAdapter.java | 45 - .../midi/ble/BleDeviceAdapterFactory.java | 22 - .../midi/ble/BleDeviceDetector.java | 348 - .../deviceplugin/midi/ble/BleUtils.java | 174 - .../midi/ble/activity/BleEnableActivity.java | 71 - .../ble/adapter/NewBleDeviceAdapterImpl.java | 127 - .../ble/adapter/OldBleDeviceAdapterImpl.java | 68 - .../midi/ble/adapter/package-info.java | 12 - .../deviceplugin/midi/ble/package-info.java | 12 - .../midi/core/ChannelVoiceMessage.java | 52 - .../midi/core/ControlChangeMessage.java | 99 - .../deviceplugin/midi/core/MidiMessage.java | 25 - .../midi/core/MidiMessageParser.java | 46 - .../deviceplugin/midi/core/NoteMessage.java | 20 - .../midi/core/NoteOffMessage.java | 89 - .../deviceplugin/midi/core/NoteOnMessage.java | 89 - .../midi/core/file/MidiFilePlayer.java | 177 - .../fragment/BluetoothSettingsFragment.java | 98 - .../fragment/MidiDemoSettingFragment.java | 127 - .../fragment/MidiDeviceSettingsFragment.java | 620 - .../SettingsListPreferenceFragment.java | 56 - .../midi/fragment/SummaryFragment.java | 71 - .../fragment/dialog/ErrorDialogFragment.java | 82 - .../dialog/ProgressDialogFragment.java | 58 - .../midi/fragment/dialog/package-info.java | 12 - .../midi/fragment/package-info.java | 12 - .../midi/profiles/BaseMidiOutputProfile.java | 145 - .../midi/profiles/BaseMidiProfile.java | 18 - .../midi/profiles/MidiKeyEventProfile.java | 279 - .../profiles/MidiSoundControllerProfile.java | 146 - .../midi/profiles/MidiSoundModuleProfile.java | 121 - .../midi/profiles/MidiSystemProfile.java | 26 - .../profiles/MidiVolumeControllerProfile.java | 132 - .../main/res/drawable-hdpi/ic_launcher.png | Bin 2905 -> 0 bytes .../main/res/drawable-mdpi/ic_launcher.png | Bin 2154 -> 0 bytes .../main/res/drawable-xhdpi/button_red.xml | 40 - .../main/res/drawable-xhdpi/ic_launcher.png | Bin 4379 -> 0 bytes .../main/res/drawable-xxhdpi/ic_launcher.png | Bin 6085 -> 0 bytes .../res/layout/activity_demo_page_setting.xml | 6 - .../res/layout/activity_settings_list.xml | 7 - .../src/main/res/layout/dialog_progress.xml | 45 - .../layout/fragment_bluetooth_settings.xml | 89 - .../fragment_midi_ble_device_settings.xml | 29 - .../src/main/res/layout/fragment_summary.xml | 42 - .../main/res/layout/item_midi_ble_device.xml | 45 - .../main/res/layout/item_midi_ble_error.xml | 18 - .../res/layout/item_midi_ble_searching.xml | 21 - .../res/layout/service_detail_activity.xml | 33 - .../res/layout/service_detail_table_row.xml | 17 - .../src/main/res/values-w820dp/dimens.xml | 6 - .../plugin/src/main/res/values/attrs.xml | 6 - .../plugin/src/main/res/values/colors.xml | 7 - .../plugin/src/main/res/values/dimens.xml | 12 - .../plugin/src/main/res/values/strings.xml | 57 - .../plugin/src/main/res/xml/filelocation.xml | 4 - ...eviceconnect_android_deviceplugin_midi.xml | 14 - .../src/main/res/xml/settings_midi_plugin.xml | 21 - .../deviceplugin/midi/NoteNameTableTest.java | 54 - .../dConnectDeviceMidi/settings.gradle | 1 - .../dConnectDeviceSwitchBot/README.md | 11 - .../dConnectDeviceSwitchBot/build.gradle | 16 - .../dConnectDeviceSwitchBot/demo/README.md | 29 - .../demo/babel.config.js | 5 - .../dConnectDeviceSwitchBot/demo/build.bat | 10 - .../dConnectDeviceSwitchBot/demo/build.sh | 27 - .../demo/package-lock.json | 11829 ---------------- .../dConnectDeviceSwitchBot/demo/package.json | 42 - .../demo/public/dconnectsdk-2.2.0.js | 2865 ---- .../demo/public/favicon.ico | Bin 4286 -> 0 bytes .../demo/public/index.html | 18 - .../dConnectDeviceSwitchBot/demo/src/App.vue | 27 - .../demo/src/assets/logo.png | Bin 6849 -> 0 bytes .../demo/src/components/SwitchBotDemo.vue | 195 - .../dConnectDeviceSwitchBot/demo/src/main.js | 12 - .../demo/vue.config.js | 3 - .../dConnectDeviceSwitchBot/gradle.properties | 6 - .../gradle/wrapper/gradle-wrapper.jar | Bin 54329 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - .../dConnectDeviceSwitchBot/gradlew | 172 - .../dConnectDeviceSwitchBot/gradlew.bat | 84 - .../plugin/build.gradle | 115 - .../plugin/src/main/AndroidManifest.xml | 86 - .../api/button.json | 158 - .../api/switch.json | 119 - .../switchbot/SwitchBotMessageService.java | 349 - .../SwitchBotMessageServiceProvider.java | 20 - .../demo/SwitchBotDemoInstaller.java | 12 - .../switchbot/device/SwitchBotDevice.java | 518 - .../device/SwitchBotDeviceProvider.java | 210 - .../profiles/SwitchBotButtonProfile.java | 223 - .../profiles/SwitchBotSwitchProfile.java | 161 - .../profiles/SwitchBotSystemProfile.java | 22 - .../settings/BaseSettingActivity.java | 39 - .../settings/DemoPageSettingActivity.java | 15 - .../settings/DemoPageSettingFragment.java | 136 - .../switchbot/settings/ModifyActivity.java | 129 - .../settings/ModifyAndDeleteActivity.java | 141 - .../switchbot/settings/RegisterActivity.java | 171 - .../switchbot/settings/ScanActivity.java | 157 - .../switchbot/settings/SettingActivity.java | 88 - .../switchbot/settings/Settings.java | 39 - .../switchbot/utility/BLEScanner.java | 85 - .../switchbot/utility/ListAdapter.java | 118 - .../switchbot/utility/ListViewHolder.java | 99 - .../main/res/drawable-hdpi/ic_launcher.png | Bin 2905 -> 0 bytes .../main/res/drawable-mdpi/ic_launcher.png | Bin 2154 -> 0 bytes .../main/res/drawable-xhdpi/ic_launcher.png | Bin 4379 -> 0 bytes .../main/res/drawable-xxhdpi/ic_launcher.png | Bin 6085 -> 0 bytes .../res/layout/activity_demo_page_setting.xml | 18 - .../src/main/res/layout/activity_modify.xml | 93 - .../res/layout/activity_modify_and_delete.xml | 27 - .../src/main/res/layout/activity_register.xml | 109 - .../src/main/res/layout/activity_scan.xml | 17 - .../src/main/res/layout/activity_setting.xml | 108 - .../res/layout/list_modify_and_delete_row.xml | 20 - .../src/main/res/layout/list_scan_row.xml | 12 - .../plugin/src/main/res/values/arrays.xml | 6 - .../plugin/src/main/res/values/strings.xml | 46 - .../plugin/src/main/res/values/style.xml | 45 - .../plugin/src/main/res/xml/filelocation.xml | 4 - ...connect_android_deviceplugin_switchbot.xml | 11 - .../dConnectDeviceSwitchBot/settings.gradle | 1 - .../dConnectDeviceTag/README.md | 482 - .../dConnectDeviceTag/build.gradle | 16 - .../dConnectDeviceTag/gradle.properties | 6 - .../gradle/wrapper/gradle-wrapper.jar | Bin 54329 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - .../dConnectDeviceTag/gradlew | 172 - .../dConnectDeviceTag/gradlew.bat | 84 - .../dConnectDeviceTag/plugin/build.gradle | 77 - .../plugin/src/main/AndroidManifest.xml | 151 - .../api/tag.json | 320 - .../deviceplugin/tag/TagMessageService.java | 139 - .../tag/TagMessageServiceProvider.java | 29 - .../android/deviceplugin/tag/TagSetting.java | 97 - .../deviceplugin/tag/TagSettingActivity.java | 108 - .../tag/activity/BindServiceActivity.java | 193 - .../tag/activity/NFCBaseActivity.java | 161 - .../tag/activity/NFCReaderActivity.java | 67 - .../tag/activity/NFCWriterActivity.java | 180 - .../tag/activity/QRReaderActivity.java | 299 - .../tag/camera2/AutoFitTextureView.java | 75 - .../tag/camera2/Camera2Helper.java | 204 - .../tag/camera2/Camera2StateMachine.java | 1188 -- .../tag/camera2/CameraPermissionActivity.java | 76 - .../tag/profiles/TagSystemProfile.java | 26 - .../tag/services/TagConstants.java | 99 - .../deviceplugin/tag/services/TagInfo.java | 63 - .../deviceplugin/tag/services/TagService.java | 61 - .../tag/services/TagServiceInterface.java | 75 - .../tag/services/nfc/NFCReader.java | 201 - .../tag/services/nfc/NFCService.java | 201 - .../tag/services/nfc/NFCWriter.java | 134 - .../nfc/exception/NFCWriteException.java | 79 - .../services/nfc/profiles/NFCTagProfile.java | 288 - .../tag/services/qr/QRReader.java | 80 - .../tag/services/qr/QRService.java | 142 - .../tag/services/qr/QRWriter.java | 102 - .../services/qr/profiles/QRTagProfile.java | 329 - .../qr/profiles/ResourceDownloader.java | 200 - .../deviceplugin/tag/ui/SwitchPreference.java | 88 - .../main/res/drawable-hdpi/ic_launcher.png | Bin 2905 -> 0 bytes .../main/res/drawable-mdpi/ic_launcher.png | Bin 2154 -> 0 bytes .../main/res/drawable-xhdpi/ic_launcher.png | Bin 4379 -> 0 bytes .../main/res/drawable-xxhdpi/ic_launcher.png | Bin 6085 -> 0 bytes .../main/res/layout/activity_nfc_reader.xml | 15 - .../main/res/layout/activity_nfc_writer.xml | 14 - .../main/res/layout/activity_qr_reader.xml | 14 - .../src/main/res/layout/activity_setting.xml | 14 - .../plugin/src/main/res/values/colors.xml | 6 - .../plugin/src/main/res/values/keys.xml | 4 - .../plugin/src/main/res/values/strings.xml | 31 - .../plugin/src/main/res/values/styles.xml | 48 - .../res/xml/activity_setting_pref_oauth.xml | 10 - .../plugin/src/main/res/xml/filelocation.xml | 4 - ...deviceconnect_android_deviceplugin_tag.xml | 10 - ...droid_deviceplugin_tag_nfc_tech_filter.xml | 30 - .../dConnectDeviceTag/settings.gradle | 1 - .../dConnectDeviceTheta/.gitignore | 6 - .../dConnectDeviceTheta/README.md | 19 - .../dConnectDeviceTheta/app/.gitignore | 3 - .../dConnectDeviceTheta/app/build.gradle | 89 - .../dConnectDeviceTheta/app/libs/README.txt | 1 - .../app/proguard-rules.pro | 17 - .../deviceplugin/theta/ApplicationTest.java | 13 - .../app/src/main/AndroidManifest.xml | 103 - .../theta/ThetaDeviceApplication.java | 150 - .../theta/ThetaDeviceService.java | 303 - .../theta/ThetaDeviceServiceProvider.java | 26 - .../theta/activity/ThetaDeviceActivity.java | 57 - .../activity/ThetaDeviceSettingsActivity.java | 120 - .../theta/activity/ThetaFeatureActivity.java | 113 - .../activity/ThetaServiceListActivity.java | 32 - .../theta/activity/ThetaSplashActivity.java | 94 - .../theta/core/AbstractThetaDevice.java | 40 - .../core/AbstractThetaDeviceDetection.java | 51 - .../deviceplugin/theta/core/LiveCamera.java | 24 - .../theta/core/LivePreviewTask.java | 58 - .../theta/core/SphericalImageLiveView.java | 38 - .../theta/core/SphericalImageView.java | 83 - .../theta/core/SphericalViewApi.java | 267 - .../theta/core/SphericalViewParam.java | 134 - .../theta/core/SphericalViewRenderer.java | 558 - .../deviceplugin/theta/core/ThetaDevice.java | 240 - .../theta/core/ThetaDeviceClient.java | 345 - .../theta/core/ThetaDeviceDetection.java | 27 - .../ThetaDeviceDetectionFromAccessPoint.java | 184 - .../core/ThetaDeviceDetectionFromLAN.java | 131 - .../theta/core/ThetaDeviceEventListener.java | 22 - .../theta/core/ThetaDeviceException.java | 51 - .../theta/core/ThetaDeviceFactory.java | 108 - .../theta/core/ThetaDeviceManager.java | 302 - .../theta/core/ThetaDeviceModel.java | 29 - .../deviceplugin/theta/core/ThetaM15.java | 719 - .../deviceplugin/theta/core/ThetaObject.java | 133 - .../deviceplugin/theta/core/ThetaS.java | 706 - .../deviceplugin/theta/core/ThetaV.java | 681 - .../theta/core/osc/HttpClient.java | 70 - .../theta/core/osc/HttpRequest.java | 46 - .../theta/core/osc/HttpResponse.java | 44 - .../theta/core/osc/OscClient.java | 276 - .../theta/core/osc/OscCommand.java | 131 - .../deviceplugin/theta/core/osc/OscEntry.java | 80 - .../theta/core/osc/OscSession.java | 34 - .../deviceplugin/theta/core/osc/OscState.java | 34 - .../core/preview/AbstractPreviewServer.java | 120 - .../AbstractPreviewServerProvider.java | 116 - .../theta/core/preview/PreviewServer.java | 110 - .../core/preview/PreviewServerProvider.java | 67 - .../camera/ThetaCameraMJPEGPreviewServer.java | 171 - .../camera/ThetaCameraPreviewServer.java | 33 - .../ThetaCameraPreviewServerProvider.java | 48 - .../preview/camera/ThetaMJPEGEncoder.java | 41 - .../OmnidirectionalImageMJPEGEncoder.java | 54 - ...mnidirectionalImageMJPEGPreviewServer.java | 163 - ...directionalImagePreviewServerProvider.java | 45 - .../omni/projector/AbstractProjector.java | 57 - .../omni/projector/DefaultProjector.java | 138 - .../preview/omni/projector/ImageViewer.java | 97 - .../omni/projector/OverlayProjector.java | 265 - .../preview/omni/projector/OverlayView.java | 74 - .../omni/projector/ProjectionScreen.java | 12 - .../preview/omni/projector/Projector.java | 22 - .../core/preview/omni/projector/Viewer.java | 72 - .../core/sensor/AbstractHeadTracker.java | 44 - .../theta/core/sensor/DefaultHeadTracker.java | 148 - .../theta/core/sensor/GyroHeadTracker.java | 126 - .../theta/core/sensor/HeadTracker.java | 16 - .../core/sensor/HeadTrackingListener.java | 10 - .../core/wifi/WifiStateEventListener.java | 14 - .../theta/data/ThetaObjectStorage.java | 594 - .../fragment/BaseConfirmationFragment.java | 335 - .../theta/fragment/ConfirmationFragment.java | 253 - .../ConfirmationFragmentForApi29.java | 39 - .../theta/fragment/MovieModeFragment.java | 80 - .../theta/fragment/PhotoModeFragment.java | 81 - .../theta/fragment/SettingsFragment.java | 13 - .../theta/fragment/SummaryFragment.java | 59 - .../theta/fragment/ThetaDialogFragment.java | 187 - .../fragment/WifiConnectionFragment.java | 39 - .../fragment/gallery/GalleryContract.java | 63 - .../fragment/gallery/ShootingModeGetTask.java | 44 - .../fragment/gallery/ThetaDataRemoveTask.java | 53 - .../fragment/gallery/ThetaGalleryAdapter.java | 99 - .../gallery/ThetaGalleryFragment.java | 725 - .../gallery/ThetaGalleryPresenter.java | 61 - .../fragment/gallery/ThetaInfoGetTask.java | 57 - .../fragment/gallery/ThumbDownloadTask.java | 92 - .../fragment/shooting/RecordingVideoTask.java | 62 - .../fragment/shooting/ShootingChangeTask.java | 60 - .../fragment/shooting/ShootingContract.java | 65 - .../shooting/ShootingModeGetTask.java | 54 - .../theta/fragment/shooting/ShootingTask.java | 50 - .../shooting/ThetaShootingFragment.java | 577 - .../shooting/ThetaShootingPresenter.java | 62 - .../fragment/vr/ThetaVRModeContract.java | 30 - .../fragment/vr/ThetaVRModeFragment.java | 422 - .../fragment/vr/ThetaVRModePresenter.java | 204 - .../theta/opengl/PixelBuffer.java | 161 - .../theta/opengl/model/UVSphere.java | 149 - .../theta/profile/ThetaBatteryProfile.java | 88 - .../theta/profile/ThetaFileProfile.java | 320 - .../ThetaM15MediaStreamRecordingProfile.java | 13 - .../ThetaMediaStreamRecordingProfile.java | 628 - .../ThetaOmnidirectionalImageProfile.java | 430 - .../ThetaSMediaStreamRecordingProfile.java | 15 - .../theta/profile/ThetaSystemProfile.java | 28 - .../theta/service/ThetaImageService.java | 27 - .../theta/service/ThetaService.java | 37 - .../deviceplugin/theta/utils/BitmapUtils.java | 33 - .../theta/utils/DConnectMessageHandler.java | 24 - .../theta/utils/DownloadThetaDataTask.java | 34 - .../theta/utils/MediaSharing.java | 329 - .../theta/utils/MotionJpegInputStream.java | 68 - .../deviceplugin/theta/utils/Quaternion.java | 88 - .../theta/utils/UserSettings.java | 74 - .../deviceplugin/theta/utils/Vector3D.java | 99 - .../deviceplugin/theta/utils/WiFiUtil.java | 37 - .../theta/view/ThetaLoadingProgressView.java | 33 - .../profile/OmnidirectionalImageProfile.java | 169 - .../OmnidirectionalImageProfileConstants.java | 124 - .../main/res/drawable-hdpi/dconnect_icon.png | Bin 6896 -> 0 bytes .../src/main/res/drawable-hdpi/loading01.png | Bin 2504 -> 0 bytes .../src/main/res/drawable-hdpi/loading02.png | Bin 2518 -> 0 bytes .../src/main/res/drawable-hdpi/loading03.png | Bin 2576 -> 0 bytes .../src/main/res/drawable-hdpi/loading04.png | Bin 2518 -> 0 bytes .../src/main/res/drawable-hdpi/loading05.png | Bin 2521 -> 0 bytes .../src/main/res/drawable-hdpi/loading06.png | Bin 2545 -> 0 bytes .../src/main/res/drawable-hdpi/loading07.png | Bin 2536 -> 0 bytes .../src/main/res/drawable-hdpi/loading08.png | Bin 2534 -> 0 bytes .../src/main/res/drawable-hdpi/loading09.png | Bin 2570 -> 0 bytes .../src/main/res/drawable-hdpi/loading10.png | Bin 2534 -> 0 bytes .../src/main/res/drawable-hdpi/loading11.png | Bin 2496 -> 0 bytes .../src/main/res/drawable-hdpi/loading12.png | Bin 2551 -> 0 bytes .../app/src/main/res/drawable-hdpi/logo.png | Bin 30134 -> 0 bytes .../drawable-hdpi/screen_shot_press_false.png | Bin 20981 -> 0 bytes .../drawable-hdpi/screen_shot_press_gone.png | Bin 21180 -> 0 bytes .../drawable-hdpi/screen_shot_press_true.png | Bin 21025 -> 0 bytes .../app/src/main/res/drawable-hdpi/theta.png | Bin 7814 -> 0 bytes .../main/res/drawable-hdpi/theta_data_img.png | Bin 2333 -> 0 bytes .../main/res/drawable-hdpi/theta_data_mv.png | Bin 2181 -> 0 bytes .../main/res/drawable-hdpi/theta_movie.png | Bin 16661 -> 0 bytes .../main/res/drawable-hdpi/theta_photo.png | Bin 17247 -> 0 bytes .../main/res/drawable-hdpi/theta_s_movie.png | Bin 17942 -> 0 bytes .../main/res/drawable-hdpi/theta_s_photo.png | Bin 17930 -> 0 bytes .../main/res/drawable-hdpi/theta_standby.png | Bin 7835 -> 0 bytes .../src/main/res/drawable-hdpi/theta_wifi.png | Bin 17388 -> 0 bytes .../res/drawable-hdpi/vr_mode_2d_down.png | Bin 20508 -> 0 bytes .../res/drawable-hdpi/vr_mode_2d_gone.png | Bin 20263 -> 0 bytes .../main/res/drawable-hdpi/vr_mode_2d_on.png | Bin 20320 -> 0 bytes .../res/drawable-hdpi/vr_mode_3d_down.png | Bin 20529 -> 0 bytes .../res/drawable-hdpi/vr_mode_3d_gone.png | Bin 20240 -> 0 bytes .../main/res/drawable-hdpi/vr_mode_3d_on.png | Bin 20304 -> 0 bytes .../main/res/drawable-mdpi/dconnect_icon.png | Bin 4413 -> 0 bytes .../main/res/drawable-xhdpi/dconnect_icon.png | Bin 8995 -> 0 bytes .../drawable-xhdpi/rec_big_press_false.png | Bin 28067 -> 0 bytes .../res/drawable-xhdpi/rec_big_press_gone.png | Bin 28424 -> 0 bytes .../res/drawable-xhdpi/rec_big_press_true.png | Bin 28574 -> 0 bytes .../shooting_big_press_false.png | Bin 24184 -> 0 bytes .../shooting_big_press_gone.png | Bin 24409 -> 0 bytes .../shooting_big_press_true.png | Bin 24191 -> 0 bytes .../drawable-xhdpi/stop_big_press_false.png | Bin 22848 -> 0 bytes .../drawable-xhdpi/stop_big_press_gone.png | Bin 23054 -> 0 bytes .../drawable-xhdpi/stop_big_press_true.png | Bin 22782 -> 0 bytes .../drawable-xhdpi/theta_gallery_frame.png | Bin 2981 -> 0 bytes .../drawable-xhdpi/theta_gallery_thumb.png | Bin 7121 -> 0 bytes .../res/drawable-xxhdpi/dconnect_icon.png | Bin 14173 -> 0 bytes .../app/src/main/res/drawable/button_blue.xml | 27 - .../src/main/res/drawable/button_white.xml | 27 - .../res/drawable/gallery_listview_footer.xml | 13 - .../res/drawable/gallery_thumb_footer.xml | 13 - .../main/res/drawable/loading_progress.xml | 15 - .../src/main/res/drawable/rec_big_button.xml | 15 - .../main/res/drawable/shooting_big_button.xml | 9 - .../src/main/res/drawable/stop_big_button.xml | 9 - .../drawable/vr_mode_screen_shot_button.xml | 9 - .../res/drawable/vr_mode_toggle_button.xml | 15 - .../main/res/layout-land/theta_gallery.xml | 121 - .../main/res/layout-port/theta_gallery.xml | 118 - .../res/layout/activity_theta_splashtop.xml | 26 - .../src/main/res/layout/dialog_progress.xml | 45 - .../main/res/layout/fragment_confirmation.xml | 60 - .../main/res/layout/fragment_movie_mode.xml | 48 - .../main/res/layout/fragment_photo_mode.xml | 48 - .../src/main/res/layout/fragment_summary.xml | 68 - .../layout/fragment_theta_gallery_main.xml | 17 - .../res/layout/fragment_wifi_connection.xml | 46 - .../main/res/layout/theta_gallery_adapter.xml | 65 - .../main/res/layout/theta_shooting_mode.xml | 75 - .../layout/theta_shooting_mode_adapter.xml | 8 - .../app/src/main/res/layout/theta_vr_mode.xml | 69 - .../app/src/main/res/values-ja/strings.xml | 86 - .../app/src/main/res/values-land/dimens.xml | 15 - .../main/res/values-sw400dp-land/dimens.xml | 15 - .../src/main/res/values-sw400dp/dimens.xml | 14 - .../main/res/values-sw600dp-land/dimens.xml | 15 - .../src/main/res/values-sw600dp/dimens.xml | 15 - .../main/res/values-sw720dp-land/dimens.xml | 15 - .../src/main/res/values-sw720dp/dimens.xml | 15 - .../app/src/main/res/values/colors.xml | 9 - .../app/src/main/res/values/dimens.xml | 14 - .../app/src/main/res/values/strings.xml | 86 - .../app/src/main/res/values/styles.xml | 7 - .../app/src/main/res/xml/filelocation.xml | 4 - .../main/res/xml/network_security_config.xml | 4 - ...viceconnect_android_deviceplugin_theta.xml | 17 - .../dConnectDeviceTheta/build.gradle | 22 - .../dConnectDeviceTheta/gradle.properties | 25 - .../gradle/wrapper/gradle-wrapper.jar | Bin 53636 -> 0 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 - .../dConnectDeviceTheta/gradlew | 160 - .../dConnectDeviceTheta/gradlew.bat | 90 - .../dConnectDeviceTheta/settings.gradle | 1 - .../dConnectDeviceUVC/app/build.gradle | 4 +- .../app/src/main/AndroidManifest.xml | 14 +- readme.en.md | 16 - 1158 files changed, 11 insertions(+), 142320 deletions(-) delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/LICENSE.TXT delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/README.md delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/build.gradle delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/AndroidManifest.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearDeviceProvider.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearDeviceService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearManager.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/package-info.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearCanvasProfile.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearConst.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearDeviceOrientationProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearKeyEventProfile.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearNotificationProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearServiceDiscoveryProfile.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearSystemProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearTouchProfile.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearUtils.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearVibrationProfile.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/package-info.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/service/WearService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/setting/WearServiceListActivity.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/setting/WearSettingActivity.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/setting/WearSettingFragment.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/setting/package-info.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-hdpi/ic_launcher.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-mdpi/ic_launcher.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-mdpi/notification_00_post_lollipop.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-mdpi/notification_01_post_lollipop.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-mdpi/notification_02_post_lollipop.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-mdpi/notification_03_post_lollipop.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-mdpi/notification_04_post_lollipop.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-xhdpi/dconnect_icon.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-xhdpi/g_play_img.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-xhdpi/ic_launcher.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-xhdpi/notification_00.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-xhdpi/notification_01.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-xhdpi/notification_02.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-xhdpi/notification_03.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-xhdpi/notification_04.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-xxhdpi/ic_launcher.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/layout/wear_setting_0.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/values-v11/styles.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/values-v14/styles.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/values/strings.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/values/styles.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/xml/network_security_config.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/xml/org_deviceconnect_android_deviceplugin_wear.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/xml/wear.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/xml/wearable_app_desc.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/gradle.properties delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/gradle/wrapper/gradle-wrapper.jar delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/gradle/wrapper/gradle-wrapper.properties delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/gradlew delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/gradlew.bat delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/lint.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/proguard-project.txt delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/settings.gradle delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/build.gradle delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/proguard-rules.pro delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/AndroidManifest.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/DataLayerListenerService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearAppService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearApplication.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearConst.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/activity/CanvasActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/activity/WearKeyEventProfileActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/activity/WearTouchProfileActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/package-info.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/res/drawable-xhdpi/dconnect_icon.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/res/layout-notround/activity_wear_keyevent_profile.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/res/layout-notround/activity_wear_touch_profile.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/res/layout-round/activity_wear_keyevent_profile.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/res/layout-round/activity_wear_touch_profile.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/res/layout/activity_canvas.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/res/values/dimens.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/res/values/strings.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/res/values/wear.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/res/xml/network_security_config.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/LICENSE.TXT delete mode 100644 dConnectDevicePlugin/dConnectDeviceChromeCast/README.md delete mode 100644 dConnectDevicePlugin/dConnectDeviceChromeCast/app/build.gradle delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/AndroidManifest.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/fi/iki/elonen/NanoHTTPD.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/CastOptionsProvider.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/ChromeCastApplication.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/ChromeCastDeviceService.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/ChromeCastProvider.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/ChromeCastService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/core/AppLocalMediaFile.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/core/ChromeCastController.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/core/ChromeCastDiscovery.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/core/ChromeCastHttpServer.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/core/ChromeCastMediaPlayer.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/core/ChromeCastMessage.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/core/MediaFile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/core/MediaStoreContent.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/core/package-info.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/package-info.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/profile/ChromeCastCanvasProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/profile/ChromeCastConstants.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/profile/ChromeCastMediaPlayerProfile.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/profile/ChromeCastNotificationProfile.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/profile/ChromeCastServiceDiscoveryProfile.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/profile/ChromeCastSystemProfile.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/profile/package-info.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/setting/ChromeCastServiceListActivity.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/setting/ChromeCastSettingFragmentActivity.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/setting/ChromeCastSettingFragmentPage1.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/setting/ChromeCastSettingFragmentPage2.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/setting/ChromeCastSettingFragmentPage3.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/setting/DConnectSettingCompatPageFragmentActivity.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/java/org/deviceconnect/android/deviceplugin/chromecast/setting/package-info.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/drawable-hdpi/ic_launcher.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/drawable-mdpi/ic_launcher.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/drawable-xhdpi/button_blue.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/drawable-xhdpi/button_circle_blue.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/drawable-xhdpi/button_circle_red.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/drawable-xhdpi/button_google_play.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/drawable-xhdpi/button_red.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/drawable-xhdpi/chromecast_img01.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/drawable-xhdpi/chromecast_img02.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/drawable-xhdpi/chromecast_img03.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/drawable-xhdpi/ic_launcher.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/drawable-xxhdpi/ic_launcher.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/layout/chromecast_settings_step_1.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/layout/chromecast_settings_step_2.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/layout/chromecast_settings_step_3.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/menu/browse.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/values-ja/strings.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/values-v11/styles.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/values-v14/styles.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/values-w820dp/dimens.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/values/color.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/values/dimens.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/values/strings.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/values/styles.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/xml/network_security_config.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/app/src/main/res/xml/org_deviceconnect_android_deviceplugin_chromecast.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceChromeCast/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceChromeCast/gradle.properties delete mode 100644 dConnectDevicePlugin/dConnectDeviceChromeCast/gradle/wrapper/gradle-wrapper.jar delete mode 100644 dConnectDevicePlugin/dConnectDeviceChromeCast/gradle/wrapper/gradle-wrapper.properties delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/gradlew delete mode 100644 dConnectDevicePlugin/dConnectDeviceChromeCast/gradlew.bat delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/lint.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceChromeCast/proguard-project.txt delete mode 100644 dConnectDevicePlugin/dConnectDeviceChromeCast/settings.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/.gitignore delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/README.md delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/.gitignore delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/proguard-rules.pro delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/androidTest/java/org/deviceconnect/android/deviceplugin/fabo/ApplicationTest.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/AndroidManifest.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/assets/api/driveController.json delete mode 100755 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/assets/api/fabo.json delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/assets/api/gpio.json delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/FaBoDeviceService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/FaBoDeviceControl.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/IADT7410.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/IADXL345.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/IHTS221.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/IISL29034.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/ILIDARLiteV3.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/IMPL115.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/IMouseCar.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/IRobotCar.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/IVCNL4010.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/param/FaBoConst.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/param/FaBoShield.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/profile/FaBoGPIOProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/profile/FaBoProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/profile/FaBoSystemProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/FaBoService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/VirtualService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/VirtualServiceFactory.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/db/ProfileData.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/db/ProfileDataUtil.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/db/ServiceData.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/db/VirtualServiceDBHelper.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/BaseFaBoProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/FlashingExecutor.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/GPIOHumidityProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/GPIOIlluminanceProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/GPIOKeyEventProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/GPIOLightProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/GPIOProximityProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/GPIOTemperatureProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/GPIOVibrationProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/I2C3AxisDeviceOrientationProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/I2C9AxisDeviceOrientationProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/I2CAtmosphericPressureProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/I2CBarLightProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/I2CHumidityProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/I2CIlluminanceProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/I2CLIDARLiteProximityProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/I2CMatrixLightProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/I2CMouseCarDriveControllerProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/I2COneLightProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/I2CProximityProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/I2CRingLightProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/I2CRobotCarDriveControllerProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/service/virtual/profile/I2CTemperatureProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/setting/FaBoPinListActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/setting/FaBoProfileListActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/setting/FaBoServiceListActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/setting/FaBoVirtualServiceActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/setting/Util.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/setting/fragment/FaBoBasePinFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/setting/fragment/FaBoPinCheckBoxFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/deviceplugin/fabo/setting/fragment/FaBoPinRadioGroupFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/android/profile/GPIOProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/java/org/deviceconnect/profile/GPIOProfileConstants.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/anim/decelerate_quint.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/anim/fragment_slide_left_enter.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/anim/fragment_slide_left_exit.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/anim/fragment_slide_right_enter.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/anim/fragment_slide_right_exit.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/drawable-hdpi/dconnect_icon.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/drawable-mdpi/dconnect_icon.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/drawable-xhdpi/dconnect_icon.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/drawable-xxhdpi/dconnect_icon.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/drawable-xxhdpi/fabo_arrow.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/drawable/button_blue.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/drawable/button_blue_circle.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/drawable/button_blue_text.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/drawable/button_red.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/drawable/divider.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/layout/activity_fabo_pin_list.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/layout/activity_fabo_profile_list.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/layout/activity_fabo_virtual_service.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/layout/fragment_fabo_pin_group.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/layout/fragment_fabo_pin_list.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/layout/fragment_service_list_remover.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/layout/fragment_service_list_viewer.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/layout/item_fabo_check_box_pin.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/layout/item_fabo_profile.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/layout/item_fabo_profile_a.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/layout/item_fabo_radio_button_pin.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/layout/item_fabo_service_list.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/menu/menu_fabo_service_list_viewer.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/raw/standardfirmata_hex delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/values-w820dp/dimens.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/values/anim.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/values/colors.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/values/dimens.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/values/strings.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/values/styles.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/xml/device_filter.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/main/res/xml/org_deviceconnect_android_deviceplugin_fabo.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/app/src/test/java/org/deviceconnect/android/deviceplugin/fabo/ExampleUnitTest.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/gradle.properties delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/gradle/wrapper/gradle-wrapper.jar delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/gradle/wrapper/gradle-wrapper.properties delete mode 100755 dConnectDevicePlugin/dConnectDeviceFaBo/gradlew delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/gradlew.bat delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/.gitignore delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/proguard-rules.pro delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/androidTest/java/org/deviceconnect/android/deviceplugin/fabo/ExampleInstrumentedTest.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/AndroidManifest.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/FaBoArduinoDeviceProvider.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/FaBoArduinoDeviceService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/FaBoSettings.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/arduino/ADT7410.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/arduino/ADXL345.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/arduino/BaseI2C.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/arduino/FaBoUsbDeviceControl.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/arduino/FirmataUtil.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/arduino/FirmataV32.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/arduino/HTS221.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/arduino/ISL29034.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/arduino/LIDARLiteV3.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/arduino/MPL115.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/arduino/MouseCar.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/arduino/RobotCar.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/arduino/RobotCarUtil.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/arduino/VCNL4010.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/setting/FaBoArduinoActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/setting/FaBoSettingActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/setting/fragment/FaBoArduinoFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/setting/fragment/FaBoConnectFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/setting/fragment/FaBoFirmwareFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/setting/fragment/FaBoSettingFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/res/layout/activity_fabo_arduino.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/res/layout/activity_fabo_setting.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/res/layout/fragment_fabo_connect.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/res/layout/fragment_fabo_firmata.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/res/values/keys.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/res/values/strings.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/main/res/xml/settings_fabo.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/plugin/src/test/java/org/deviceconnect/android/deviceplugin/fabo/ExampleUnitTest.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/settings.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/things-plugin/.gitignore delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/things-plugin/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/things-plugin/proguard-rules.pro delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/things-plugin/src/androidTest/java/org/deviceconnect/android/deviceplugin/fabo/ExampleInstrumentedTest.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/things-plugin/src/main/AndroidManifest.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/things-plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/FaBoThingsDeviceProvider.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/things-plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/FaBoThingsDeviceService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/things-plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/things/ADT7410.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/things-plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/things/ADXL345.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/things-plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/things/BaseI2C.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/things-plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/things/FaBoThingsDeviceControl.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/things-plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/things/HTS221.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/things-plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/things/ISL29034.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/things-plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/things/LIDARLiteV3.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/things-plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/things/MPL115.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/things-plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/things/MouseCar.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/things-plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/things/RobotCar.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/things-plugin/src/main/java/org/deviceconnect/android/deviceplugin/fabo/device/things/VCNL4010.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/things-plugin/src/main/res/values/strings.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceFaBo/things-plugin/src/test/java/org/deviceconnect/android/deviceplugin/fabo/ExampleUnitTest.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/LICENSE.TXT delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/README.md delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/gradle.properties delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/gradle/wrapper/gradle-wrapper.jar delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/gradle/wrapper/gradle-wrapper.properties delete mode 100755 dConnectDevicePlugin/dConnectDeviceHOGP/gradlew delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/gradlew.bat delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/AndroidManifest.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/assets/api/hogp.json delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/assets/api/joystick.json delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/assets/api/keyboard.json delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/assets/api/mouse.json delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/HOGPMessageService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/HOGPMessageServiceProvider.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/HOGPService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/HOGPSetting.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/activity/HOGPBaseActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/activity/HOGPControlActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/activity/HOGPHelpActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/activity/HOGPSettingActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/fragment/HOGPHelp01Fragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/fragment/HOGPHelp02Fragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/fragment/HOGPHelp03Fragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/fragment/HOGPHelp04Fragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/profiles/HOGPHogpProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/profiles/HOGPJoystickProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/profiles/HOGPKeyboardProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/profiles/HOGPMouseProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/profiles/HOGPServiceInformation.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/profiles/HOGPSystemProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/server/AbstractHOGPServer.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/server/HOGPServer.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/util/BatteryUtils.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/util/BleUtils.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/util/BleUuidUtils.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/util/HIDUtils.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/java/org/deviceconnect/android/deviceplugin/hogp/util/KeyboardCode.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/drawable-hdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/drawable-mdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/drawable-xhdpi/hogp_help01.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/drawable-xhdpi/hogp_help02_1.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/drawable-xhdpi/hogp_help02_2.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/drawable-xhdpi/hogp_help03.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/drawable-xhdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/drawable-xxhdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/drawable/hogp_button_blue.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/drawable/hogp_keyboard_button.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/drawable/hogp_keyboard_select.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/layout/activity_control.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/layout/activity_help.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/layout/activity_setting.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/layout/contents_keyboard.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/layout/contents_keyboard_footer.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/layout/contents_keyboard_menu.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/layout/contents_keyboard_special.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/layout/fragment_help_01.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/layout/fragment_help_02.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/layout/fragment_help_03.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/layout/fragment_help_04.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/layout/item_setting_device.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/menu/activity_setting_menu.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/values/dimens.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/values/strings.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/plugin/src/main/res/xml/deviceplugin.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHOGP/settings.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/README.md delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/proguard-rules.pro delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/androidTest/java/org/deviceconnect/android/deviceplugin/heartrate/ApplicationTest.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/androidTest/java/org/deviceconnect/android/deviceplugin/heartrate/ble/BleDeviceDetectorTest.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/AndroidManifest.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/HeartRateConnector.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/HeartRateDeviceService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/HeartRateDeviceServiceProvider.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/HeartRateManager.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/activity/HeartRateDeviceSettingsActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/activity/HeartRateServiceListActivity.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/activity/package-info.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/ble/BleDeviceAdapter.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/ble/BleDeviceAdapterFactory.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/ble/BleDeviceDetector.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/ble/BleUtils.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/ble/activity/BleEnableActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/ble/adapter/NewBleDeviceAdapterImpl.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/ble/adapter/OldBleDeviceAdapterImpl.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/ble/adapter/package-info.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/ble/package-info.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/data/HeartRateDBHelper.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/data/HeartRateData.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/data/HeartRateDevice.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/data/health/HeartData.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/data/health/HeartRateData.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/data/health/TargetDeviceData.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/data/package-info.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/fragment/BluetoothSettingsFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/fragment/HeartRateDeviceSettingsFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/fragment/MioAlphaInstructionsFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/fragment/SummaryFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/fragment/dialog/ErrorDialogFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/fragment/dialog/ProgressDialogFragment.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/fragment/dialog/package-info.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/fragment/package-info.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/package-info.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/profile/HeartRateHealthProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/profile/HeartRateServiceDiscoveryProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/profile/HeartRateSystemProfile.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/profile/package-info.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/service/HeartRateService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/util/MDERFloatConvreterUtils.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/deviceplugin/heartrate/util/RawDataParseUtils.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/event/EventDispatcher.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/event/EventDispatcherFactory.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/event/EventDispatcherManager.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/event/ImmediateEventDispatcher.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/event/IntervalEventDispatcher.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/android/profile/HealthProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/java/org/deviceconnect/profile/HealthProfileConstants.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/drawable-hdpi/dconnect_icon.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/drawable-hdpi/mioalpha_explain.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/drawable-mdpi/dconnect_icon.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/drawable-xhdpi/dconnect_icon.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/drawable-xxhdpi/dconnect_icon.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/drawable/button_blue.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/drawable/button_red.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/layout/activity_heart_rate_device_settings.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/layout/dialog_progress.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/layout/fragment_bluetooth_settings.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/layout/fragment_heart_rate_device_settings.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/layout/fragment_mio_alpha_instructions.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/layout/fragment_summary.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/layout/item_heart_rate_device.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/layout/item_heart_rate_error.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/layout/item_heart_rate_searching.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/menu/menu_heart_rate_device_settings.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/values-w820dp/dimens.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/values/colors.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/values/dimens.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/values/strings.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/values/styles.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHeartRate/app/src/main/res/xml/org_deviceconnect_android_deviceplugin_heartrate.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/gradle.properties delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/gradle/wrapper/gradle-wrapper.jar delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/gradle/wrapper/gradle-wrapper.properties delete mode 100755 dConnectDevicePlugin/dConnectDeviceHeartRate/gradlew delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/gradlew.bat delete mode 100644 dConnectDevicePlugin/dConnectDeviceHeartRate/settings.gradle delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/LICENSE.TXT delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/README.md delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/app/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/app/libs/LICENSE.txt delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/libs/huelocalsdk.jar delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/libs/huesdkresources.jar delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/AndroidManifest.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/assets/api/device.json delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/HueConstants.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/HueDeviceApplication.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/HueDeviceProvider.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/HueDeviceService.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/activity/HueMainActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/activity/HueServiceListActivity.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/activity/fragment/HueFragment01.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/activity/fragment/HueFragment02.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/activity/fragment/HueFragment03.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/activity/fragment/HueFragment04.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/activity/fragment/package-info.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/activity/package-info.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/db/HueDBHelper.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/db/HueLightDBHelper.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/db/HueManager.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/package-info.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/profile/FlashingExecutor.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/profile/HueDeviceProfile.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/profile/HueLightProfile.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/profile/HueSystemProfile.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/profile/package-info.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/service/HueLightService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/java/org/deviceconnect/android/deviceplugin/hue/service/HueService.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/anim/decelerate_quint.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/anim/fragment_slide_left_enter.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/anim/fragment_slide_left_exit.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/anim/fragment_slide_right_enter.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/anim/fragment_slide_right_exit.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/drawable-hdpi/ic_ab_back_holo_dark.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/drawable-hdpi/ic_launcher.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/drawable-mdpi/ic_launcher.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/drawable-mdpi/image_clear.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/drawable-nodpi/card_item_bg.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/drawable-nodpi/hue_arraw.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/drawable-nodpi/hue_small_icon.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/drawable-nodpi/pageindicator_off.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/drawable-nodpi/pageindicator_on.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/drawable-xhdpi/ic_launcher.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/drawable-xxhdpi/button_blue.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/drawable-xxhdpi/ic_launcher.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/drawable-xxhdpi/img01.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/drawable-xxhdpi/img02.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/drawable-xxhdpi/img03.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/drawable-xxhdpi/img04.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/drawable-xxhdpi/img05.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/drawable-xxhdpi/item_listview.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/layout/activity_main.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/layout/dialog_progress.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/layout/hue_access_point.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/layout/hue_fragment_01.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/layout/hue_fragment_01_header.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/layout/hue_fragment_02.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/layout/hue_fragment_03.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/layout/hue_fragment_04.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/layout/hue_list.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/layout/selectbridge_item.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/values-ja/keys.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/values-ja/strings.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/values-v14/styles.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/values/colors.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/values/dimens.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/values/keys.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/values/strings.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/values/styles.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/xml/network_security_config.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/app/src/main/res/xml/org_deviceconnect_android_deviceplugin_hue.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/app/src/things/AndroidManifest.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/app/src/things/java/org/deviceconnect/android/deviceplugin/hue/HueThingsDeviceService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/gradle.properties delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/gradle/wrapper/gradle-wrapper.jar delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/gradle/wrapper/gradle-wrapper.properties delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/gradlew delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/gradlew.bat delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/lint.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceHue/proguard-project.txt delete mode 100644 dConnectDevicePlugin/dConnectDeviceHue/settings.gradle delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/LICENSE.TXT delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/README.md delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/build.gradle delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/AndroidManifest.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/assets/api/remoteController.json delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/assets/api/tv.json delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/JmDNS.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/JmmDNS.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/NetworkTopologyDiscovery.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/NetworkTopologyEvent.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/NetworkTopologyListener.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/ServiceEvent.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/ServiceInfo.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/ServiceListener.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/ServiceTypeListener.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/DNSCache.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/DNSEntry.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/DNSIncoming.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/DNSListener.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/DNSMessage.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/DNSOutgoing.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/DNSQuestion.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/DNSRecord.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/DNSStatefulObject.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/DNSTaskStarter.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/HostInfo.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/JmDNSImpl.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/JmmDNSImpl.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/ListenerStatus.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/NameRegister.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/NetworkTopologyDiscoveryImpl.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/NetworkTopologyEventImpl.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/ServiceEventImpl.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/ServiceInfoImpl.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/SocketListener.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/constants/DNSConstants.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/constants/DNSLabel.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/constants/DNSOperationCode.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/constants/DNSOptionCode.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/constants/DNSRecordClass.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/constants/DNSRecordType.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/constants/DNSResultCode.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/constants/DNSState.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/constants/package-info.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/package-info.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/tasks/DNSTask.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/tasks/RecordReaper.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/tasks/Responder.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/tasks/package-info.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/tasks/resolver/DNSResolverTask.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/tasks/resolver/ServiceInfoResolver.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/tasks/resolver/ServiceResolver.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/tasks/resolver/TypeResolver.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/tasks/resolver/package-info.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/tasks/state/Announcer.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/tasks/state/Canceler.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/tasks/state/DNSStateTask.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/tasks/state/Prober.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/tasks/state/Renewer.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/impl/tasks/state/package-info.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/javax/jmdns/package-info.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/IRKitApplication.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/IRKitDevice.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/IRKitDeviceProvider.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/IRKitDeviceService.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/IRKitManager.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/data/IRKitDBHelper.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/data/VirtualDeviceData.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/data/VirtualProfileData.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/data/package-info.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/network/WiFiUtil.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/network/package-info.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/package-info.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/profile/IRKitLightProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/profile/IRKitPowerProfile.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/profile/IRKitRemoteControllerProfile.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/profile/IRKitSystemProfile.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/profile/IRKitTVProfile.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/profile/package-info.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/service/IRKitService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/service/VirtualService.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/settings/activity/IRKitAbstractSettingActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/settings/activity/IRKitServiceListActivity.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/settings/activity/IRKitSettingActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/settings/activity/IRKitVirtualDeviceListActivity.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/settings/activity/package-info.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/settings/fragment/IRKitAccessPointSettingFragment.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/settings/fragment/IRKitBaseFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/settings/fragment/IRKitCategorySelectDialogFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/settings/fragment/IRKitCreateVirtualDeviceDialogFragment.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/settings/fragment/IRKitEndingFragment.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/settings/fragment/IRKitPowerOnFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/settings/fragment/IRKitProgressDialogFragment.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/settings/fragment/IRKitRegisterIRFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/settings/fragment/IRKitVirtualDeviceFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/settings/fragment/IRKitVirtualProfileListFragment.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/settings/fragment/IRKitWiFiSelectionFragment.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/settings/fragment/package-info.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/settings/widget/HoldableViewPager.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/java/org/deviceconnect/android/deviceplugin/irkit/settings/widget/package-info.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/drawable-hdpi/button_pink.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/drawable-hdpi/dconnect_icon.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/drawable-hdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/drawable-hdpi/irkit_icon.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/drawable-hdpi/light.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/drawable-hdpi/tv.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/drawable-mdpi/button_dark.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/drawable-mdpi/ic_launcher.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/drawable-xhdpi/button_blue.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/drawable-xhdpi/ic_launcher.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/drawable-xhdpi/img01.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/drawable-xhdpi/img02.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/drawable-xhdpi/img03.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/drawable-xhdpi/img04.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/drawable-xhdpi/img05.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/drawable-xhdpi/img06.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/drawable-xhdpi/img07.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/drawable-xhdpi/irkit.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/drawable-xhdpi/select_irkit.png delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/drawable-xxhdpi/button_orange.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/drawable-xxhdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/layout/dialog_progress.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/layout/dialog_virtual_device.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/layout/dialog_virtual_profile.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/layout/fragment_profilelist.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/layout/fragment_register_ir.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/layout/fragment_virtual_device_list.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/layout/irkit_activity_setting_page.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/layout/irkit_settings_step_1.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/layout/irkit_settings_step_2.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/layout/irkit_settings_step_3.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/layout/irkit_settings_step_4.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/layout/item_irkit_profile_list.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/layout/item_irkitdevice_list.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/values-v11/styles.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/values-v14/styles.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/values/dimens.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/values/strings.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/values/styles.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/xml/network_security_config.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/app/src/main/res/xml/org_deviceconnect_android_deviceplugin_irkit.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/gradle.properties delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/gradle/wrapper/gradle-wrapper.jar delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/gradle/wrapper/gradle-wrapper.properties delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/gradlew delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/gradlew.bat delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/lint.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceIRKit/proguard-project.txt delete mode 100644 dConnectDevicePlugin/dConnectDeviceIRKit/settings.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/NOTICE delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/README.md delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/.browserslistrc delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/.eslintrc.js delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/.gitignore delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/README.md delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/babel.config.js delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/build.bat delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/build.sh delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/package-lock.json delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/package.json delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/public/favicon.ico delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/public/index.html delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/src/App.vue delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/src/assets/logo.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/src/assets/logo.svg delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/src/components/PadPanel.vue delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/src/components/SliderPanel.vue delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/src/components/ValueField.vue delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/src/libs/core.js delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/src/main.js delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/src/plugins/vuetify.js delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/src/router/index.js delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/src/views/ControllerPage.vue delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/src/views/ProfileSelectPage.vue delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/src/views/ServiceListPage.vue delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/src/views/SettingsPage.vue delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/demo/vue.config.js delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/gradle.properties delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/gradle/wrapper/gradle-wrapper.jar delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/gradle/wrapper/gradle-wrapper.properties delete mode 100755 dConnectDevicePlugin/dConnectDeviceMidi/gradlew delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/gradlew.bat delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/AndroidManifest.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/assets/org_deviceconnect_android_deviceplugin_midi/api/keyevent.json delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/assets/org_deviceconnect_android_deviceplugin_midi/api/midi.json delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/assets/org_deviceconnect_android_deviceplugin_midi/api/soundController.json delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/assets/org_deviceconnect_android_deviceplugin_midi/api/soundModule.json delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/assets/org_deviceconnect_android_deviceplugin_midi/api/volumeController.json delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/CustomTableRow.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/DConnectMidiBleSettingsActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/DConnectMidiDeviceService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/DConnectMidiServiceDetailActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/DConnectMidiServiceListActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/DConnectMidiSettingsListActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/MidiDemoInstaller.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/MidiDemoSettingActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/MidiDeviceManager.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/MidiInputBuffer.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/MidiMessageSender.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/MidiMessageService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/MidiMessageServiceProvider.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/MidiPluginApplication.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/NoteNameTable.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/ServiceInfo.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/ble/BleDeviceAdapter.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/ble/BleDeviceAdapterFactory.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/ble/BleDeviceDetector.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/ble/BleUtils.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/ble/activity/BleEnableActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/ble/adapter/NewBleDeviceAdapterImpl.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/ble/adapter/OldBleDeviceAdapterImpl.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/ble/adapter/package-info.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/ble/package-info.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/core/ChannelVoiceMessage.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/core/ControlChangeMessage.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/core/MidiMessage.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/core/MidiMessageParser.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/core/NoteMessage.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/core/NoteOffMessage.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/core/NoteOnMessage.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/core/file/MidiFilePlayer.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/fragment/BluetoothSettingsFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/fragment/MidiDemoSettingFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/fragment/MidiDeviceSettingsFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/fragment/SettingsListPreferenceFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/fragment/SummaryFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/fragment/dialog/ErrorDialogFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/fragment/dialog/ProgressDialogFragment.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/fragment/dialog/package-info.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/fragment/package-info.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/profiles/BaseMidiOutputProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/profiles/BaseMidiProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/profiles/MidiKeyEventProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/profiles/MidiSoundControllerProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/profiles/MidiSoundModuleProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/profiles/MidiSystemProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/java/org/deviceconnect/android/deviceplugin/midi/profiles/MidiVolumeControllerProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/drawable-hdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/drawable-mdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/drawable-xhdpi/button_red.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/drawable-xhdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/drawable-xxhdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/layout/activity_demo_page_setting.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/layout/activity_settings_list.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/layout/dialog_progress.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/layout/fragment_bluetooth_settings.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/layout/fragment_midi_ble_device_settings.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/layout/fragment_summary.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/layout/item_midi_ble_device.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/layout/item_midi_ble_error.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/layout/item_midi_ble_searching.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/layout/service_detail_activity.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/layout/service_detail_table_row.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/values-w820dp/dimens.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/values/attrs.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/values/colors.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/values/dimens.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/values/strings.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/xml/filelocation.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/xml/org_deviceconnect_android_deviceplugin_midi.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/main/res/xml/settings_midi_plugin.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/plugin/src/test/java/org/deviceconnect/android/deviceplugin/midi/NoteNameTableTest.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceMidi/settings.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/README.md delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/demo/README.md delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/demo/babel.config.js delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/demo/build.bat delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/demo/build.sh delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/demo/package-lock.json delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/demo/package.json delete mode 100755 dConnectDevicePlugin/dConnectDeviceSwitchBot/demo/public/dconnectsdk-2.2.0.js delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/demo/public/favicon.ico delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/demo/public/index.html delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/demo/src/App.vue delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/demo/src/assets/logo.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/demo/src/components/SwitchBotDemo.vue delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/demo/src/main.js delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/demo/vue.config.js delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/gradle.properties delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/gradle/wrapper/gradle-wrapper.jar delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/gradle/wrapper/gradle-wrapper.properties delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/gradlew delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/gradlew.bat delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/AndroidManifest.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/assets/org_deviceconnect_android_deviceplugin_switchbot/api/button.json delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/assets/org_deviceconnect_android_deviceplugin_switchbot/api/switch.json delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/java/org/deviceconnect/android/deviceplugin/switchbot/SwitchBotMessageService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/java/org/deviceconnect/android/deviceplugin/switchbot/SwitchBotMessageServiceProvider.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/java/org/deviceconnect/android/deviceplugin/switchbot/demo/SwitchBotDemoInstaller.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/java/org/deviceconnect/android/deviceplugin/switchbot/device/SwitchBotDevice.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/java/org/deviceconnect/android/deviceplugin/switchbot/device/SwitchBotDeviceProvider.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/java/org/deviceconnect/android/deviceplugin/switchbot/profiles/SwitchBotButtonProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/java/org/deviceconnect/android/deviceplugin/switchbot/profiles/SwitchBotSwitchProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/java/org/deviceconnect/android/deviceplugin/switchbot/profiles/SwitchBotSystemProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/java/org/deviceconnect/android/deviceplugin/switchbot/settings/BaseSettingActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/java/org/deviceconnect/android/deviceplugin/switchbot/settings/DemoPageSettingActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/java/org/deviceconnect/android/deviceplugin/switchbot/settings/DemoPageSettingFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/java/org/deviceconnect/android/deviceplugin/switchbot/settings/ModifyActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/java/org/deviceconnect/android/deviceplugin/switchbot/settings/ModifyAndDeleteActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/java/org/deviceconnect/android/deviceplugin/switchbot/settings/RegisterActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/java/org/deviceconnect/android/deviceplugin/switchbot/settings/ScanActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/java/org/deviceconnect/android/deviceplugin/switchbot/settings/SettingActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/java/org/deviceconnect/android/deviceplugin/switchbot/settings/Settings.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/java/org/deviceconnect/android/deviceplugin/switchbot/utility/BLEScanner.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/java/org/deviceconnect/android/deviceplugin/switchbot/utility/ListAdapter.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/java/org/deviceconnect/android/deviceplugin/switchbot/utility/ListViewHolder.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/res/drawable-hdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/res/drawable-mdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/res/drawable-xhdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/res/drawable-xxhdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/res/layout/activity_demo_page_setting.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/res/layout/activity_modify.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/res/layout/activity_modify_and_delete.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/res/layout/activity_register.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/res/layout/activity_scan.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/res/layout/activity_setting.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/res/layout/list_modify_and_delete_row.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/res/layout/list_scan_row.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/res/values/arrays.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/res/values/strings.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/res/values/style.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/res/xml/filelocation.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/plugin/src/main/res/xml/org_deviceconnect_android_deviceplugin_switchbot.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceSwitchBot/settings.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/README.md delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/gradle.properties delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/gradle/wrapper/gradle-wrapper.jar delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/gradle/wrapper/gradle-wrapper.properties delete mode 100755 dConnectDevicePlugin/dConnectDeviceTag/gradlew delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/gradlew.bat delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/AndroidManifest.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/assets/org_deviceconnect_android_deviceplugin_tag/api/tag.json delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/TagMessageService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/TagMessageServiceProvider.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/TagSetting.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/TagSettingActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/activity/BindServiceActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/activity/NFCBaseActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/activity/NFCReaderActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/activity/NFCWriterActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/activity/QRReaderActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/camera2/AutoFitTextureView.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/camera2/Camera2Helper.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/camera2/Camera2StateMachine.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/camera2/CameraPermissionActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/profiles/TagSystemProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/services/TagConstants.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/services/TagInfo.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/services/TagService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/services/TagServiceInterface.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/services/nfc/NFCReader.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/services/nfc/NFCService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/services/nfc/NFCWriter.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/services/nfc/exception/NFCWriteException.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/services/nfc/profiles/NFCTagProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/services/qr/QRReader.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/services/qr/QRService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/services/qr/QRWriter.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/services/qr/profiles/QRTagProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/services/qr/profiles/ResourceDownloader.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/java/org/deviceconnect/android/deviceplugin/tag/ui/SwitchPreference.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/res/drawable-hdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/res/drawable-mdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/res/drawable-xhdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/res/drawable-xxhdpi/ic_launcher.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/res/layout/activity_nfc_reader.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/res/layout/activity_nfc_writer.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/res/layout/activity_qr_reader.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/res/layout/activity_setting.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/res/values/colors.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/res/values/keys.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/res/values/strings.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/res/values/styles.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/res/xml/activity_setting_pref_oauth.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/res/xml/filelocation.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/res/xml/org_deviceconnect_android_deviceplugin_tag.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/plugin/src/main/res/xml/org_deviceconnect_android_deviceplugin_tag_nfc_tech_filter.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTag/settings.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/.gitignore delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/README.md delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/.gitignore delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/libs/README.txt delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/proguard-rules.pro delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/androidTest/java/org/deviceconnect/android/deviceplugin/theta/ApplicationTest.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/AndroidManifest.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/ThetaDeviceApplication.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/ThetaDeviceService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/ThetaDeviceServiceProvider.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/activity/ThetaDeviceActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/activity/ThetaDeviceSettingsActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/activity/ThetaFeatureActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/activity/ThetaServiceListActivity.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/activity/ThetaSplashActivity.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/AbstractThetaDevice.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/AbstractThetaDeviceDetection.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/LiveCamera.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/LivePreviewTask.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/SphericalImageLiveView.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/SphericalImageView.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/SphericalViewApi.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/SphericalViewParam.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/SphericalViewRenderer.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/ThetaDevice.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/ThetaDeviceClient.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/ThetaDeviceDetection.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/ThetaDeviceDetectionFromAccessPoint.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/ThetaDeviceDetectionFromLAN.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/ThetaDeviceEventListener.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/ThetaDeviceException.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/ThetaDeviceFactory.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/ThetaDeviceManager.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/ThetaDeviceModel.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/ThetaM15.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/ThetaObject.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/ThetaS.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/ThetaV.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/osc/HttpClient.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/osc/HttpRequest.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/osc/HttpResponse.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/osc/OscClient.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/osc/OscCommand.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/osc/OscEntry.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/osc/OscSession.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/osc/OscState.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/preview/AbstractPreviewServer.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/preview/AbstractPreviewServerProvider.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/preview/PreviewServer.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/preview/PreviewServerProvider.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/preview/camera/ThetaCameraMJPEGPreviewServer.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/preview/camera/ThetaCameraPreviewServer.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/preview/camera/ThetaCameraPreviewServerProvider.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/preview/camera/ThetaMJPEGEncoder.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/preview/omni/OmnidirectionalImageMJPEGEncoder.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/preview/omni/OmnidirectionalImageMJPEGPreviewServer.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/preview/omni/OmnidirectionalImagePreviewServerProvider.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/preview/omni/projector/AbstractProjector.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/preview/omni/projector/DefaultProjector.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/preview/omni/projector/ImageViewer.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/preview/omni/projector/OverlayProjector.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/preview/omni/projector/OverlayView.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/preview/omni/projector/ProjectionScreen.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/preview/omni/projector/Projector.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/preview/omni/projector/Viewer.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/sensor/AbstractHeadTracker.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/sensor/DefaultHeadTracker.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/sensor/GyroHeadTracker.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/sensor/HeadTracker.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/sensor/HeadTrackingListener.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/wifi/WifiStateEventListener.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/data/ThetaObjectStorage.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/BaseConfirmationFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/ConfirmationFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/ConfirmationFragmentForApi29.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/MovieModeFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/PhotoModeFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/SettingsFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/SummaryFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/ThetaDialogFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/WifiConnectionFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/gallery/GalleryContract.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/gallery/ShootingModeGetTask.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/gallery/ThetaDataRemoveTask.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/gallery/ThetaGalleryAdapter.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/gallery/ThetaGalleryFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/gallery/ThetaGalleryPresenter.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/gallery/ThetaInfoGetTask.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/gallery/ThumbDownloadTask.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/shooting/RecordingVideoTask.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/shooting/ShootingChangeTask.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/shooting/ShootingContract.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/shooting/ShootingModeGetTask.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/shooting/ShootingTask.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/shooting/ThetaShootingFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/shooting/ThetaShootingPresenter.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/vr/ThetaVRModeContract.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/vr/ThetaVRModeFragment.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/fragment/vr/ThetaVRModePresenter.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/opengl/PixelBuffer.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/opengl/model/UVSphere.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/profile/ThetaBatteryProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/profile/ThetaFileProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/profile/ThetaM15MediaStreamRecordingProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/profile/ThetaMediaStreamRecordingProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/profile/ThetaOmnidirectionalImageProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/profile/ThetaSMediaStreamRecordingProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/profile/ThetaSystemProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/service/ThetaImageService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/service/ThetaService.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/utils/BitmapUtils.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/utils/DConnectMessageHandler.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/utils/DownloadThetaDataTask.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/utils/MediaSharing.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/utils/MotionJpegInputStream.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/utils/Quaternion.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/utils/UserSettings.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/utils/Vector3D.java delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/utils/WiFiUtil.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/view/ThetaLoadingProgressView.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/profile/OmnidirectionalImageProfile.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/profile/OmnidirectionalImageProfileConstants.java delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/dconnect_icon.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/loading01.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/loading02.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/loading03.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/loading04.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/loading05.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/loading06.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/loading07.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/loading08.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/loading09.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/loading10.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/loading11.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/loading12.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/logo.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/screen_shot_press_false.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/screen_shot_press_gone.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/screen_shot_press_true.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/theta.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/theta_data_img.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/theta_data_mv.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/theta_movie.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/theta_photo.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/theta_s_movie.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/theta_s_photo.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/theta_standby.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/theta_wifi.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/vr_mode_2d_down.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/vr_mode_2d_gone.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/vr_mode_2d_on.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/vr_mode_3d_down.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/vr_mode_3d_gone.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-hdpi/vr_mode_3d_on.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-mdpi/dconnect_icon.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-xhdpi/dconnect_icon.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-xhdpi/rec_big_press_false.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-xhdpi/rec_big_press_gone.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-xhdpi/rec_big_press_true.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-xhdpi/shooting_big_press_false.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-xhdpi/shooting_big_press_gone.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-xhdpi/shooting_big_press_true.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-xhdpi/stop_big_press_false.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-xhdpi/stop_big_press_gone.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-xhdpi/stop_big_press_true.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-xhdpi/theta_gallery_frame.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-xhdpi/theta_gallery_thumb.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable-xxhdpi/dconnect_icon.png delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable/button_blue.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable/button_white.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable/gallery_listview_footer.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable/gallery_thumb_footer.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable/loading_progress.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable/rec_big_button.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable/shooting_big_button.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable/stop_big_button.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable/vr_mode_screen_shot_button.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/drawable/vr_mode_toggle_button.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/layout-land/theta_gallery.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/layout-port/theta_gallery.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/layout/activity_theta_splashtop.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/layout/dialog_progress.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/layout/fragment_confirmation.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/layout/fragment_movie_mode.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/layout/fragment_photo_mode.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/layout/fragment_summary.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/layout/fragment_theta_gallery_main.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/layout/fragment_wifi_connection.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/layout/theta_gallery_adapter.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/layout/theta_shooting_mode.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/layout/theta_shooting_mode_adapter.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/layout/theta_vr_mode.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/values-ja/strings.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/values-land/dimens.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/values-sw400dp-land/dimens.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/values-sw400dp/dimens.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/values-sw600dp-land/dimens.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/values-sw600dp/dimens.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/values-sw720dp-land/dimens.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/values-sw720dp/dimens.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/values/colors.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/values/dimens.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/values/strings.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/values/styles.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/xml/filelocation.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/xml/network_security_config.xml delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/res/xml/org_deviceconnect_android_deviceplugin_theta.xml delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/build.gradle delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/gradle.properties delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/gradle/wrapper/gradle-wrapper.jar delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/gradle/wrapper/gradle-wrapper.properties delete mode 100755 dConnectDevicePlugin/dConnectDeviceTheta/gradlew delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/gradlew.bat delete mode 100644 dConnectDevicePlugin/dConnectDeviceTheta/settings.gradle diff --git a/README.md b/README.md index ed4f3550ce..008188bce5 100755 --- a/README.md +++ b/README.md @@ -150,17 +150,8 @@ curl -X GET \ ## デバイスプラグイン | プロジェクト名|内容 | |:-----------|:---------| -|[dConnectDeviceAndroidWear](dConnectDevicePlugin/dConnectDeviceAndroidWear)|AndroidWearのデバイスプラグイン。| -|[dConnectDeviceChromeCast](dConnectDevicePlugin/dConnectDeviceChromeCast)|Chromecastのデバイスプラグイン。 | -|[dConnectDeviceFaBo](dConnectDevicePlugin/dConnectDeviceFaBo)|FaBoのデバイスプラグイン。| -|[dConnectDeviceHeartRate](dConnectDevicePlugin/dConnectDeviceHeartRate)|Mio AlphaなどのHeartRateのデバイスプラグイン。| -|[dConnectDeviceHOGP](dConnectDevicePlugin/dConnectDeviceHOGP)|HOGPのデバイスプラグイン。| |[dConnectDeviceHost](dConnectDevicePlugin/dConnectDeviceHost)|Androidのデバイスプラグイン。| -|[dConnectDeviceHue](dConnectDevicePlugin/dConnectDeviceHue)|Hueのデバイスプラグイン。| -|[dConnectDeviceIRKit](dConnectDevicePlugin/dConnectDeviceIRKit)|IRKitのデバイスプラグイン。| |[dConnectDeviceLinking](dConnectDevicePlugin/dConnectDeviceLinking)|Linkingのデバイスプラグイン。| -|[dConnectDeviceSwitchBot](dConnectDevicePlugin/dConnectDeviceSwitchBot)|SwitchBotのデバイスプラグイン。| -|[dConnectDeviceTheta](dConnectDevicePlugin/dConnectDeviceTheta)|THETAのデバイスプラグイン。| |[dConnectDeviceUVC](dConnectDevicePlugin/dConnectDeviceUVC)|UVCカメラのデバイスプラグイン。| |[dConnectDeviceTest](dConnectDevicePlugin/dConnectDeviceTest)|DeviceConnectのテスト用のデバイスプラグイン。| |[dConnectDevicePluginSDK](dConnectDevicePlugin/dConnectDevicePluginSDK)|DevicePluginを作成するためのSDK。
dConnectSDKForAndroidが必要。| diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/LICENSE.TXT b/dConnectDevicePlugin/dConnectDeviceAndroidWear/LICENSE.TXT deleted file mode 100755 index 9f0bfd2fe5..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/LICENSE.TXT +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 NTT DOCOMO, INC. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/README.md b/dConnectDevicePlugin/dConnectDeviceAndroidWear/README.md deleted file mode 100644 index 7f45ea3dd9..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/README.md +++ /dev/null @@ -1,18 +0,0 @@ -# Android Wear プラグイン - -このAndroid Wearプラグインでは、Android Wearに対応したスマートウォッチを操作する機能を提供します。 - -## 開発環境 -Android Studio 2.2.1以上 - -## ビルドマニュアル -- [Android Wearビルドマニュアル](https://github.com/DeviceConnect/DeviceConnect-Android/wiki/AndroidWear-Build) - -## サポートするプロファイル - -* canvas -* deviceOrientation -* keyEvent -* notification -* touch -* vibration diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/build.gradle b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/build.gradle deleted file mode 100644 index ac59734fd9..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/build.gradle +++ /dev/null @@ -1,89 +0,0 @@ -apply plugin: 'com.android.application' -// Create github.properties in root project folder file with -// gpr.usr=GITHUB_USER_ID -// gpr.key=PERSONAL_ACCESS_TOKEN -def githubPropertiesFile = rootProject.file("github.properties") -def githubProperties = new Properties() -if (githubPropertiesFile.exists()) { - githubProperties.load(new FileInputStream(githubPropertiesFile)) -} - -dependencies { - implementation fileTree(include: '*.jar', dir: 'libs') - implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.8.4' - implementation 'androidx.multidex:multidex:2.0.1' - implementation 'com.google.android.gms:play-services-wearable:17.0.0' - - wearApp project(':wear-app') -} - -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.wear" - minSdkVersion 23 - targetSdkVersion 29 - versionCode 1 - versionName getVersionName() - multiDexEnabled true - } - - 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.txt' - 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' - } - lintOptions { - checkReleaseBuilds false - abortOnError false - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - repositories { - maven { - name = "DeviceConnect-Android" - url = uri("https://maven.pkg.github.com/DeviceConnect/DeviceConnect-Android") - - credentials { - username = System.getenv("GPR_USER") ?: githubProperties['gpr.usr'] - password = System.getenv("GPR_API_KEY") ?: githubProperties['gpr.key'] - } - } - } -} \ No newline at end of file diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/AndroidManifest.xml b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/AndroidManifest.xml deleted file mode 100755 index 76ac0caac4..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearDeviceProvider.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearDeviceProvider.java deleted file mode 100755 index 3071fef382..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearDeviceProvider.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - WearServiceProvider.java - Copyright (c) 2014 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.wear; - -import android.app.Service; - -import org.deviceconnect.android.message.DConnectMessageServiceProvider; - -/** - * Provider. - * - * @param Service class. - * @author NTT DOCOMO, INC. - */ -public class WearDeviceProvider extends DConnectMessageServiceProvider { - @SuppressWarnings("unchecked") - @Override - protected Class getServiceClass() { - Class clazz = WearDeviceService.class; - return (Class) clazz; - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearDeviceService.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearDeviceService.java deleted file mode 100755 index 921390b189..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearDeviceService.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - WearDeviceService.java - Copyright (c) 2014 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.wear; - -import android.content.Intent; - -import com.google.android.gms.wearable.Node; - -import org.deviceconnect.android.deviceplugin.wear.profile.WearConst; -import org.deviceconnect.android.deviceplugin.wear.profile.WearNotificationProfile; -import org.deviceconnect.android.deviceplugin.wear.profile.WearServiceDiscoveryProfile; -import org.deviceconnect.android.deviceplugin.wear.profile.WearSystemProfile; -import org.deviceconnect.android.deviceplugin.wear.profile.WearUtils; -import org.deviceconnect.android.deviceplugin.wear.service.WearService; -import org.deviceconnect.android.event.Event; -import org.deviceconnect.android.event.EventManager; -import org.deviceconnect.android.message.DConnectMessageService; -import org.deviceconnect.android.profile.SystemProfile; -import org.deviceconnect.android.service.DConnectService; - -import java.util.List; - -/** - * WearService. - * - * @author NTT DOCOMO, INC. - */ -public class WearDeviceService extends DConnectMessageService implements WearManager.NodeEventListener { - - /** - * Android Wearとの通信を管理するクラス. - */ - private WearManager mWearManager; - - @Override - public void onCreate() { - super.onCreate(); - mWearManager = new WearManager(this); - mWearManager.addNodeListener(this); - mWearManager.init(); - - addProfile(new WearServiceDiscoveryProfile(mWearManager, getServiceProvider())); - } - - @Override - public int onStartCommand(final Intent intent, final int flags, final int startId) { - if (intent != null) { - String action = intent.getAction(); - if (WearConst.DEVICE_TO_WEAR_NOTIFICATION_OPEN.equals(action)) { - String serviceId = intent.getStringExtra(WearConst.PARAM_DEVICEID); - int notificationId = intent.getIntExtra(WearConst.PARAM_NOTIFICATIONID, -1); - List events = EventManager.INSTANCE.getEventList(serviceId, - WearNotificationProfile.PROFILE_NAME, null, WearNotificationProfile.ATTRIBUTE_ON_CLICK); - synchronized (events) { - for (Event event : events) { - Intent msg = EventManager.createEventMessage(event); - msg.putExtra(WearNotificationProfile.PARAM_NOTIFICATION_ID, notificationId); - sendEvent(msg, event.getAccessToken()); - } - } - } else if (WearConst.DEVICE_TO_WEAR_NOTIFICATION_CLOSED.equals(action)) { - String serviceId = intent.getStringExtra(WearConst.PARAM_DEVICEID); - int notificationId = intent.getIntExtra(WearConst.PARAM_NOTIFICATIONID, -1); - List events = EventManager.INSTANCE.getEventList(serviceId, - WearNotificationProfile.PROFILE_NAME, null, WearNotificationProfile.ATTRIBUTE_ON_CLOSE); - synchronized (events) { - for (Event event : events) { - Intent msg = EventManager.createEventMessage(event); - msg.putExtra(WearNotificationProfile.PARAM_NOTIFICATION_ID, notificationId); - sendEvent(msg, event.getAccessToken()); - } - } - } - } - return super.onStartCommand(intent, flags, startId); - } - - @Override - public void onDestroy() { - super.onDestroy(); - if (mWearManager != null) { - mWearManager.destroy(); - mWearManager = null; - } - } - - @Override - protected SystemProfile getSystemProfile() { - return new WearSystemProfile(); - } - - @Override - public void onNodeConnected(final Node node) { - DConnectService service = WearService.getInstance(node, mWearManager); - service.setOnline(node.isNearby()); - getServiceProvider().addService(service); - getManager().sendWearData(); - } - - @Override - public void onNodeDisconnected(final Node node) { - String serviceId = WearUtils.createServiceId(node.getId()); - DConnectService service = getServiceProvider().getService(serviceId); - if (service != null) { - service.setOnline(false); - } else { - DConnectService addService = WearService.getInstance(node, mWearManager); - addService.setOnline(node.isNearby()); - getServiceProvider().addService(addService); - } - } - - /** - * Android Wear管理クラスを取得する. - * @return WearManagerのインスタンス - */ - public WearManager getManager() { - return mWearManager; - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearManager.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearManager.java deleted file mode 100644 index 379b492ecc..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearManager.java +++ /dev/null @@ -1,449 +0,0 @@ -package org.deviceconnect.android.deviceplugin.wear; - -import android.content.Context; -import android.net.Uri; -import androidx.annotation.NonNull; - -import com.google.android.gms.tasks.OnFailureListener; -import com.google.android.gms.tasks.OnSuccessListener; -import com.google.android.gms.tasks.Task; -import com.google.android.gms.tasks.Tasks; -import com.google.android.gms.wearable.Asset; -import com.google.android.gms.wearable.CapabilityClient; -import com.google.android.gms.wearable.CapabilityInfo; -import com.google.android.gms.wearable.DataItem; -import com.google.android.gms.wearable.MessageClient; -import com.google.android.gms.wearable.MessageEvent; -import com.google.android.gms.wearable.Node; -import com.google.android.gms.wearable.PutDataMapRequest; -import com.google.android.gms.wearable.PutDataRequest; -import com.google.android.gms.wearable.Wearable; - -import org.deviceconnect.android.deviceplugin.wear.profile.WearConst; - -import org.deviceconnect.android.logger.AndroidHandler; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.logging.Level; -import java.util.logging.Logger; -import java.util.logging.SimpleFormatter; - -/** - * Android Wearを管理するクラス. - * - * @author NTT DOCOMO, INC. - */ -public class WearManager { - - private final Logger mLogger = Logger.getLogger("dconnect.wear"); - - - /** - * コンテキスト. - */ - private final Context mContext; - - /** - * スレッド管理用クラス. - */ - private final ExecutorService mExecutorService = Executors.newSingleThreadExecutor(); - - /** - * メッセージイベントリスナー一覧. - */ - private final Map mOnMessageEventListeners - = new HashMap<>(); - - /** - * ノード検知リスナー一覧. - */ - private final List mNodeEventListeners = new ArrayList<>(); - - /** - * ノード情報のキャッシュ. - */ - private final Map mNodeCache = new HashMap(); - - /** - * コンストラクタ. - * - * @param context このクラスが属するコンテキスト - */ - public WearManager(final Context context) { - mContext = context; - if (BuildConfig.DEBUG) { - AndroidHandler handler = new AndroidHandler(mLogger.getName()); - handler.setFormatter(new SimpleFormatter()); - handler.setLevel(Level.ALL); - mLogger.addHandler(handler); - mLogger.setLevel(Level.ALL); - } else { - mLogger.setLevel(Level.OFF); - } - } - - - /** - * このクラスを初期化する. - */ - public void init() { - setCapabilityListener(); - setMessageListener(); - getNodes((results) -> { - if (results == null) { - return; - } - synchronized (mNodeCache) { - for (Node node : results) { - if (!mNodeCache.containsKey(node.getId())) { - mNodeCache.put(node.getId(), node); - mLogger.info("getNodes: name = " + node.getDisplayName() - + ", id = " + node.getId()); - notifyOnNodeConnected(node); - } - } - } - }); - } - - /** - * 接続しているAndroidWearにIDを送る. - */ - public void sendWearData() { - new Thread(() -> { - getNodes((results) -> { - if (results == null) { - return; - } - synchronized (mNodeCache) { - for (Node node : results) { - if (!mNodeCache.containsKey(node.getId())) { - mNodeCache.put(node.getId(), node); - mLogger.info("getNode: name = " + node.getDisplayName() - + ", id = " + node.getId()); - notifyOnNodeConnected(node); - - } - } - } - }); - for (String key : mNodeCache.keySet()) { - Node node = mNodeCache.get(key); - sendMessageToWear(node.getId(), WearConst.DEVICE_TO_WEAR_SET_ID, node.getId(), null); - mLogger.info("sendMessage: name = " + node.getDisplayName() - + ", id = " + node.getId()); - } - }).start(); - } - /** - * 後始末処理を行う. - */ - public void destroy() { - mExecutorService.shutdown(); - mNodeEventListeners.clear(); - mOnMessageEventListeners.clear(); - mNodeCache.clear(); - } - - /** - * メッセージイベントリスナーを追加する. - * - * @param path パス - * @param listener リスナー - */ - public void addMessageEventListener(final String path, final OnMessageEventListener listener) { - mOnMessageEventListeners.put(path, listener); - } - - /** - * ノード検知リスナーを追加する. - */ - public void addNodeListener(final NodeEventListener listener) { - synchronized (mNodeEventListeners) { - mNodeEventListeners.add(listener); - } - } - - /** - * Wearとの接続状況を検知するリスナー. - */ - private void setCapabilityListener() { - Wearable.getCapabilityClient(mContext).addListener((capabilityInfo) -> { - for (Node node : capabilityInfo.getNodes()) { - if (node.isNearby()) { - mLogger.info("isNearby=true: name = " + node.getDisplayName() - + ", id = " + node.getId()); - mNodeCache.put(node.getId(), node); - notifyOnNodeConnected(node); - } else { - mLogger.info("onPeerDisconnected: name = " + node.getDisplayName() - + ", id = " + node.getId()); - mNodeCache.remove(node.getId()); - notifyOnNodeDisconnected(node); - } - } - }, Uri.parse("wear://"), CapabilityClient.FILTER_REACHABLE); - } - - private void notifyOnNodeConnected(final Node node) { - synchronized (mNodeEventListeners) { - for (NodeEventListener listener : mNodeEventListeners) { - listener.onNodeConnected(node); - } - } - } - - private void notifyOnNodeDisconnected(final Node node) { - synchronized (mNodeEventListeners) { - for (NodeEventListener listener : mNodeEventListeners) { - listener.onNodeDisconnected(node); - } - } - } - - /** - * Android Wearのリスナーを設定する. - */ - private void setMessageListener() { - Wearable.getMessageClient(mContext).addListener((messageEvent) -> { - final String data = new String(messageEvent.getData()); - final String path = messageEvent.getPath(); - final String nodeId = messageEvent.getSourceNodeId(); - OnMessageEventListener listener = mOnMessageEventListeners.get(path); - if (listener != null) { - listener.onEvent(nodeId, data); - } - }); - } - - /** - * Wear nodeを取得. - * - * @param listener Wear node取得を通知するリスナー - */ - public void getNodes(final OnNodeResultListener listener) { - sendMessageToWear(() -> { - Task> nodeListTask = Wearable.getNodeClient(mContext).getConnectedNodes(); - List nodes = null; - try { - nodes = Tasks.await(nodeListTask); - } catch (ExecutionException exception) { - mLogger.warning("Task failed: " + exception); - } catch (InterruptedException exception) { - mLogger.warning("Interrupt occurred: " + exception); - } - if (listener != null) { - listener.onResult(nodes); - } - }); - } - - /** - * メッセージをWearに送信する. - * - * @param dest 送信先のWearのnodeId - * @param action メッセージのアクション - * @param message メッセージ - * @param listener メッセージを送信した結果を通知するリスナー - */ - public void sendMessageToWear(final String dest, final String action, final String message, - final OnMessageResultListener listener) { - getNodes((results) -> { - for (Node node : results) { - if (node.getId().contains(dest)) { - Task sendMessageTask = - Wearable.getMessageClient(mContext).sendMessage(node.getId(), action, message.getBytes()); - sendMessageTask.addOnSuccessListener((integer) -> { - if (listener != null) { - listener.onResult(); - } - }); - - sendMessageTask.addOnFailureListener((e) -> { - if (listener != null) { - listener.onError(); - } - }); - } - } - }); - } - - /** - * PutDataRequestを作成する. - * - * @param nodeId ノードID - * @param requestId リクエストID - * @param data requestに格納する画像 - * @param x x座標 - * @param y y座標 - * @param mode 描画モード - * @return PutDataRequestのインスタンス - */ - private PutDataRequest createPutDataRequest(final String nodeId, final String requestId, final byte[] data, - final int x, final int y, final int mode) { - Asset asset = Asset.createFromBytes(data); - PutDataMapRequest dataMap = PutDataMapRequest.create(WearConst.PATH_CANVAS + "/" + nodeId + "/" + requestId); - dataMap.getDataMap().putAsset(WearConst.PARAM_BITMAP, asset); - dataMap.getDataMap().putInt(WearConst.PARAM_X, x); - dataMap.getDataMap().putInt(WearConst.PARAM_Y, y); - dataMap.getDataMap().putInt(WearConst.PARAM_MODE, mode); - dataMap.getDataMap().putLong(WearConst.TIMESTAMP, - System.currentTimeMillis()); - return dataMap.asPutDataRequest(); - } - - /** - * 画像データを送信する. - * - * @param nodeId ノードID - * @param requestId リクエストID - * @param data 画像データ - * @param x x座標 - * @param y y座標 - * @param mode 描画モード - * @param listener 送信結果を通知するリスナー - */ - public void sendImageData(final String nodeId, final String requestId, - final byte[] data, final int x, final int y, - final int mode, final OnDataItemResultListener listener) { - // リクエストIDとともに画像送信 - sendMessageToWear(() -> { - final PutDataRequest request = createPutDataRequest(nodeId, requestId, data, x, y, mode); - if (request == null) { - if (listener != null) { - listener.onError(); - } - } else { - request.setUrgent(); - Task dataItemTask = Wearable.getDataClient(mContext).putDataItem(request); - dataItemTask.addOnSuccessListener((dataItem) -> { - if (listener != null) { - listener.onResult(dataItem); - } - }); - dataItemTask.addOnFailureListener((e) -> { - if (listener != null) { - listener.onError(); - } - }); - } - }); - } - - /** - * Wearにメッセージを送ります. - * - * @param run 送るメッセージを実行するrunnable - */ - private void sendMessageToWear(final Runnable run) { - mExecutorService.execute(run); - } - - public void getLocalNodeId(final String serviceId, final OnLocalNodeListener listener) { - getNodes((results) -> { - for (Node node : results) { - if (node.getId().equals(serviceId)) { - if (listener != null) { - listener.onResult(node); - } - return; - } - } - if (listener != null) { - listener.onError(); - } - }); - } - - /** - * ノード検知イベントリスナー. - */ - public interface NodeEventListener { - - /** - * ノードとの接続イベント. - * @param node ノード - */ - void onNodeConnected(Node node); - - /** - * ノードとの接続の切断イベント. - * @param node ノード - */ - void onNodeDisconnected(Node node); - - } - - /** - * Nodeの検索結果を通知するリスナー. - */ - public interface OnNodeResultListener { - /** - * 結果を通知する. - * - * @param results 検索結果 - */ - void onResult(List results); - - } - - public interface OnLocalNodeListener { - - void onResult(Node localNode); - - void onError(); - } - - /** - * メッセージ送信の結果を通知するリスナー. - */ - public interface OnMessageResultListener { - /** - * メッセージ送信結果を通知する. - * - */ - void onResult(); - - /** - * エラーが発生したことを通知する. - */ - void onError(); - } - - /** - * データ送信の結果を通知するリスナー. - */ - public interface OnDataItemResultListener { - /** - * データ送信の結果を通知する. - * - * @param result 結果 - */ - void onResult(DataItem result); - - /** - * エラーが発生したことを通知する. - */ - void onError(); - } - - /** - * イベント受信を通知するリスナー. - */ - public interface OnMessageEventListener { - /** - * 受信したイベントを通知する. - * - * @param nodeId ノートID - * @param message イベントメッセージ - */ - void onEvent(String nodeId, String message); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/package-info.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/package-info.java deleted file mode 100644 index f3cf053010..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/package-info.java +++ /dev/null @@ -1,12 +0,0 @@ -/* - org.deviceconnect.android.deviceplugin.wear - Copyright (c) 2014 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ - -/** - * Android wear device plugin package. - */ -package org.deviceconnect.android.deviceplugin.wear; - diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearCanvasProfile.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearCanvasProfile.java deleted file mode 100644 index ce5246f34c..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearCanvasProfile.java +++ /dev/null @@ -1,325 +0,0 @@ -/* -WearCanvasProfile.java -Copyright (c) 2015 NTT DOCOMO,INC. -Released under the MIT license -http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.wear.profile; - -import android.content.Intent; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; - -import com.google.android.gms.wearable.DataItem; -import com.google.android.gms.wearable.Node; - -import org.deviceconnect.android.deviceplugin.wear.WearDeviceService; -import org.deviceconnect.android.deviceplugin.wear.WearManager; -import org.deviceconnect.android.message.MessageUtils; -import org.deviceconnect.android.profile.CanvasProfile; -import org.deviceconnect.android.profile.api.DConnectApi; -import org.deviceconnect.android.profile.api.DeleteApi; -import org.deviceconnect.android.profile.api.PostApi; -import org.deviceconnect.message.DConnectMessage; - -import java.io.ByteArrayOutputStream; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; -import java.util.logging.Logger; - -/** - * Android Wear用のCanvasプロファイル. - * - * @author NTT DOCOMO, INC. - */ -public class WearCanvasProfile extends CanvasProfile { - - /** - * Android wearは1MB以上の画像は送信できない. - */ - private static final int LIMIT_DATA_SIZE = 1024 * 1024; - - private final Logger mLogger = Logger.getLogger("dconnect.wear"); - - private ExecutorService mImageService = Executors.newSingleThreadExecutor(); - - private static final Map mRequestMap = new HashMap<>(); - - private final WearManager mWearManager; - - public WearCanvasProfile(final WearManager mgr) { - mWearManager = mgr; - mgr.addMessageEventListener(WearConst.WEAR_TO_DEVICE_CANVAS_RESULT, - this::onCanvasResponse); - addApi(mPostDrawImage); - addApi(mDeleteDrawImage); - } - - private DConnectApi mPostDrawImage = new PostApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_DRAW_IMAGE; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - final String nodeId = WearUtils.getNodeId(getServiceID(request)); - final byte[] data = getData(request); - final double x = getX(request); - final double y = getY(request); - final String mode = getMode(request); - String mimeType = getMIMEType(request); - if (mimeType != null && !mimeType.contains("image")) { - MessageUtils.setInvalidRequestParameterError(response, - "Unsupported mimeType: " + mimeType); - return true; - } - - if (data == null) { - mImageService.execute(() -> { - String uri = getURI(request); - byte[] result = getData(uri); - if (result == null) { - MessageUtils.setInvalidRequestParameterError(response, "could not get image from uri."); - sendResponse(response); - return; - } - drawImage(response, nodeId, result, x, y, mode); - }); - return false; - } else { - drawImage(response, nodeId, data, x, y, mode); - return false; - } - } - }; - - private void drawImage(final Intent response, final String nodeId, - final byte[] data, final double x, final double y, final String mode) { - mWearManager.getLocalNodeId(nodeId, new WearManager.OnLocalNodeListener() { - - @Override - public void onResult(final Node localNode) { - final String localNodeId = localNode.getId(); - if (data.length > LIMIT_DATA_SIZE) { - MessageUtils.setInvalidRequestParameterError(response, "data size more than 1MB"); - sendResponse(response); - return; - } - Mode m = Mode.getInstance(mode); - if ((mode != null && mode.length() > 0) && m == null) { - MessageUtils.setInvalidRequestParameterError(response, "mode is invalid"); - sendResponse(response); - return; - } - - //for check binary - Bitmap bitmap; - try { - bitmap = getBitmap(data); - } catch (OutOfMemoryError e) { - MessageUtils.setInvalidRequestParameterError(response, "Too large bitmap for host device."); - sendResponse(response); - return; - } - if (bitmap == null) { - MessageUtils.setInvalidRequestParameterError(response, "format invalid"); - sendResponse(response); - return; - } - int mm = WearUtils.convertMode(m); - - //Adjust image format and compress - ByteArrayOutputStream o = new ByteArrayOutputStream(); - bitmap.compress(Bitmap.CompressFormat.PNG, 50, o); - final byte[] bitmapData = o.toByteArray(); - - final String requestId = UUID.randomUUID().toString(); - final DrawImageRequest wearRequest = createCanvasRequest(localNodeId, requestId); - getManager().sendImageData(localNodeId, requestId, bitmapData, (int) x, (int) y, mm, new WearManager.OnDataItemResultListener() { - @Override - public void onResult(final DataItem result) { - new Thread(() -> { - if (result != null) { - try { - DrawImageResponse wearResponse = wearRequest.await(); - if (wearResponse.isSuccess()) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - int errorCode = wearResponse.getErrorCode(); - String errorMessage = wearResponse.getErrorMessage(); - MessageUtils.setError(response, errorCode, errorMessage); - } - } catch (Exception e) { - MessageUtils.setUnknownError(response, e.getLocalizedMessage()); - } - } else { - MessageUtils.setIllegalDeviceStateError(response); - } - sendResponse(response); - }).start(); - } - - @Override - public void onError() { - MessageUtils.setIllegalDeviceStateError(response); - sendResponse(response); - } - }); - } - - @Override - public void onError() { - MessageUtils.setUnknownError(response, "Failed to get Local Node ID."); - } - }); - } - - private final DConnectApi mDeleteDrawImage = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_DRAW_IMAGE; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String nodeId = WearUtils.getNodeId(getServiceID(request)); - getManager().sendMessageToWear(nodeId, WearConst.DEVICE_TO_WEAR_CANCAS_DELETE_IMAGE, - "", new WearManager.OnMessageResultListener() { - @Override - public void onResult() { - setResult(response, DConnectMessage.RESULT_OK); - sendResponse(response); - } - - @Override - public void onError() { - MessageUtils.setIllegalDeviceStateError(response); - sendResponse(response); - } - }); - return false; - } - }; - - /** - * データを画像に変換します. - * - * @param data 画像データ - * @return Bitmap - */ - private Bitmap getBitmap(final byte[] data) { - return BitmapFactory.decodeByteArray(data, 0, data.length); - } - - /** - * Android Wear管理クラスを取得する. - * - * @return WearManager管理クラス - */ - private WearManager getManager() { - return ((WearDeviceService) getContext()).getManager(); - } - - private DrawImageRequest createCanvasRequest(final String nodeId, final String requestId) { - DrawImageRequest request = new DrawImageRequest(nodeId); - mRequestMap.put(requestId, request); - return request; - } - - private void onCanvasResponse(final String nodeId, final String message) { - String[] items = message.split(","); - String requestId = items[0]; - String result = items[1]; - DrawImageRequest request = mRequestMap.get(requestId); - if (request == null) { - mLogger.warning("onCanvasImageResponse: request is not found: nodeId = " + nodeId); - return; - } - if (!request.getNodeId().equals(nodeId)) { - mLogger.warning("onCanvasImageResponse: nodeId are not matched for request: requestId = " + requestId); - return; - } - request.receive(result); - mRequestMap.remove(requestId); - } - - private static class DrawImageRequest { - - private CountDownLatch mLock = new CountDownLatch(1); - - private DrawImageResponse mResponse; - - private final String mNodeId; - - public DrawImageRequest(final String nodeId) { - mNodeId = nodeId; - } - - public DrawImageResponse await() throws InterruptedException, ResponseTimeoutException { - mLock.await(30, TimeUnit.SECONDS); - if (!hasResponse()) { - throw new ResponseTimeoutException(); - } - return mResponse; - } - - public void receive(final String message) { - mResponse = new DrawImageResponse(message); - mLock.countDown(); - } - - public boolean hasResponse() { - return mResponse != null; - } - - public String getNodeId() { - return mNodeId; - } - } - - private static class DrawImageResponse { - - private final String mResult; - private final int mErrorCode; - private final String mErrorMessage; - - public DrawImageResponse(final String message) { - mResult = message; - if (WearConst.RESULT_ERROR_TOO_LARGE_BITMAP.equals(message)) { - mErrorCode = DConnectMessage.ErrorCode.INVALID_REQUEST_PARAMETER.getCode(); - mErrorMessage = "Too large bitmap for watch."; - } else if (WearConst.RESULT_ERROR_CONNECTION_FAILURE.equals(message)) { - mErrorCode = DConnectMessage.ErrorCode.ILLEGAL_DEVICE_STATE.getCode(); - mErrorMessage = "Connection failure."; - } else if (WearConst.RESULT_ERROR_NOT_SUPPORTED_FORMAT.equals(message)) { - mErrorCode = DConnectMessage.ErrorCode.INVALID_REQUEST_PARAMETER.getCode(); - mErrorMessage = "Not supported format."; - } else { - mErrorCode = 0; - mErrorMessage = ""; - } - } - - public boolean isSuccess() { - return WearConst.RESULT_SUCCESS.equals(mResult); - } - - public int getErrorCode() { - return mErrorCode; - } - - public String getErrorMessage() { - return mErrorMessage; - } - } - - private static class ResponseTimeoutException extends TimeoutException { - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearConst.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearConst.java deleted file mode 100755 index 502ec70057..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearConst.java +++ /dev/null @@ -1,260 +0,0 @@ -/* -WearConst.java -Copyright (c) 2014 NTT DOCOMO,INC. -Released under the MIT license -http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.wear.profile; - -/** - * Wear Const. - * - * @author NTT DOCOMO, INC. - */ -public final class WearConst { - - /** Vibration start. */ - public static final String DEVICE_TO_WEAR_VIBRATION_RUN - = "org.deviceconnect.wear.vibration.run"; - - /** Vibration stop. */ - public static final String DEVICE_TO_WEAR_VIBRATION_DEL - = "org.deviceconnect.wear.vibration.del"; - - /** When Action is opened. */ - public static final String DEVICE_TO_WEAR_NOTIFICATION_OPEN - = "org.deviceconnect.wear.notification.open"; - - /** When Action is closed. */ - public static final String DEVICE_TO_WEAR_NOTIFICATION_CLOSED - = "org.deviceconnect.wear.notification.closed"; - - /** When DeviceOrientation register is opened. */ - public static final String DEVICE_TO_WEAR_DEIVCEORIENTATION_REGISTER - = "org.deviceconnect.wear.deivceorienatation.regist"; - - /** When DeviceOrientation unregister is opened. */ - public static final String DEVICE_TO_WEAR_DEIVCEORIENTATION_UNREGISTER - = "org.deviceconnect.wear.deivceorienatation.unregist"; - - /** When Canvas deleted. */ - public static final String DEVICE_TO_WEAR_CANCAS_DELETE_IMAGE - = "org.deviceconnect.wear.canvas.delete"; - - /** Wear to Android. */ - public static final String WEAR_TO_DEVICE_DEIVCEORIENTATION_DATA - = "org.deviceconnect.wear.deivceorienatation.data"; - - /** Register Key Event (ondown). */ - public static final String DEVICE_TO_WEAR_KEYEVENT_ONDOWN_REGISTER - = "org.deviceconnect.wear.keyevent.ondown.regist"; - - /** Register Key Event (onup). */ - public static final String DEVICE_TO_WEAR_KEYEVENT_ONUP_REGISTER = "org.deviceconnect.wear.keyevent.onup.regist"; - /** Register Key Event (onkeychange). */ - public static final String DEVICE_TO_WEAR_KEYEVENT_ONKEYCHANGE_REGISTER - = "org.deviceconnect.wear.keyevent.onkeychange.regist"; - - /** Remove Key Event (ondown). */ - public static final String DEVICE_TO_WEAR_KEYEVENT_ONDOWN_UNREGISTER - = "org.deviceconnect.wear.keyevent.ondown.unregist"; - - /** Remove Key Event (onup). */ - public static final String DEVICE_TO_WEAR_KEYEVENT_ONUP_UNREGISTER - = "org.deviceconnect.wear.keyevent.onup.unregist"; - /** Remove Key Event (onkeychange). */ - public static final String DEVICE_TO_WEAR_KEYEVENT_ONKEYCHANGE_UNREGISTER - = "org.deviceconnect.wear.keyevent.onkeychange.unregist"; - /** Wear to Android. */ - public static final String WEAR_TO_DEVICE_KEYEVENT_DATA = "org.deviceconnect.wear.keyevent.data"; - - /** Key Event (down). */ - public static final String PARAM_KEYEVENT_DOWN = "down"; - - /** Key Event (up). */ - public static final String PARAM_KEYEVENT_UP = "up"; - - /** ServiceId. */ - public static final String PARAM_DEVICEID = "serviceId"; - - /** NotificationId. */ - public static final String PARAM_NOTIFICATIONID = "notificationId"; - - /** - * サービスID. - */ - public static final String SERVICE_ID = "Wear"; - - /** - * デバイス名: {@value}. - */ - public static final String DEVICE_NAME = "Android Wear"; - - /** - * bitmapを受け渡しするためのキー. - */ - public static final String PARAM_BITMAP = "bitmap"; - - /** - * x座標を受け渡しするためのキー. - */ - public static final String PARAM_X = "x"; - - /** - * y座標を受け渡しするためのキー. - */ - public static final String PARAM_Y = "y"; - - /** - * 描画モードを受け渡しするためのキー. - */ - public static final String PARAM_MODE = "mode"; - - /** - * Timestamp. - */ - public static final String TIMESTAMP = "timestamp"; - /** - * 画像を送信するためのパスを定義する. - */ - public static final String PATH_CANVAS = "/canvas/profile"; - - /** - * 通常の描画モード. - */ - public static final int MODE_NORMAL = 0; - - /** - * 拡大の描画モード. - */ - public static final int MODE_SCALES = 1; - - /** - * リピート描画モード. - */ - public static final int MODE_FILLS = 2; - - /** Wear to Android. */ - public static final String WEAR_TO_DEVICE_CANVAS_RESULT = "org.deviceconnect.wear.canvas.result"; - - /** リクエストID. */ - public static final String PARAM_REQUEST_ID = "requestId"; - - /** データ変更イベントの送信元(Android端末)を特定するためのID. */ - public static final String PARAM_SOURCE_ID = "sourceId"; - - /** メッセージの送信先(Android端末)を特定するためのID. */ - public static final String PARAM_DESTINATION_ID = "destinationId"; - - /** 成功. */ - public static final String RESULT_SUCCESS = "success"; - - /** エラー: ビットマップサイズが大きすぎる. */ - public static final String RESULT_ERROR_TOO_LARGE_BITMAP = "errorTooLargeBitmap"; - - /** エラー: Android端末との接続に失敗. */ - public static final String RESULT_ERROR_CONNECTION_FAILURE = "errorConnectionFailure"; - - /** エラー: サポートしていない画像形式. */ - public static final String RESULT_ERROR_NOT_SUPPORTED_FORMAT = "errorNotSupportedFormat"; - - /** Register Touch (ontouch). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCH_REGISTER - = "org.deviceconnect.wear.touch.ontouch.regist"; - - /** Register Touch (ontouchstart). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCHSTART_REGISTER - = "org.deviceconnect.wear.touch.ontouchstart.regist"; - - /** Register Touch (ontouchend). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCHEND_REGISTER - = "org.deviceconnect.wear.touch.ontouchend.regist"; - - /** Register Touch (ondoubletap). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONDOUBLETAP_REGISTER - = "org.deviceconnect.wear.touch.ondoubletap.regist"; - - /** Register Touch (ontouchmove). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCHMOVE_REGISTER - = "org.deviceconnect.wear.touch.ontouchmove.regist"; - - /** Register Touch (ontouchcancel). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCHCANCEL_REGISTER - = "org.deviceconnect.wear.touch.ontouchcancel.regist"; - /** Register Touch (ontouchchange). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCHCHANGE_REGISTER - = "org.deviceconnect.wear.touch.ontouchchange.regist"; - - /** Remove Touch (ontouch). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCH_UNREGISTER - = "org.deviceconnect.wear.touch.ontouch.unregist"; - - /** Remove Touch (ontouchstart). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCHSTART_UNREGISTER - = "org.deviceconnect.wear.touch.ontouchstart.unregist"; - - /** Remove Touch (ontouchend). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCHEND_UNREGISTER - = "org.deviceconnect.wear.touch.ontouchend.unregist"; - - /** Remove Touch (ondoubletap). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONDOUBLETAP_UNREGISTER - = "org.deviceconnect.wear.touch.ondoubletap.unregist"; - - /** Remove Touch (ontouchmove). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCHMOVE_UNREGISTER - = "org.deviceconnect.wear.touch.ontouchmove.unregist"; - - /** Remove Touch (ontouchcancel). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCHCANCEL_UNREGISTER - = "org.deviceconnect.wear.touch.ontouchcancel.unregist"; - /** Remove Touch (ontouchchange). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCHCHANGE_UNREGISTER - = "org.deviceconnect.wear.touch.ontouchchange.unregist"; - /** Wear to Android. */ - public static final String WEAR_TO_DEVICE_TOUCH_DATA = "org.deviceconnect.wear.touch.data"; - /** Set wear id.. */ - public static final String DEVICE_TO_WEAR_SET_ID - = "org.deviceconnect.wear.id.set"; - - /** Touch (touch). */ - public static final String PARAM_TOUCH_TOUCH = "touch"; - - /** Touch (touchstart). */ - public static final String PARAM_TOUCH_TOUCHSTART = "touchstart"; - - /** Touch (touchend). */ - public static final String PARAM_TOUCH_TOUCHEND = "touchend"; - - /** Touch (doubletap). */ - public static final String PARAM_TOUCH_DOUBLETAP = "doubletap"; - - /** Touch (touchmove). */ - public static final String PARAM_TOUCH_TOUCHMOVE = "touchmove"; - - /** Touch (touchcancel). */ - public static final String PARAM_TOUCH_TOUCHCANCEL = "touchcancel"; - /** - * Attribute: {@value} . - */ - public static final String ATTRIBUTE_ON_TOUCH_CHANGE = "onTouchChange"; - /** Touch State start. */ - public static final String STATE_START = "start"; - /** Touch State end. */ - public static final String STATE_END = "end"; - /** Touch State double tap. */ - public static final String STATE_DOUBLE_TAP = "doubletap"; - /** Touch State move. */ - public static final String STATE_MOVE = "move"; - /** Touch State cancel. */ - public static final String STATE_CANCEL = "cancel"; - /** KeyEvent State move. */ - public static final String STATE_UP = "up"; - /** KeyEvent State cancel. */ - public static final String STATE_DOWN = "down"; - /** - * Constructor. - */ - private WearConst() { - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearDeviceOrientationProfile.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearDeviceOrientationProfile.java deleted file mode 100755 index 83c1b08504..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearDeviceOrientationProfile.java +++ /dev/null @@ -1,279 +0,0 @@ -/* - WearDeviceOrientationProfile.java - Copyright (c) 2014 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.wear.profile; - -import android.content.Intent; -import android.os.Bundle; - -import org.deviceconnect.android.deviceplugin.wear.WearDeviceService; -import org.deviceconnect.android.deviceplugin.wear.WearManager; -import org.deviceconnect.android.deviceplugin.wear.WearManager.OnMessageEventListener; -import org.deviceconnect.android.deviceplugin.wear.WearManager.OnMessageResultListener; -import org.deviceconnect.android.event.Event; -import org.deviceconnect.android.event.EventError; -import org.deviceconnect.android.event.EventManager; -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.ArrayList; -import java.util.Collections; -import java.util.List; - -/** - * DeviceOrientation Profile. - * - * @author NTT DOCOMO, INC. - */ -public class WearDeviceOrientationProfile extends DeviceOrientationProfile { - - /** - * 通知先のリスナーを保持するリスト. - */ - private final List mListeners = - Collections.synchronizedList(new ArrayList()); - - /** - * Android Wearからのイベントを受け取るリスナー. - */ - private OnMessageEventListener mListener = new OnMessageEventListener() { - @Override - public void onEvent(final String nodeId, final String message) { - synchronized (mListeners) { - for (OnMessageEventListener l : mListeners) { - l.onEvent(WearUtils.createServiceId(nodeId), message); - } - } - } - }; - - /** - * コンストラクタ. - * @param mgr Android Wear管理クラス - */ - public WearDeviceOrientationProfile(final WearManager mgr) { - mgr.addMessageEventListener(WearConst.WEAR_TO_DEVICE_DEIVCEORIENTATION_DATA, mListener); - mListeners.add(new OnMessageEventListener() { - @Override - public void onEvent(final String nodeId, final String message) { - sendMessageToEvent(nodeId, message); - } - }); - addApi(mGetOnDeviceOrientation); - addApi(mPutOnDeviceOrientation); - addApi(mDeleteOnDeviceOrientation); - } - - 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) { - final WearDeviceService service = (WearDeviceService) getContext(); - final String serviceId = WearUtils.getNodeId(getServiceID(request)); - final OnMessageEventListener l = new OnMessageEventListener() { - @Override - public void onEvent(final String nodeId, final String message) { - Bundle orientation = createOrientation(message); - setResult(response, DConnectMessage.RESULT_OK); - setOrientation(response, orientation); - service.sendResponse(response); - removeListener(this); - if (isEmptyEvent(serviceId)) { - stopSensor(serviceId); - } - } - }; - addListener(l); - - getManager().sendMessageToWear(serviceId, - WearConst.DEVICE_TO_WEAR_DEIVCEORIENTATION_REGISTER, - "", new OnMessageResultListener() { - @Override - public void onResult() { - } - @Override - public void onError() { - removeListener(l); - MessageUtils.setIllegalDeviceStateError(response); - service.sendResponse(response); - } - }); - return false; - } - }; - - 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 nodeId = WearUtils.getNodeId(getServiceID(request)); - getManager().sendMessageToWear(nodeId, - WearConst.DEVICE_TO_WEAR_DEIVCEORIENTATION_REGISTER, - "", new OnMessageResultListener() { - @Override - public void onResult() { - EventError error = EventManager.INSTANCE.addEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - setResult(response, DConnectMessage.RESULT_ERROR); - } - sendResponse(response); - } - @Override - public void onError() { - MessageUtils.setIllegalDeviceStateError(response); - sendResponse(response); - } - }); - return false; - } - }; - - 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 nodeId = WearUtils.getNodeId(getServiceID(request)); - stopSensor(nodeId); - - // Event release. - EventError error = EventManager.INSTANCE.removeEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - setResult(response, DConnectMessage.RESULT_ERROR); - } - return true; - } - }; - - /** - * イベントの配送先の空状態を取得する. - * @param nodeId wearのID - * @return 空の場合はtrue、それ以外はfalse - */ - private boolean isEmptyEvent(final String nodeId) { - List events = EventManager.INSTANCE.getEventList( - nodeId, PROFILE_NAME, null, ATTRIBUTE_ON_DEVICE_ORIENTATION); - return events == null || events.size() == 0; - } - - /** - * 指定されたWearのセンサーを停止する. - * @param nodeId wearのID - */ - private void stopSensor(final String nodeId) { - getManager().sendMessageToWear(nodeId, - WearConst.DEVICE_TO_WEAR_DEIVCEORIENTATION_UNREGISTER, - "", new OnMessageResultListener() { - @Override - public void onResult() { - } - @Override - public void onError() { - } - }); - } - - /** - * リスナーを追加する. - * @param l 追加するリスナー - */ - private void addListener(final OnMessageEventListener l) { - if (!mListeners.contains(l)) { - mListeners.add(l); - } - } - - /** - * リスナーを削除する. - * @param l 削除するリスナー - */ - private void removeListener(final OnMessageEventListener l) { - mListeners.remove(l); - } - - /** - * Send a message to the registration event. - * - * @param nodeId node id - * @param data Received Strings. - */ - private void sendMessageToEvent(final String nodeId, final String data) { - Bundle orientation = createOrientation(data); - - List events = EventManager.INSTANCE.getEventList( - nodeId, PROFILE_NAME, null, ATTRIBUTE_ON_DEVICE_ORIENTATION); - synchronized (events) { - for (Event event : events) { - Intent intent = EventManager.createEventMessage(event); - intent.putExtra(DeviceOrientationProfile.PARAM_ORIENTATION, orientation); - ((WearDeviceService) getContext()).sendEvent(intent, event.getAccessToken()); - } - } - } - - /** - * 受信したデータからOrientationのデータを作成する. - * @param data 受信したデータ - * @return Orientationのデータ - */ - private Bundle createOrientation(final String data) { - String[] mDataArray = data.split(",", 0); - - Bundle orientation = new Bundle(); - Bundle a1 = new Bundle(); - a1.putDouble(DeviceOrientationProfile.PARAM_X, 0.0); - a1.putDouble(DeviceOrientationProfile.PARAM_Y, 0.0); - a1.putDouble(DeviceOrientationProfile.PARAM_Z, 0.0); - - Bundle a2 = new Bundle(); - a2.putDouble(DeviceOrientationProfile.PARAM_X, Double.parseDouble(mDataArray[0])); - a2.putDouble(DeviceOrientationProfile.PARAM_Y, Double.parseDouble(mDataArray[1])); - a2.putDouble(DeviceOrientationProfile.PARAM_Z, Double.parseDouble(mDataArray[2])); - - // Conversion the unit of angular speed from rad/s to degree/s. - double alpha = Math.toDegrees(Double.parseDouble(mDataArray[3])); - double beta = Math.toDegrees(Double.parseDouble(mDataArray[4])); - double gamma = Math.toDegrees(Double.parseDouble(mDataArray[5])); - Bundle r = new Bundle(); - r.putDouble(DeviceOrientationProfile.PARAM_ALPHA, alpha); - r.putDouble(DeviceOrientationProfile.PARAM_BETA, beta); - r.putDouble(DeviceOrientationProfile.PARAM_GAMMA, gamma); - orientation.putBundle(DeviceOrientationProfile.PARAM_ACCELERATION, a1); - orientation.putBundle(DeviceOrientationProfile.PARAM_ACCELERATION_INCLUDING_GRAVITY, a2); - orientation.putBundle(DeviceOrientationProfile.PARAM_ROTATION_RATE, r); - orientation.putLong(DeviceOrientationProfile.PARAM_INTERVAL, 0); - setInterval(orientation, Integer.parseInt(mDataArray[6])); - return orientation; - } - - /** - * Android Wear管理クラスを取得する. - * @return WearManager管理クラス - */ - private WearManager getManager() { - return ((WearDeviceService) getContext()).getManager(); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearKeyEventProfile.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearKeyEventProfile.java deleted file mode 100644 index 8c2ccf7ff2..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearKeyEventProfile.java +++ /dev/null @@ -1,442 +0,0 @@ -/* - WearKeyEventProfile.java - Copyright (c) 2015 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.wear.profile; - -import android.content.Intent; -import android.os.Bundle; - -import org.deviceconnect.android.deviceplugin.wear.BuildConfig; -import org.deviceconnect.android.deviceplugin.wear.WearDeviceService; -import org.deviceconnect.android.deviceplugin.wear.WearManager; -import org.deviceconnect.android.deviceplugin.wear.WearManager.OnMessageEventListener; -import org.deviceconnect.android.deviceplugin.wear.WearManager.OnMessageResultListener; -import org.deviceconnect.android.event.Event; -import org.deviceconnect.android.event.EventError; -import org.deviceconnect.android.event.EventManager; -import org.deviceconnect.android.message.MessageUtils; -import org.deviceconnect.android.profile.KeyEventProfile; -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; - -import static org.deviceconnect.android.deviceplugin.wear.profile.WearConst.STATE_DOWN; -import static org.deviceconnect.android.deviceplugin.wear.profile.WearConst.STATE_UP; - -/** - * Key Event Profile. - * - * @author NTT DOCOMO, INC. - */ -public class WearKeyEventProfile extends KeyEventProfile { - - /** Tag. */ - private static final String TAG = "WEAR"; - - /** KeyEvent profile onDown cache. */ - Bundle mOnDownCache = null; - - /** KeyEvent profile onDown cache time. */ - long mOnDownCacheTime = 0; - - /** KeyEvent profile onDown cache. */ - Bundle mOnUpCache = null; - - /** KeyEvent profile onUp cache time. */ - long mOnUpCacheTime = 0; - /** KeyEvent profile onKeyChange cache. */ - Bundle mOnKeyChangeCache = null; - /** KeyEvent profile onKeyChange cache time. */ - long mOnKeyChangeCacheTime = 0; - /** KeyEvent profile cache retention time (mSec). */ - static final long CACHE_RETENTION_TIME = 10000; - /** - * Attribute: {@value} . - */ - public static final String ATTRIBUTE_ON_KEY_CHANGE = "onKeyChange"; - /** - * Get KeyEvent cache data. - * - * @param attr Attribute. - * @return KeyEvent cache data. - */ - public Bundle getKeyEventCache(final String attr) { - long lCurrentTime = System.currentTimeMillis(); - if (attr.equalsIgnoreCase(KeyEventProfile.ATTRIBUTE_ON_DOWN)) { - if (lCurrentTime - mOnDownCacheTime <= CACHE_RETENTION_TIME) { - return mOnDownCache; - } else { - return null; - } - } else if (attr.equalsIgnoreCase(KeyEventProfile.ATTRIBUTE_ON_UP)) { - if (lCurrentTime - mOnUpCacheTime <= CACHE_RETENTION_TIME) { - return mOnUpCache; - } else { - return null; - } - } else if (attr.equalsIgnoreCase(ATTRIBUTE_ON_KEY_CHANGE)) { - if (lCurrentTime - mOnKeyChangeCacheTime <= CACHE_RETENTION_TIME) { - return mOnKeyChangeCache; - } else { - return null; - } - } else { - return null; - } - } - - /** - * Set KeyEvent data to cache. - * - * @param attr Attribute. - * @param keyeventData Touch data. - */ - public void setKeyEventCache(final String attr, final Bundle keyeventData) { - long lCurrentTime = System.currentTimeMillis(); - if (attr.equalsIgnoreCase(KeyEventProfile.ATTRIBUTE_ON_DOWN)) { - mOnDownCache = keyeventData; - mOnDownCacheTime = lCurrentTime; - } else if (attr.equalsIgnoreCase(KeyEventProfile.ATTRIBUTE_ON_UP)) { - mOnUpCache = keyeventData; - mOnUpCacheTime = lCurrentTime; - } else if (attr.equalsIgnoreCase(ATTRIBUTE_ON_KEY_CHANGE)) { - mOnKeyChangeCache = keyeventData; - mOnKeyChangeCacheTime = lCurrentTime; - } - } - - /** - * Receive event listener for Android Wear. - */ - private OnMessageEventListener mListener = new OnMessageEventListener() { - @Override - public void onEvent(final String nodeId, final String message) { - sendMessageToEvent(WearUtils.createServiceId(nodeId), message); - } - }; - - /** - * Constructor. - * - * @param mgr Android Wear management class. - */ - public WearKeyEventProfile(final WearManager mgr) { - mgr.addMessageEventListener(WearConst.WEAR_TO_DEVICE_KEYEVENT_DATA, mListener); - addApi(mGetOnKeyChange); - addApi(mGetOnDown); - addApi(mGetOnUp); - addApi(mPutOnKeyChange); - addApi(mPutOnDown); - addApi(mPutOnUp); - addApi(mDeleteOnKeyChange); - addApi(mDeleteOnDown); - addApi(mDeleteOnUp); - } - - private final DConnectApi mGetOnDown = new GetApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_DOWN; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - Bundle keyevent = getKeyEventCache(KeyEventProfile.ATTRIBUTE_ON_DOWN); - if (keyevent == null) { - response.putExtra(KeyEventProfile.PARAM_KEYEVENT, ""); - } else { - response.putExtra(KeyEventProfile.PARAM_KEYEVENT, keyevent); - } - setResult(response, DConnectMessage.RESULT_OK); - return true; - } - }; - - private final DConnectApi mGetOnUp = new GetApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_UP; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - Bundle keyEvent = getKeyEventCache(KeyEventProfile.ATTRIBUTE_ON_UP); - if (keyEvent == null) { - response.putExtra(KeyEventProfile.PARAM_KEYEVENT, ""); - } else { - response.putExtra(KeyEventProfile.PARAM_KEYEVENT, keyEvent); - } - setResult(response, DConnectMessage.RESULT_OK); - return true; - } - }; - private final DConnectApi mGetOnKeyChange = new GetApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_KEY_CHANGE; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - Bundle keyevent = getKeyEventCache(ATTRIBUTE_ON_KEY_CHANGE); - if (keyevent == null) { - response.putExtra(KeyEventProfile.PARAM_KEYEVENT, ""); - } else { - response.putExtra(KeyEventProfile.PARAM_KEYEVENT, keyevent); - } - setResult(response, DConnectMessage.RESULT_OK); - return true; - } - }; - private final DConnectApi mPutOnDown = new PutApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_DOWN; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String nodeId = WearUtils.getNodeId(getServiceID(request)); - getManager().sendMessageToWear(nodeId, WearConst.DEVICE_TO_WEAR_KEYEVENT_ONDOWN_REGISTER, "", - new OnMessageResultListener() { - @Override - public void onResult() { - EventError error = EventManager.INSTANCE.addEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - setResult(response, DConnectMessage.RESULT_ERROR); - } - sendResponse(response); - } - - @Override - public void onError() { - MessageUtils.setIllegalDeviceStateError(response); - sendResponse(response); - } - }); - return false; - } - }; - - private final DConnectApi mPutOnUp = new PutApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_UP; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String nodeId = WearUtils.getNodeId(getServiceID(request)); - getManager().sendMessageToWear(nodeId, WearConst.DEVICE_TO_WEAR_KEYEVENT_ONUP_REGISTER, "", - new OnMessageResultListener() { - @Override - public void onResult() { - EventError error = EventManager.INSTANCE.addEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - setResult(response, DConnectMessage.RESULT_ERROR); - } - sendResponse(response); - } - - @Override - public void onError() { - MessageUtils.setIllegalDeviceStateError(response); - sendResponse(response); - } - }); - return false; - } - }; - private final DConnectApi mPutOnKeyChange = new PutApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_KEY_CHANGE; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String nodeId = WearUtils.getNodeId(getServiceID(request)); - getManager().sendMessageToWear(nodeId, WearConst.DEVICE_TO_WEAR_KEYEVENT_ONKEYCHANGE_REGISTER, "", - new OnMessageResultListener() { - @Override - public void onResult() { - EventError error = EventManager.INSTANCE.addEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - setResult(response, DConnectMessage.RESULT_ERROR); - } - sendResponse(response); - } - - @Override - public void onError() { - MessageUtils.setIllegalDeviceStateError(response); - sendResponse(response); - } - }); - return false; - } - }; - private final DConnectApi mDeleteOnDown = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_DOWN; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String nodeId = WearUtils.getNodeId(getServiceID(request)); - getManager().sendMessageToWear(nodeId, WearConst.DEVICE_TO_WEAR_KEYEVENT_ONDOWN_UNREGISTER, "", - new OnMessageResultListener() { - @Override - public void onResult() { - } - - @Override - public void onError() { - } - }); - - // Event release. - EventError error = EventManager.INSTANCE.removeEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - setResult(response, DConnectMessage.RESULT_ERROR); - } - return true; - } - }; - - private final DConnectApi mDeleteOnUp = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_UP; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String nodeId = WearUtils.getNodeId(getServiceID(request)); - getManager().sendMessageToWear(nodeId, WearConst.DEVICE_TO_WEAR_KEYEVENT_ONUP_UNREGISTER, "", - new OnMessageResultListener() { - @Override - public void onResult() { - } - - @Override - public void onError() { - } - }); - - // Event release. - EventError error = EventManager.INSTANCE.removeEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - setResult(response, DConnectMessage.RESULT_ERROR); - } - return true; - } - }; - private final DConnectApi mDeleteOnKeyChange = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_KEY_CHANGE; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String nodeId = WearUtils.getNodeId(getServiceID(request)); - getManager().sendMessageToWear(nodeId, WearConst.DEVICE_TO_WEAR_KEYEVENT_ONKEYCHANGE_UNREGISTER, "", - new OnMessageResultListener() { - @Override - public void onResult() { - } - - @Override - public void onError() { - } - }); - - // Event release. - EventError error = EventManager.INSTANCE.removeEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - setResult(response, DConnectMessage.RESULT_ERROR); - } - return true; - } - }; - /** - * Send a message to the registration event. - * - * @param nodeId node id - * @param data Received Strings. - */ - private void sendMessageToEvent(final String nodeId, final String data) { - String[] mDataArray = data.split(",", 0); - String attr = null; - String state = null; - if (mDataArray[0].equals(WearConst.PARAM_KEYEVENT_DOWN)) { - attr = ATTRIBUTE_ON_DOWN; - state = STATE_DOWN; - } else if (mDataArray[0].equals(WearConst.PARAM_KEYEVENT_UP)) { - attr = ATTRIBUTE_ON_UP; - state = STATE_UP; - } else { - return; - } - - List events = EventManager.INSTANCE.getEventList(nodeId, PROFILE_NAME, null, attr); - List keyEvents = EventManager.INSTANCE.getEventList(nodeId, PROFILE_NAME, null, ATTRIBUTE_ON_KEY_CHANGE); - - Bundle keyevent = new Bundle(); - - keyevent.putInt(KeyEventProfile.PARAM_ID, Integer.parseInt(mDataArray[1])); - keyevent.putString(KeyEventProfile.PARAM_CONFIG, mDataArray[2]); - - synchronized (events) { - for (Event event : events) { - - String eventAttr = event.getAttribute(); - Intent intent = EventManager.createEventMessage(event); - intent.putExtra(KeyEventProfile.PARAM_KEYEVENT, keyevent); - ((WearDeviceService) getContext()).sendEvent(intent, event.getAccessToken()); - setKeyEventCache(eventAttr, keyevent); - } - } - synchronized (keyEvents) { - for (Event event : keyEvents) { - String eventAttr = event.getAttribute(); - keyevent.putString("state", state); - Intent intent = EventManager.createEventMessage(event); - intent.putExtra(KeyEventProfile.PARAM_KEYEVENT, keyevent); - ((WearDeviceService) getContext()).sendEvent(intent, event.getAccessToken()); - setKeyEventCache(eventAttr, keyevent); - } - } - - } - - /** - * Get Android Wear management class. - * - * @return WearManager management class. - */ - private WearManager getManager() { - return ((WearDeviceService) getContext()).getManager(); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearNotificationProfile.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearNotificationProfile.java deleted file mode 100755 index 71de41ed66..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearNotificationProfile.java +++ /dev/null @@ -1,347 +0,0 @@ -/* - WearNotificationProfile.java - Copyright (c) 2014 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.wear.profile; - -import android.app.Notification; -import android.app.NotificationChannel; -import android.app.NotificationManager; -import android.app.PendingIntent; -import android.content.Context; -import android.content.Intent; -import android.graphics.drawable.Icon; -import android.os.Build; -import androidx.core.app.NotificationCompat; - -import org.deviceconnect.android.deviceplugin.wear.R; -import org.deviceconnect.android.event.Event; -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.NotificationProfile; -import org.deviceconnect.android.profile.api.DConnectApi; -import org.deviceconnect.android.profile.api.DeleteApi; -import org.deviceconnect.android.profile.api.PostApi; -import org.deviceconnect.android.profile.api.PutApi; -import org.deviceconnect.message.DConnectMessage; -import org.deviceconnect.message.intent.message.IntentDConnectMessage; - -import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; -import java.util.List; -import java.util.Random; - -/** - * Notification Profile. - * - * @author NTT DOCOMO, INC. - */ -public class WearNotificationProfile extends NotificationProfile { - - /** - * ランダムを生成するクラス. - */ - private final Random mRandom = new Random(System.currentTimeMillis()); - - public WearNotificationProfile() { - addApi(mPostNotify); - addApi(mDeleteNotify); - addApi(mDeleteOnClick); - addApi(mPutOnClick); - addApi(mDeleteOnClose); - addApi(mPutOnClose); - addApi(mDeleteOnShow); - addApi(mPutOnShow); - } - - private final DConnectApi mPostNotify = new PostApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_NOTIFY; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - final String serviceId = getServiceID(request); - final NotificationType type = getType(request); - final String body = getBody(request); - - int myNotificationId = mRandom.nextInt(Integer.MAX_VALUE); - - Intent clickIntent = new Intent(getContext(), - org.deviceconnect.android.deviceplugin.wear.WearDeviceService.class); - clickIntent.setAction(WearConst.DEVICE_TO_WEAR_NOTIFICATION_OPEN); - clickIntent.putExtra(WearConst.PARAM_DEVICEID, serviceId); - clickIntent.putExtra(WearConst.PARAM_NOTIFICATIONID, myNotificationId); - PendingIntent clickPendingIntent = PendingIntent.getService(getContext(), 0, clickIntent, - PendingIntent.FLAG_UPDATE_CURRENT); - - Intent deleteIntent = new Intent(getContext(), - org.deviceconnect.android.deviceplugin.wear.WearDeviceService.class); - deleteIntent.setAction(WearConst.DEVICE_TO_WEAR_NOTIFICATION_CLOSED); - deleteIntent.putExtra(WearConst.PARAM_DEVICEID, serviceId); - deleteIntent.putExtra(WearConst.PARAM_NOTIFICATIONID, myNotificationId); - PendingIntent deletePendingIntent = PendingIntent.getService(getContext(), 0, deleteIntent, - PendingIntent.FLAG_UPDATE_CURRENT); - - int iconType = 0; - String title = ""; - if (type == NotificationType.PHONE) { - iconType = R.drawable.notification_00_post_lollipop; - title = "PHONE"; - } else if (type == NotificationType.MAIL) { - iconType = R.drawable.notification_01_post_lollipop; - title = "MAIL"; - } else if (type == NotificationType.SMS) { - iconType = R.drawable.notification_02_post_lollipop; - title = "SMS"; - } else if (type == NotificationType.EVENT) { - iconType = R.drawable.notification_03_post_lollipop; - title = "EVENT"; - } else { - MessageUtils.setInvalidRequestParameterError(response, - "type is invalid."); - return true; - } - - String encodeBody = ""; - try { - if (body != null) { - encodeBody = URLDecoder.decode(body, "UTF-8"); - } - } catch (UnsupportedEncodingException e) { - MessageUtils.setInvalidRequestParameterError(response, - "body is invalid."); - return true; - } - - - Notification notification; - // Get an instance of the NotificationManager service - NotificationManager mNotification = (NotificationManager) getContext() - .getSystemService(Context.NOTIFICATION_SERVICE); - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { - NotificationCompat.Builder notificationBuilder = - new NotificationCompat.Builder(getContext()) - .setSmallIcon(iconType) - .setContentTitle("" + title) - .setContentText(encodeBody) - .setContentIntent(clickPendingIntent) - .setVibrate(new long[]{500}) - .setDeleteIntent(deletePendingIntent) - .extend(new NotificationCompat.WearableExtender()); - notification = notificationBuilder.build(); - } else { - Notification.Builder notificationBuilder = - new Notification.Builder(getContext()) - .setSmallIcon(Icon.createWithResource(getContext(), iconType)) - .setContentTitle("" + title) - .setContentText(encodeBody) - .setContentIntent(clickPendingIntent) - .setVibrate(new long[]{500}) - .setDeleteIntent(deletePendingIntent) - .extend(new Notification.WearableExtender()); - ; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - String channelId = getContext().getResources().getString(R.string.android_wear_notification_channel_id); - NotificationChannel channel = new NotificationChannel( - channelId, - getContext().getResources().getString(R.string.android_wear_notification_channel_title), - NotificationManager.IMPORTANCE_DEFAULT); - channel.setDescription(getContext().getResources().getString(R.string.android_wear_notification_channel_desc)); - mNotification.createNotificationChannel(channel); - notificationBuilder.setChannelId(channelId); - } - notification = notificationBuilder.build(); - } - // Build the notification and issues it with notification - // manager. - mNotification.notify(myNotificationId, notification); - - response.putExtra(NotificationProfile.PARAM_NOTIFICATION_ID, myNotificationId); - setResult(response, IntentDConnectMessage.RESULT_OK); - - List events = EventManager.INSTANCE.getEventList(serviceId, WearNotificationProfile.PROFILE_NAME, - null, WearNotificationProfile.ATTRIBUTE_ON_SHOW); - synchronized (events) { - for (Event event : events) { - Intent msg = EventManager.createEventMessage(event); - msg.putExtra(WearNotificationProfile.PARAM_NOTIFICATION_ID, myNotificationId); - ((DConnectMessageService) getContext()).sendEvent(msg, event.getAccessToken()); - } - } - return true; - } - }; - - private final DConnectApi mDeleteNotify = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_NOTIFY; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - NotificationManager manager = (NotificationManager) getContext() - .getSystemService(Context.NOTIFICATION_SERVICE); - try { - manager.cancel(Integer.parseInt(getNotificationId(request))); - setResult(response, DConnectMessage.RESULT_OK); - } catch (NumberFormatException e) { - MessageUtils.setInvalidRequestParameterError(response, - "notificationId is invalid."); - } - return true; - } - }; - - private final DConnectApi mDeleteOnClick = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_CLICK; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - return unregisterEvent(request, response, getServiceID(request), getSessionKey(request)); - } - }; - - private final DConnectApi mPutOnClick = new PutApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_CLICK; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - return registerEvent(request, response, getServiceID(request), getSessionKey(request)); - } - }; - - private final DConnectApi mDeleteOnClose = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_CLOSE; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - return unregisterEvent(request, response, getServiceID(request), getSessionKey(request)); - } - }; - - private final DConnectApi mPutOnClose = new PutApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_CLOSE; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - return registerEvent(request, response, getServiceID(request), getSessionKey(request)); - } - }; - - private final DConnectApi mDeleteOnShow = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_SHOW; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - return unregisterEvent(request, response, getServiceID(request), getSessionKey(request)); - } - }; - - private final DConnectApi mPutOnShow = new PutApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_SHOW; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - return registerEvent(request, response, getServiceID(request), getSessionKey(request)); - } - }; - - /** - * イベントを登録します. - * @param request リクエスト - * @param response レスポンス - * @param serviceId サービスID - * @param sessionKey セッションキー - * @return 同期なのでtrueを返却 - */ - private boolean registerEvent(final Intent request, final Intent response, final String serviceId, final String sessionKey) { - if (serviceId == null) { - MessageUtils.setEmptyServiceIdError(response); - } else if (!WearUtils.checkServiceId(serviceId)) { - MessageUtils.setNotFoundServiceError(response); - } else { - // Event registration. - EventError error = EventManager.INSTANCE.addEvent(request); - switch (error) { - case NONE: - setResult(response, DConnectMessage.RESULT_OK); - break; - case FAILED: - MessageUtils.setUnknownError(response, "Do not register event."); - break; - case INVALID_PARAMETER: - MessageUtils.setInvalidRequestParameterError(response); - break; - case NOT_FOUND: - MessageUtils.setUnknownError(response, "Event not found."); - break; - default: - MessageUtils.setUnknownError(response); - break; - } - } - return true; - } - - /** - * イベントを解除します. - * @param request リクエスト - * @param response レスポンス - * @param serviceId サービスID - * @param sessionKey セッションキー - * @return 同期なのでtrueを返却 - */ - private boolean unregisterEvent(final Intent request, final Intent response, final String serviceId, final String sessionKey) { - if (serviceId == null) { - MessageUtils.setEmptyServiceIdError(response); - } else if (!WearUtils.checkServiceId(serviceId)) { - MessageUtils.setNotFoundServiceError(response); - } else { - // Event release. - EventError error = EventManager.INSTANCE.removeEvent(request); - switch (error) { - case NONE: - setResult(response, DConnectMessage.RESULT_OK); - break; - case FAILED: - MessageUtils.setUnknownError(response, "Do not unregister event."); - break; - case INVALID_PARAMETER: - MessageUtils.setInvalidRequestParameterError(response); - break; - case NOT_FOUND: - MessageUtils.setUnknownError(response, "Event not found."); - break; - default: - MessageUtils.setUnknownError(response); - break; - } - } - return true; - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearServiceDiscoveryProfile.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearServiceDiscoveryProfile.java deleted file mode 100644 index 7839a8c599..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearServiceDiscoveryProfile.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - HeartRateServiceDiscoveryProfile - Copyright (c) 2015 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.wear.profile; - -import android.content.Intent; - -import org.deviceconnect.android.deviceplugin.wear.WearManager; -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; - -/** - * Implement ServiceDiscoveryProfile. - * @author NTT DOCOMO, INC. - */ -public class WearServiceDiscoveryProfile extends ServiceDiscoveryProfile { - - - private final DConnectApi mServiceDiscoveryApi = new GetApi() { - @Override - public boolean onRequest(final Intent request, final Intent response) { - mWearManager.sendWearData(); - appendServiceList(response); - return true; - } - }; - private WearManager mWearManager; - /** - * コンストラクタ. - * @param provider プロファイルプロバイダ - */ - public WearServiceDiscoveryProfile(final WearManager manager, final DConnectServiceProvider provider) { - super(provider); - mWearManager = manager; - addApi(mServiceDiscoveryApi); - } - -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearSystemProfile.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearSystemProfile.java deleted file mode 100755 index c4f4a5d12a..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearSystemProfile.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - WearSystemProfile.java - Copyright (c) 2014 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.wear.profile; - -import android.app.Activity; -import android.content.Intent; -import android.os.Bundle; - -import org.deviceconnect.android.deviceplugin.wear.setting.WearServiceListActivity; -import org.deviceconnect.android.profile.SystemProfile; - -/** - * System Profile. - * - * @author NTT DOCOMO, INC. - */ -public class WearSystemProfile extends SystemProfile { - - @Override - protected Class getSettingPageActivity(final Intent request, final Bundle param) { - return WearServiceListActivity.class; - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearTouchProfile.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearTouchProfile.java deleted file mode 100644 index 8ca2e3082f..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearTouchProfile.java +++ /dev/null @@ -1,897 +0,0 @@ -/* - WearTouchProfile.java - Copyright (c) 2015 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.wear.profile; - -import android.content.Intent; -import android.os.Bundle; -import android.util.Log; - - -import org.deviceconnect.android.deviceplugin.wear.BuildConfig; -import org.deviceconnect.android.deviceplugin.wear.WearDeviceService; -import org.deviceconnect.android.deviceplugin.wear.WearManager; -import org.deviceconnect.android.deviceplugin.wear.WearManager.OnMessageEventListener; -import org.deviceconnect.android.deviceplugin.wear.WearManager.OnMessageResultListener; -import org.deviceconnect.android.event.Event; -import org.deviceconnect.android.event.EventError; -import org.deviceconnect.android.event.EventManager; -import org.deviceconnect.android.message.MessageUtils; -import org.deviceconnect.android.profile.TouchProfile; -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 org.deviceconnect.message.intent.message.IntentDConnectMessage; - -import java.util.ArrayList; -import java.util.List; - -import static org.deviceconnect.android.deviceplugin.wear.profile.WearConst.ATTRIBUTE_ON_TOUCH_CHANGE; -import static org.deviceconnect.android.deviceplugin.wear.profile.WearConst.STATE_CANCEL; -import static org.deviceconnect.android.deviceplugin.wear.profile.WearConst.STATE_DOUBLE_TAP; -import static org.deviceconnect.android.deviceplugin.wear.profile.WearConst.STATE_END; -import static org.deviceconnect.android.deviceplugin.wear.profile.WearConst.STATE_MOVE; -import static org.deviceconnect.android.deviceplugin.wear.profile.WearConst.STATE_START; - -/** - * Touch Profile. - * - * @author NTT DOCOMO, INC. - */ -public class WearTouchProfile extends TouchProfile { - - /** Tag. */ - private static final String TAG = "WEAR"; - - /** Touch profile onTouch cache. */ - Bundle mOnTouchCache = null; - - /** Touch profile onTouch cache time. */ - long mOnTouchCacheTime = 0; - - /** Touch profile onTouchStart cache. */ - Bundle mOnTouchStartCache = null; - - /** Touch profile onTouchStart cache time. */ - long mOnTouchStartCacheTime = 0; - - /** Touch profile onTouchEnd cache. */ - Bundle mOnTouchEndCache = null; - - /** Touch profile onTouchEnd cache time. */ - long mOnTouchEndCacheTime = 0; - - /** Touch profile onDoubleTap cache. */ - Bundle mOnDoubleTapCache = null; - - /** Touch profile onDoubleTap cache time. */ - long mOnDoubleTapCacheTime = 0; - - /** Touch profile onTouchMove cache. */ - Bundle mOnTouchMoveCache = null; - - /** Touch profile onTouchMove cache time. */ - long mOnTouchMoveCacheTime = 0; - - /** Touch profile onTouchCancel cache. */ - Bundle mOnTouchCancelCache = null; - - /** Touch profile onTouchCancel cache time. */ - long mOnTouchCancelCacheTime = 0; - /** Touch profile onTouchChange cache. */ - Bundle mOnTouchChangeCache = null; - - /** Touch profile onTouchChange cache time. */ - long mOnTouchChangeCacheTime = 0; - /** Touch profile cache retention time (mSec). */ - static final long CACHE_RETENTION_TIME = 10000; - - /** - * Get Touch cache data. - * - * @param attr Attribute. - * @return Touch cache data. - */ - public Bundle getTouchCache(final String attr) { - long lCurrentTime = System.currentTimeMillis(); - if (attr.equalsIgnoreCase(ATTRIBUTE_ON_TOUCH)) { - if (lCurrentTime - mOnTouchCacheTime <= CACHE_RETENTION_TIME) { - return mOnTouchCache; - } else { - return null; - } - } else if (attr.equalsIgnoreCase(ATTRIBUTE_ON_TOUCH_START)) { - if (lCurrentTime - mOnTouchStartCacheTime <= CACHE_RETENTION_TIME) { - return mOnTouchStartCache; - } else { - return null; - } - } else if (attr.equalsIgnoreCase(ATTRIBUTE_ON_TOUCH_END)) { - if (lCurrentTime - mOnTouchEndCacheTime <= CACHE_RETENTION_TIME) { - return mOnTouchEndCache; - } else { - return null; - } - } else if (attr.equalsIgnoreCase(ATTRIBUTE_ON_DOUBLE_TAP)) { - if (lCurrentTime - mOnDoubleTapCacheTime <= CACHE_RETENTION_TIME) { - return mOnDoubleTapCache; - } else { - return null; - } - } else if (attr.equalsIgnoreCase(ATTRIBUTE_ON_TOUCH_MOVE)) { - if (lCurrentTime - mOnTouchMoveCacheTime <= CACHE_RETENTION_TIME) { - return mOnTouchMoveCache; - } else { - return null; - } - } else if (attr.equalsIgnoreCase(ATTRIBUTE_ON_TOUCH_CANCEL)) { - if (lCurrentTime - mOnTouchCancelCacheTime <= CACHE_RETENTION_TIME) { - return mOnTouchCancelCache; - } else { - return null; - } - } else if (attr.equalsIgnoreCase(ATTRIBUTE_ON_TOUCH_CHANGE)) { - if (lCurrentTime - mOnTouchChangeCacheTime <= CACHE_RETENTION_TIME) { - return mOnTouchChangeCache; - } else { - return null; - } - } else { - return null; - } - } - - /** - * Set Touch data to cache. - * - * @param attr Attribute. - * @param touchData Touch data. - */ - public void setTouchCache(final String attr, final Bundle touchData) { - long lCurrentTime = System.currentTimeMillis(); - if (attr.equalsIgnoreCase(ATTRIBUTE_ON_TOUCH)) { - mOnTouchCache = touchData; - mOnTouchCacheTime = lCurrentTime; - } else if (attr.equalsIgnoreCase(ATTRIBUTE_ON_TOUCH_START)) { - mOnTouchStartCache = touchData; - mOnTouchStartCacheTime = lCurrentTime; - } else if (attr.equalsIgnoreCase(ATTRIBUTE_ON_TOUCH_END)) { - mOnTouchEndCache = touchData; - mOnTouchEndCacheTime = lCurrentTime; - } else if (attr.equalsIgnoreCase(ATTRIBUTE_ON_DOUBLE_TAP)) { - mOnDoubleTapCache = touchData; - mOnDoubleTapCacheTime = lCurrentTime; - } else if (attr.equalsIgnoreCase(ATTRIBUTE_ON_TOUCH_MOVE)) { - mOnTouchMoveCache = touchData; - mOnTouchMoveCacheTime = lCurrentTime; - } else if (attr.equalsIgnoreCase(ATTRIBUTE_ON_TOUCH_CANCEL)) { - mOnTouchCancelCache = touchData; - mOnTouchCancelCacheTime = lCurrentTime; - } else if (attr.equalsIgnoreCase(ATTRIBUTE_ON_TOUCH_CHANGE)) { - mOnTouchChangeCache = touchData; - mOnTouchChangeCacheTime = lCurrentTime; - } - } - - /** - * Event receive listener from Android Wear. - */ - private OnMessageEventListener mListener = new OnMessageEventListener() { - @Override - public void onEvent(final String nodeId, final String message) { - sendMessageToEvent(WearUtils.createServiceId(nodeId), message); - } - }; - - /** - * Constructor. - * @param mgr Android Wear管理クラス - */ - public WearTouchProfile(final WearManager mgr) { - mgr.addMessageEventListener(WearConst.WEAR_TO_DEVICE_TOUCH_DATA, mListener); - addApi(mGetOnTouch); - addApi(mGetOnTouchStart); - addApi(mGetOnTouchEnd); - addApi(mGetOnDoubleTap); - addApi(mGetOnTouchMove); - addApi(mGetOnTouchCancel); - addApi(mGetOnTouchChange); - addApi(mPutOnTouch); - addApi(mPutOnTouchStart); - addApi(mPutOnTouchEnd); - addApi(mPutOnDoubleTap); - addApi(mPutOnTouchMove); - addApi(mPutOnTouchCancel); - addApi(mPutOnTouchChange); - addApi(mDeleteOnTouch); - addApi(mDeleteOnTouchStart); - addApi(mDeleteOnTouchEnd); - addApi(mDeleteOnDoubleTap); - addApi(mDeleteOnTouchMove); - addApi(mDeleteOnTouchCancel); - addApi(mDeleteOnTouchChange); - } - private final DConnectApi mGetOnTouchChange = new GetApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_TOUCH_CHANGE; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - Bundle touches = getTouchCache(ATTRIBUTE_ON_TOUCH_CHANGE); - if (touches == null) { - response.putExtra(TouchProfile.PARAM_TOUCH, ""); - } else { - response.putExtra(TouchProfile.PARAM_TOUCH, touches); - } - setResult(response, IntentDConnectMessage.RESULT_OK); - return true; - } - }; - private final DConnectApi mGetOnTouch = new GetApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_TOUCH; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - Bundle touches = getTouchCache(TouchProfile.ATTRIBUTE_ON_TOUCH); - if (touches == null) { - response.putExtra(TouchProfile.PARAM_TOUCH, ""); - } else { - response.putExtra(TouchProfile.PARAM_TOUCH, touches); - } - setResult(response, IntentDConnectMessage.RESULT_OK); - return true; - } - }; - - private final DConnectApi mGetOnTouchStart = new GetApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_TOUCH_START; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - Bundle touches = getTouchCache(TouchProfile.ATTRIBUTE_ON_TOUCH_START); - if (touches == null) { - response.putExtra(TouchProfile.PARAM_TOUCH, ""); - } else { - response.putExtra(TouchProfile.PARAM_TOUCH, touches); - } - setResult(response, IntentDConnectMessage.RESULT_OK); - return true; - } - }; - - private final DConnectApi mGetOnTouchEnd = new GetApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_TOUCH_END; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - Bundle touches = getTouchCache(TouchProfile.ATTRIBUTE_ON_TOUCH_END); - if (touches == null) { - response.putExtra(TouchProfile.PARAM_TOUCH, ""); - } else { - response.putExtra(TouchProfile.PARAM_TOUCH, touches); - } - setResult(response, IntentDConnectMessage.RESULT_OK); - return true; - } - }; - - private final DConnectApi mGetOnDoubleTap = new GetApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_DOUBLE_TAP; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - Bundle touches = getTouchCache(TouchProfile.ATTRIBUTE_ON_DOUBLE_TAP); - if (touches == null) { - response.putExtra(TouchProfile.PARAM_TOUCH, ""); - } else { - response.putExtra(TouchProfile.PARAM_TOUCH, touches); - } - setResult(response, IntentDConnectMessage.RESULT_OK); - return true; - } - }; - - private final DConnectApi mGetOnTouchMove = new GetApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_TOUCH_MOVE; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - Bundle touches = getTouchCache(TouchProfile.ATTRIBUTE_ON_TOUCH_MOVE); - if (touches == null) { - response.putExtra(TouchProfile.PARAM_TOUCH, ""); - } else { - response.putExtra(TouchProfile.PARAM_TOUCH, touches); - } - setResult(response, IntentDConnectMessage.RESULT_OK); - return true; - } - }; - - private final DConnectApi mGetOnTouchCancel = new GetApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_TOUCH_CANCEL; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - Bundle touches = getTouchCache(TouchProfile.ATTRIBUTE_ON_TOUCH_CANCEL); - if (touches == null) { - response.putExtra(TouchProfile.PARAM_TOUCH, ""); - } else { - response.putExtra(TouchProfile.PARAM_TOUCH, touches); - } - setResult(response, IntentDConnectMessage.RESULT_OK); - return true; - } - }; - private final DConnectApi mPutOnTouchChange = new PutApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_TOUCH_CHANGE; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String nodeId = WearUtils.getNodeId(getServiceID(request)); - - getManager().sendMessageToWear(nodeId, - WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHCHANGE_REGISTER, - "", new OnMessageResultListener() { - @Override - public void onResult() { - // Event registration. - EventError error = EventManager.INSTANCE.addEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - setResult(response, DConnectMessage.RESULT_ERROR); - } - sendResponse(response); - } - @Override - public void onError() { - MessageUtils.setIllegalDeviceStateError(response); - sendResponse(response); - } - }); - return false; - } - }; - private final DConnectApi mPutOnTouch = new PutApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_TOUCH; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String nodeId = WearUtils.getNodeId(getServiceID(request)); - - getManager().sendMessageToWear(nodeId, - WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCH_REGISTER, - "", new OnMessageResultListener() { - @Override - public void onResult() { - // Event registration. - EventError error = EventManager.INSTANCE.addEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - setResult(response, DConnectMessage.RESULT_ERROR); - } - sendResponse(response); - } - @Override - public void onError() { - MessageUtils.setIllegalDeviceStateError(response); - sendResponse(response); - } - }); - return false; - } - }; - - private final DConnectApi mPutOnTouchStart = new PutApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_TOUCH_START; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String nodeId = WearUtils.getNodeId(getServiceID(request)); - getManager().sendMessageToWear(nodeId, - WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHSTART_REGISTER, - "", new OnMessageResultListener() { - @Override - public void onResult() { - // Event registration. - EventError error = EventManager.INSTANCE.addEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - setResult(response, DConnectMessage.RESULT_ERROR); - } - sendResponse(response); - } - @Override - public void onError() { - MessageUtils.setIllegalDeviceStateError(response); - sendResponse(response); - } - }); - return false; - } - }; - - private final DConnectApi mPutOnTouchEnd = new PutApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_TOUCH_END; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String nodeId = WearUtils.getNodeId(getServiceID(request)); - getManager().sendMessageToWear(nodeId, - WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHEND_REGISTER, - "", new OnMessageResultListener() { - @Override - public void onResult() { - // Event registration. - EventError error = EventManager.INSTANCE.addEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - setResult(response, DConnectMessage.RESULT_ERROR); - } - sendResponse(response); - } - @Override - public void onError() { - MessageUtils.setIllegalDeviceStateError(response); - sendResponse(response); - } - }); - return false; - } - }; - - private final DConnectApi mPutOnDoubleTap = new PutApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_DOUBLE_TAP; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String nodeId = WearUtils.getNodeId(getServiceID(request)); - getManager().sendMessageToWear(nodeId, - WearConst.DEVICE_TO_WEAR_TOUCH_ONDOUBLETAP_REGISTER, - "", new OnMessageResultListener() { - @Override - public void onResult() { - // Event registration. - EventError error = EventManager.INSTANCE.addEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - setResult(response, DConnectMessage.RESULT_ERROR); - } - sendResponse(response); - } - @Override - public void onError() { - MessageUtils.setIllegalDeviceStateError(response); - sendResponse(response); - } - }); - return false; - } - }; - - private final DConnectApi mPutOnTouchMove = new PutApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_TOUCH_MOVE; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String nodeId = WearUtils.getNodeId(getServiceID(request)); - getManager().sendMessageToWear(nodeId, - WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHMOVE_REGISTER, - "", new OnMessageResultListener() { - @Override - public void onResult() { - // Event registration. - EventError error = EventManager.INSTANCE.addEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - setResult(response, DConnectMessage.RESULT_ERROR); - } - sendResponse(response); - } - @Override - public void onError() { - MessageUtils.setIllegalDeviceStateError(response); - sendResponse(response); - } - }); - return false; - } - }; - - private final DConnectApi mPutOnTouchCancel = new PutApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_TOUCH_CANCEL; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String nodeId = WearUtils.getNodeId(getServiceID(request)); - getManager().sendMessageToWear(nodeId, - WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHCANCEL_REGISTER, - "", new OnMessageResultListener() { - @Override - public void onResult() { - // Event registration. - EventError error = EventManager.INSTANCE.addEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - setResult(response, DConnectMessage.RESULT_ERROR); - } - sendResponse(response); - } - @Override - public void onError() { - MessageUtils.setIllegalDeviceStateError(response); - sendResponse(response); - } - }); - return false; - } - }; - private final DConnectApi mDeleteOnTouchChange = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_TOUCH_CHANGE; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String nodeId = WearUtils.getNodeId(getServiceID(request)); - getManager().sendMessageToWear(nodeId, - WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHCHANGE_UNREGISTER, - "", new OnMessageResultListener() { - @Override - public void onResult() { - } - @Override - public void onError() { - } - }); - - // Event release. - EventError error = EventManager.INSTANCE.removeEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - setResult(response, DConnectMessage.RESULT_ERROR); - } - return true; - } - }; - private final DConnectApi mDeleteOnTouch = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_TOUCH; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String nodeId = WearUtils.getNodeId(getServiceID(request)); - getManager().sendMessageToWear(nodeId, - WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCH_UNREGISTER, - "", new OnMessageResultListener() { - @Override - public void onResult() { - } - @Override - public void onError() { - } - }); - - // Event release. - EventError error = EventManager.INSTANCE.removeEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - setResult(response, DConnectMessage.RESULT_ERROR); - } - return true; - } - }; - - private final DConnectApi mDeleteOnTouchStart = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_TOUCH_START; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String nodeId = WearUtils.getNodeId(getServiceID(request)); - getManager().sendMessageToWear(nodeId, - WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHSTART_UNREGISTER, - "", new OnMessageResultListener() { - @Override - public void onResult() { - } - @Override - public void onError() { - } - }); - - // Event release. - EventError error = EventManager.INSTANCE.removeEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - setResult(response, DConnectMessage.RESULT_ERROR); - } - return true; - } - }; - - private final DConnectApi mDeleteOnTouchEnd = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_TOUCH_END; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String nodeId = WearUtils.getNodeId(getServiceID(request)); - getManager().sendMessageToWear(nodeId, - WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHEND_UNREGISTER, - "", new OnMessageResultListener() { - @Override - public void onResult() { - } - @Override - public void onError() { - } - }); - - // Event release. - EventError error = EventManager.INSTANCE.removeEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - setResult(response, DConnectMessage.RESULT_ERROR); - } - return true; - } - }; - - private final DConnectApi mDeleteOnDoubleTap = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_DOUBLE_TAP; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String nodeId = WearUtils.getNodeId(getServiceID(request)); - getManager().sendMessageToWear(nodeId, - WearConst.DEVICE_TO_WEAR_TOUCH_ONDOUBLETAP_UNREGISTER, - "", new OnMessageResultListener() { - @Override - public void onResult() { - } - @Override - public void onError() { - } - }); - - // Event release. - EventError error = EventManager.INSTANCE.removeEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - setResult(response, DConnectMessage.RESULT_ERROR); - } - return true; - } - }; - - private final DConnectApi mDeleteOnTouchMove = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_TOUCH_MOVE; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String nodeId = WearUtils.getNodeId(getServiceID(request)); - getManager().sendMessageToWear(nodeId, - WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHMOVE_UNREGISTER, - "", new OnMessageResultListener() { - @Override - public void onResult() { - } - @Override - public void onError() { - } - }); - - // Event release. - EventError error = EventManager.INSTANCE.removeEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - setResult(response, DConnectMessage.RESULT_ERROR); - } - return true; - } - }; - - private final DConnectApi mDeleteOnTouchCancel = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_ON_TOUCH_CANCEL; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String nodeId = WearUtils.getNodeId(getServiceID(request)); - getManager().sendMessageToWear(nodeId, - WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHCANCEL_UNREGISTER, - "", new OnMessageResultListener() { - @Override - public void onResult() { - } - @Override - public void onError() { - } - }); - - // Event release. - EventError error = EventManager.INSTANCE.removeEvent(request); - if (error == EventError.NONE) { - setResult(response, DConnectMessage.RESULT_OK); - } else { - setResult(response, DConnectMessage.RESULT_ERROR); - } - return true; - } - }; - - /** - * Send a message to the registration event. - * - * @param nodeId node id - * @param data Received Strings. - */ - private void sendMessageToEvent(final String nodeId, final String data) { - if (BuildConfig.DEBUG) { - Log.i(TAG, "@@@@@@SUCCESS"); - } - - String[] mDataArray = data.split(",", 0); - String attr; - String action = mDataArray[1]; - String state = null; - if (action.equals(WearConst.PARAM_TOUCH_TOUCH)) { - attr = ATTRIBUTE_ON_TOUCH; - } else if (action.equals(WearConst.PARAM_TOUCH_TOUCHSTART)) { - attr = ATTRIBUTE_ON_TOUCH_START; - state = STATE_START; - } else if (action.equals(WearConst.PARAM_TOUCH_TOUCHEND)) { - attr = ATTRIBUTE_ON_TOUCH_END; - state = STATE_END; - } else if (action.equals(WearConst.PARAM_TOUCH_TOUCHMOVE)) { - attr = ATTRIBUTE_ON_TOUCH_MOVE; - state = STATE_MOVE; - } else if (action.equals(WearConst.PARAM_TOUCH_TOUCHCANCEL)) { - attr = ATTRIBUTE_ON_TOUCH_CANCEL; - state = STATE_CANCEL; - } else if (action.equals(WearConst.PARAM_TOUCH_DOUBLETAP)) { - attr = ATTRIBUTE_ON_DOUBLE_TAP; - state = STATE_DOUBLE_TAP; - } else { - attr = null; - state = null; - } - - if (BuildConfig.DEBUG) { - Log.i(TAG, "action: " + action + " attr: " + attr); - } - - if (attr != null) { - List events = EventManager.INSTANCE.getEventList( - nodeId, PROFILE_NAME, null, attr); - List commonEvents = EventManager.INSTANCE.getEventList( - nodeId, PROFILE_NAME, null, ATTRIBUTE_ON_TOUCH_CHANGE); - Bundle touchdata = new Bundle(); - List touchlist = new ArrayList(); - Bundle touches = new Bundle(); - int count = Integer.parseInt(mDataArray[0]); - int index = 2; - for (int n = 0; n < count; n++) { - touchdata.putInt(TouchProfile.PARAM_ID, Integer.parseInt(mDataArray[index++])); - touchdata.putFloat(TouchProfile.PARAM_X, Float.parseFloat(mDataArray[index++])); - touchdata.putFloat(TouchProfile.PARAM_Y, Float.parseFloat(mDataArray[index++])); - touchlist.add((Bundle) touchdata.clone()); - } - touches.putParcelableArray(TouchProfile.PARAM_TOUCHES, - touchlist.toArray(new Bundle[touchlist.size()])); - synchronized (events) { - for (Event event : events) { - String eventAttr = event.getAttribute(); - Intent intent = EventManager.createEventMessage(event); - intent.putExtra(TouchProfile.PARAM_TOUCH, touches); - ((WearDeviceService) getContext()).sendEvent(intent, event.getAccessToken()); - setTouchCache(eventAttr, touches); - if (BuildConfig.DEBUG) { - Log.i(TAG, "event: " + event); - Log.i(TAG, "touches: " + touches); - Log.i(TAG, "intent: " + intent); - } - } - } - synchronized (commonEvents) { - for (Event event : commonEvents) { - String eventAttr = event.getAttribute(); - Intent intent = EventManager.createEventMessage(event); - if (state != null) { - touches.putString("state", state); - } - intent.putExtra(TouchProfile.PARAM_TOUCH, touches); - ((WearDeviceService) getContext()).sendEvent(intent, event.getAccessToken()); - setTouchCache(eventAttr, touches); - if (BuildConfig.DEBUG) { - Log.i(TAG, "event: " + event); - Log.i(TAG, "touches: " + touches); - Log.i(TAG, "intent: " + intent); - } - } - } - } - } - - /** - * Get Android Wear management class. - * @return WearManager management class. - */ - private WearManager getManager() { - return ((WearDeviceService) getContext()).getManager(); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearUtils.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearUtils.java deleted file mode 100755 index 3489716539..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearUtils.java +++ /dev/null @@ -1,75 +0,0 @@ -/* -WearUtil.java -Copyright (c) 2014 NTT DOCOMO,INC. -Released under the MIT license -http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.wear.profile; - -import org.deviceconnect.profile.CanvasProfileConstants.Mode; - - -/** - * Wear Utils. - * - * @author NTT DOCOMO, INC. - */ -public final class WearUtils { - - /** - * Constructor. - */ - private WearUtils() { - } - - /** - * Android Wearに渡す描画モードに変換する. - * @param mode モード - * @return 変換後のモード - */ - public static int convertMode(final Mode mode) { - int mm = WearConst.MODE_NORMAL; - if (Mode.SCALES.equals(mode)) { - mm = WearConst.MODE_SCALES; - } else if (Mode.FILLS.equals(mode)) { - mm = WearConst.MODE_FILLS; - } else { - mm = WearConst.MODE_NORMAL; - } - return mm; - } - - /** - * サービスIDを確認する. - * @param serviceId サービスID - * @return 問題ない場合にはtrue、それ以外はfalse - */ - public static boolean checkServiceId(final String serviceId) { - if (serviceId == null) { - return false; - } - return serviceId.startsWith(WearConst.SERVICE_ID); - } - - /** - * nodeIdからサービスIDを作成する. - * @param nodeId ノードID - * @return サービスID - */ - public static String createServiceId(final String nodeId) { - String[] id = nodeId.split("-"); - return WearConst.SERVICE_ID + "-" + id[0]; - } - - /** - * Get node form Service ID. - * - * @param serviceId Service ID. - * @return nodeId Internal management Node ID. - */ - public static String getNodeId(final String serviceId) { - String[] mServiceIdArray = serviceId.split("-"); - return mServiceIdArray[1]; - } - -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearVibrationProfile.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearVibrationProfile.java deleted file mode 100755 index 09d0494d6d..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/WearVibrationProfile.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - WearVibrationProfile.java - Copyright (c) 2014 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.wear.profile; - -import android.content.Intent; - - -import org.deviceconnect.android.deviceplugin.wear.WearDeviceService; -import org.deviceconnect.android.deviceplugin.wear.WearManager; -import org.deviceconnect.android.deviceplugin.wear.WearManager.OnMessageResultListener; -import org.deviceconnect.android.message.MessageUtils; -import org.deviceconnect.android.profile.VibrationProfile; -import org.deviceconnect.android.profile.api.DConnectApi; -import org.deviceconnect.android.profile.api.DeleteApi; -import org.deviceconnect.android.profile.api.PutApi; -import org.deviceconnect.message.DConnectMessage; - -/** - * Vibration Profile. - * - * @author NTT DOCOMO, INC. - */ -public class WearVibrationProfile extends VibrationProfile { - - public WearVibrationProfile() { - addApi(mPutVibrate); - addApi(mDeleteVibrate); - } - - private final DConnectApi mPutVibrate = new PutApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_VIBRATE; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String pattern = getPattern(request); - String nodeId = WearUtils.getNodeId(getServiceID(request)); - getManager().sendMessageToWear(nodeId, WearConst.DEVICE_TO_WEAR_VIBRATION_RUN, - convertPatternToString(parsePattern(pattern)), new OnMessageResultListener() { - @Override - public void onResult() { - setResult(response, DConnectMessage.RESULT_OK); - sendResponse(response); - } - @Override - public void onError() { - MessageUtils.setIllegalDeviceStateError(response); - sendResponse(response); - } - }); - return false; - } - }; - - private final DConnectApi mDeleteVibrate = new DeleteApi() { - @Override - public String getAttribute() { - return ATTRIBUTE_VIBRATE; - } - - @Override - public boolean onRequest(final Intent request, final Intent response) { - String nodeId = WearUtils.getNodeId(getServiceID(request)); - getManager().sendMessageToWear(nodeId, WearConst.DEVICE_TO_WEAR_VIBRATION_DEL, - "", new OnMessageResultListener() { - @Override - public void onResult() { - setResult(response, DConnectMessage.RESULT_OK); - sendResponse(response); - } - @Override - public void onError() { - MessageUtils.setIllegalDeviceStateError(response); - sendResponse(response); - } - }); - return false; - } - }; - - /** - * バイブレーションのパターンを文字列に変換する. - * @param pattern パターン - * @return 文字列に変換されたパターン - */ - private String convertPatternToString(final long[] pattern) { - // Convert pattern in string. - String patternStr = ""; - for (int i = 0; i < pattern.length; i++) { - if (i == 0) { - patternStr += pattern[i]; - } else { - patternStr += "," + pattern[i]; - } - } - return patternStr; - } - - /** - * Android Wear管理クラスを取得する. - * @return WearManager管理クラス - */ - private WearManager getManager() { - return ((WearDeviceService) getContext()).getManager(); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/package-info.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/package-info.java deleted file mode 100755 index ddd2193b6e..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/profile/package-info.java +++ /dev/null @@ -1,12 +0,0 @@ -/* - org.deviceconnect.android.deviceplugin.wear.profile - Copyright (c) 2014 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ - -/** - * Profile of wear. - */ -package org.deviceconnect.android.deviceplugin.wear.profile; - diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/service/WearService.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/service/WearService.java deleted file mode 100644 index 5b69fd7b4d..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/service/WearService.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.deviceconnect.android.deviceplugin.wear.service; - - -import com.google.android.gms.wearable.Node; - -import org.deviceconnect.android.deviceplugin.wear.WearManager; -import org.deviceconnect.android.deviceplugin.wear.profile.WearCanvasProfile; -import org.deviceconnect.android.deviceplugin.wear.profile.WearConst; -import org.deviceconnect.android.deviceplugin.wear.profile.WearDeviceOrientationProfile; -import org.deviceconnect.android.deviceplugin.wear.profile.WearKeyEventProfile; -import org.deviceconnect.android.deviceplugin.wear.profile.WearNotificationProfile; -import org.deviceconnect.android.deviceplugin.wear.profile.WearTouchProfile; -import org.deviceconnect.android.deviceplugin.wear.profile.WearUtils; -import org.deviceconnect.android.deviceplugin.wear.profile.WearVibrationProfile; -import org.deviceconnect.android.service.DConnectService; - -public class WearService extends DConnectService { - - private WearService(final String id) { - super(id); - } - - public static WearService getInstance(final Node node, final WearManager mgr) { - String nodeId = node.getId(); - String[] serviceId = nodeId.split("-"); - - WearService service = new WearService(WearUtils.createServiceId(nodeId)); - service.setName(WearConst.DEVICE_NAME + "(" + serviceId[0] + ")"); - service.setNetworkType(NetworkType.BLE); - service.addProfile(new WearCanvasProfile(mgr)); - service.addProfile(new WearDeviceOrientationProfile(mgr)); - service.addProfile(new WearKeyEventProfile(mgr)); - service.addProfile(new WearNotificationProfile()); - service.addProfile(new WearTouchProfile(mgr)); - service.addProfile(new WearVibrationProfile()); - return service; - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/setting/WearServiceListActivity.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/setting/WearServiceListActivity.java deleted file mode 100644 index d483c53f17..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/setting/WearServiceListActivity.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.deviceconnect.android.deviceplugin.wear.setting; - - -import android.app.Activity; - -import org.deviceconnect.android.deviceplugin.wear.WearDeviceService; -import org.deviceconnect.android.message.DConnectMessageService; -import org.deviceconnect.android.ui.activity.DConnectServiceListActivity; - -public class WearServiceListActivity extends DConnectServiceListActivity { - - @Override - protected Class getMessageServiceClass() { - return WearDeviceService.class; - } - - @Override - protected Class getSettingManualActivityClass() { - return WearSettingActivity.class; - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/setting/WearSettingActivity.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/setting/WearSettingActivity.java deleted file mode 100755 index b80d12cf4d..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/setting/WearSettingActivity.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - WearSettingActivity.java - Copyright (c) 2014 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.wear.setting; - -import org.deviceconnect.android.ui.activity.DConnectSettingPageFragmentActivity; - -import android.os.Bundle; -import androidx.fragment.app.Fragment; - -/** - * Setting Activity. - * - * @author NTT DOCOMO, INC. - */ -public class WearSettingActivity extends DConnectSettingPageFragmentActivity { - - /** Service ID. */ - private String mServiceId; - - /** Page count. */ - private static final int PAGE_COUNT = 1; - - @Override - public Fragment createPage(final int position) { - Bundle mBundle = new Bundle(); - mBundle.putInt("position", position); - WearSettingFragment mFragment = new WearSettingFragment(); - mFragment.setArguments(mBundle); - return mFragment; - } - - /** - * Get Service ID. - * - * @return Service ID. - */ - public String getServiceId() { - return mServiceId; - } - - /** - * Set Service ID. - * - * @param serviceId Service ID. - */ - public void setServiceId(final String serviceId) { - mServiceId = serviceId; - } - - @Override - public int getPageCount() { - return PAGE_COUNT; - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/setting/WearSettingFragment.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/setting/WearSettingFragment.java deleted file mode 100755 index 83020ba21e..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/setting/WearSettingFragment.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - WearSettingFragment.java - Copyright (c) 2014 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.wear.setting; - -import org.deviceconnect.android.deviceplugin.wear.R; - -import android.content.Intent; -import android.net.Uri; -import android.os.Bundle; -import androidx.fragment.app.Fragment; -import android.view.LayoutInflater; -import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup; -import android.widget.ImageView; - -/** - * Setting screen Fragment. - * - * @author NTT DOCOMO, INC. - */ -public class WearSettingFragment extends Fragment implements OnClickListener { - - /** ImageView. */ - private ImageView mImageView; - - @Override - public View onCreateView(final LayoutInflater inflater, final ViewGroup container, - final Bundle savedInstanceState) { - // Get position. - Bundle mBundle = getArguments(); - int mPagePosition = mBundle.getInt("position", 0); - - int mPageLayoutId = this.getResources().getIdentifier("wear_setting_" + mPagePosition, "layout", - getActivity().getPackageName()); - - View mView = inflater.inflate(mPageLayoutId, container, false); - - if (mPagePosition == 0) { - mImageView = (ImageView) mView.findViewById(R.id.dconnect_settings_googleplay); - mImageView.setOnClickListener(this); - } - - return mView; - } - - @Override - public void onClick(final View v) { - if (v.equals(mImageView)) { - Uri uri = Uri.parse("market://details?id=com.google.android.wearable.app"); - Intent intent = new Intent(Intent.ACTION_VIEW, uri); - startActivity(intent); - } - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/setting/package-info.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/setting/package-info.java deleted file mode 100755 index 82bc8407a1..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/java/org/deviceconnect/android/deviceplugin/wear/setting/package-info.java +++ /dev/null @@ -1,11 +0,0 @@ -/* - org.deviceconnect.android.deviceplugin.wear.setting - Copyright (c) 2014 NTT DOCOMO,INC. - Released under the MIT license - http://opensource.org/licenses/mit-license.php - */ - -/** - * Setting activity of wear. - */ -package org.deviceconnect.android.deviceplugin.wear.setting; diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-hdpi/ic_launcher.png b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-hdpi/ic_launcher.png deleted file mode 100755 index bff79fd34ebc232fec3168fdb33d08245f58a308..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7686 zcmV+h9{J&kP)&dd zJN9nW*cCMzl{x?S?K6;=caxX**5bYu?#fx~TbmirnK}En|6kiPukVzKz&NAk6A+z|iq)Uzn2UX6B9e7w@1M=hXXcPLtH z=-sr_;$hofQBUugnX)e=4bIO|S@#TO*S!0H?i4(@<8bAUa4y`}uRJ6No=q9p z_jtyRjh7}LEL~xED?CT&IO^d@V~pqxnz+J^r&%qRUIxB+fFx2&p5y^CK#Bn=2@)&> z&`Dzl!79Lc%)n{*;W(z?@Zec zJ&z_~=N$)Zxo(Tq=d2{1hb<4c?y@#zE<9>u&kZCS4xp_67P-zX%q2_1RYc)F@(55B zo}!u*Q-r$&;Of)Gc5+}JZ zf)h+|W?W_~VN^KG<>73!AUHWBo;EY&_?Kf$y(^;|B5M`Asb8 zb4LAkLsWgP%M~ou{Wh&ZX#Sf`{nAQT@MiCApE(Bx!k+9K2;z3$alzJaZE*a41;HUa z+)G?|v<$oMdg99mKG^$k8u}jj<14bhhXM51AA9ck5g1=`sj1lZjVCr=AvhPDvF3~; zR-ACa<@?(RkOYsP+(XkQSJZAXK;>Fp$LRu_)ktigthZoIo}zd4y8c#->%eLDp^nBDZow(DNla?KN) zE_)CdSFAld39C*zpy#+9IuBW)bH4-jpKn0V&NLKvYh(Tf15~UrME+8JN%DM^%V7m7 z3cp!EtIjwH*I#gduvuK=)BQEIVY4B?m0gzSkU0y(XyHXo%|dMyUSW1Qn}IQLt2> zOPsIzGBjJ!OY~dJXe>DQ9Cr#^abhC3qMy?6NfB0@w8Y9&R=lk`WkaJ4R-LvZcbP~4 z9LO9Am=ldsTXWippg3YxKXa#vQZR>YvGkxdI`)as{-rruzc54N4inUEF(yEUyn0G{ z43XQR%OzH+NM@#uulr3ZhyhxD&}IITgO-xcLuMRH!^@9apzD~3iaKVNWLD%V)>Ok# zsy<;y>6)26{VlbgY`}5F2rqGh^tWM0+Pn}zX+V#T{s$39B}Bf`SH1ZR&K z52tabG3vJwoXrNL9(|Or(L-^M4)T_0A-zcrF=fh}PmJs-mnm|ev24cfi*2pkz`8%) zySMMH%a_~#@K4)Zd}!drWv z2^RL5(qv6((q>fLnUg9khD<~-MEtmTza{TRJd{2QKGwADA(z^1hUQ&E%GqX2S<8?Q z%$2-)^ia55hulk>0BMqfgj`UH!g(t$+A`|izLwdS<14O0(0r=nxBZov}c?%YL2&r5q) z05zmoVMvoRCIv8HrZjOg0wA?TedYwjoF5mGF(^EkFU@{X4TIB2a2mE7(`y;=!MSRk z0ZLcuQ|4l>rHi@q^$?Y7@G5Aous0-K=*WWfjtev74-JH@xhP3~b&JdAj=l)sdha=K ztIt?IZ0a>mYj2nP!-#-lFS75R-&<#1CN-aY8T<6ii)8NX_o>|O`%@`XISnrAv%Orf zMBk2`xAkg>W9`Zr$3qjH2c4(r!p2n@*6!os?570p5LHZ1R6|InI->HmkWi+Jlm+@o ztu=tS$p~4k%#4xMVhnM!F)|vBF|WoD$yEl3E73!Ewl;$1sbgBS0PZtYFmcKRm^;eD z#AX6at%Y!OF_XA?i!M#{&DP5ua zFe+bZWR%2ww)=>eQTH*2!DWXnC0$2t(RFkpmK}6N^G-`9@xjDuwT)#8!D{lS(6{~wYK9*`N#i|?SA7?sQkD9K(v>=r=AC9}-(yLofjI?sBZ^ttT=IN%iARWx|A_1Y z5al=9clo)ItR0za0X`lJr2LfFbL*eK0fOf8jbDYeriOL|!C!_qrjB$nc} zkW{6E$O0kf8%2QJ#|b0yg?-tJ2oPPvRK!%zvR=+2EiSrPjhhrG7cg>wdI?Yu0a~WP z6)x98;W91cQ|%#c)j&d}D(BAwavYP>X0f|qnL1axLWgf4tJmw%s_WB44fv)~YKE^F zt7#1Rnx<}}Ew&sg#OM3dF@K!}xsD#HX;N%rY?2kLrD>gq)1`}oPHB2)1!8Kw77{D9 z5s@$8rbNm~0p+OnWi3?a%1LcZJr!#V=vqCddM=6pxdzC1jx3-RMqB{_Dj+xoom$9U zOwuMm@s$G3FJAt1c$&LxHUY|8s>ZPxcnb(i>t@(rv`$cdBy*otkuWTIBnh$Y@q4 zKx&+S{P+tIX_LlfHCgP=T`c6?uxzC^0nnw@)8ipYjg+vK)J3b=ve^xNr&{so>9_n= z2*+_4KG=2!dwlD`Ic)v96!TZx^Db3Laj$ThF1`P-dl8^!Eu_?GBAx-tRpq8c$X&8^ zR};?3Qa+T~rpB?j!`_c6u((?nneCcfM8QY{+7)V8$^b1@C)1>x)1=kYB;RL%gxs{a z@fYUA*vVxzTI|eTB;?(&bj6Psz~8iMv} z@O#|6cM>}eRimuS5}9qPJRIg;+3i}iNSc^eOMuEW5k`Q#!)4FAceVXOvaCyhNPU@Y1Sp>X`Hmo}Ch@~(*OCi;KQws>kKxyj;d9ye-SYu#`m!40c6Hvp zSp4AuEsz2VB|u(bGUuE)+k(LL+`J}17bbc+!_tctujV*p&kK} zB|ruWb261rWV8+eBK4F~JY%sdg8(t5*-srK8WBLOuUWb~Lak)EiG;@^dn4KU(T9H5c&m6?=L!CSrajO1_Bo}sem zoP6{r%+8q5pWdRzv7lbIQlHOY1q3L)S%Ztr*W#>4640_e(drCPPKS`A+JaV3oidm@ zQtAm%83QCofOO==4VD|yTU5DRg2>_!D=OK34ZFd!-|V26Bf;aR_po_S3zAB#kzMJJ zgGcu8AcjE=8+&g17i$rp?Sg~?J8b*16HlH#q)a!6ZF@T??r4yE5ugT5Br`yjW{AvZ z3X(hP5oj!!ovCy&y_qEp9a7H_ASw+Q*vNbx&f4o!qY(qtwJSkb+HL-d1>o$3Lx5V; zsm)MBbg3%2nCwlT89MTr^_CmbnpFv+2CbIV%~(yuOvekWge! zpl0H$gWK`^`E!Es7+ZF(L~Mo|Vsb38wXYq|UwkKxMg)<8+q$O%iB)PyC-txtpFCd* zC@N16lS5=r`2<=hhh!>WPHScfLx(RHio5mr?8gJj)8Wh~zppi7&Fbz40&UMAObN?!x^J>TirPne*TL@5mxsX>6Q&Lj329hhx5t*wC z&rq2YenI96A!6mrbdMa1J0%3Cs7sHspAPSm5ji>%bC(eU#9n0O?z9P|%PpQ}FBEd( zHZ@X@8q%87Fn56vF(m>5B!Am}+61MvI1v*t#q00kz;X( zsfRVRd5g7q)kS3KNGzN_6pk36HGOI0id07$kq&&0kd| ztyT&stDR*#DIiufvijqf01ZQ8@oB-5P^{RRKLkzkv*$8Eo4;7d7KVqz0(4T9CJ!h) zM;nvp$eeH{K*8yXms1<5AB0Y*YPz1|*G36|Hm7vnB6; zC;^yT4r0~j1&A(ErT16oEvbr{)pB#1xE4I-$ev&^XjZ!7wX{Ydh5;22pqvgVpwP^J zBA|>GAq6@iy^)Z7Ux4r-KodR3t7b7k4FsrFjStjPHGH)TYfC~h^j?Y_K9U_VK->FEKPv6AyvYDj z>g3fkuTJm-Am11{9uQ@*<*D_m5^_O4Q0Fl>>(t^4wErETV03T(bwI1P5TIfypu}o| zRH=i6QZs~zHQ*j1`}OoWHWPx=6tAaIoyOXdf@OOA{x$2}s4d|_()6CGi2nYcBL-;G z>H7Cdms?)TXdysNQb2QS1(a%45tcuJ^NErrKx0)i>O_lE>xKcTgH_!H)Y!6}$CFn! z|6*ME0Z>cuuPW#jWi=iUDJZF$sfXOGN*~E(RtU?|hWl*UuLHuZ6e$K>XA0s0brPT@ zx_tFLmjO!Ge`;(m_u+^ETED;KKgyO{U(RR}NKzXFR3Hi{KntjYR;B)D0yi~MR;r*n ztB#afRS7H5Sgpk35OXuu{qH=~Ky}V{KU+Ef1kf)iXt;PBc>Dm3ohhUs0TL?J$e4ok zkya}zK0BIOV83F4089>7Y;^}iokzE>!so_d|7E7oU@_-U6^f0f&0WrBY zaG#-Y$kbWzx1f2Nm5Eh4T;3v!!MqMLNp`z2Ew27xVyV?&SgK|F^ywq?vClB1gkmHA zupG6U(FOX05jh%?Ihg{hXmfM|;%r?&rNig_m#6LU? z6&wF0Fiz+`Jx+J$jCiAK0nz%`rvz*7cA2IeDDoKlE~~ifd%_!v7CG~Pn1WawVt}MO z0P6h5!->_Zn3FXD;Tc9)vAzM12JZ7Ukc4_H28g*B`Hz&>|aKc)FK)Mme-|K5%h53K^UiIssUVk(8ch%z1$pvk$gJ}&K ze6=lRkQPcIW%GMT>O3UY=w>vl@%u?E6V6UoLSn8f5{s;m*XV}eL>u@-D5{hjQmpw@m5Tku;O0fL+-|QDTnS@izz4W7UjZTH)HeK_Ik-xdgNL< zh|Jfb&fJiT5L-%S&C|W(AFb%+EdKP5zxnS;#}-=2hh%8B&rVmq8=j+yxfRyPsBuI_ ztv%9ft&qCF9I3UYNUJlUiJKt3!IaDl84VW5Y_ddVqcz0MHpptWLw55-h#MV{+2BCe zPDDzzJ+&32m_kcLW}8qp)qONOO>M)hR5im<^SccmlGx_&(b?ugqffurCy^&SxiOdCV$gFinM%^S%T<0puYH;PU8{N6wW=}4!WeW0Jd{NNqhk_P= z`r99QO@7F3n2NL-SHzcCy^JX|-W-{y9}pon`cyR9ezU;>WkG$QiGPgdGaK&@xrx4? zP#YkJX)#KeovMw<98)9|*-?6ShPcM_eomdwy}U-hfr8e6fugqQPm5XuI0h!S(T6}z zMlxlo@GLU~#B0D~mMZ5FV0hEa=93BReMariqRQH47>8x*J@W|ulymg^7&cxX!_xf| zvN5po7z^vkvas`#llaDHOph%wvrDKHIVD%xIK}2V<~s*Y_|DpM3}@>-7Isr)q~_KdW5*JgVjEDjy1ZOHD zAW;$C;R=}KKaN~XR$^@TQ$TYP9Va^a%HFr}`baV6P!Drk*0E(LDIMHo}{QXIR zpGv$!<=_{mi0R2Hq(D^~l@SmpeedwkB>oBGF)K|OAz}eSv()H1Rm_~L&P|Up zyE5tlwX6{OGrOSg`0kid3y4j)xNXX(;s(<_N!6+nrl7=1 z0lz&FTcS?=mO28Hln32rjX!4WG5#;F14=CMm=K(W(Y0Kb2JEd^Ne)wLd1;VRg_v9g|;j5vh_ijnZqZn~N9u9<1z~ zb)s}p;GT?{NyRaR`f~pgaDLddA_yMIW8V!<7pg^yEeykRj0J2<^uH_T=k}dqD*yKO z+&W`46y-U>F#R^xnHvG1yR1 zbQ6Llc8yqw#>BRk2pR=t-rt@x1h4mc|H16a{*lAy`JCb9%=SRYqH-x_au0B_Z54am-+6$WY7nfcAG4!KV&}8&}Xt>;+h!a(u>~L zdtvgr;&<`?2wivPzSrBkuR1oSwd$5n82}xD1tx#U-)UH0*KgWhe^4-O1bH7kM!w@O z$jo|(^esb3*>w+zUAG}AxFMIW8hj#~)!S?G`hgoORu}Cy{w`3W_Q{lok*v{ZR?#l~ z)8E|=+WZhHHy$AQ=`fO*VI<0LA&j{IXXXqXm=lcS*wN7yxBG`Ys_XhKFNSBSJ5QJe<9kFe233i@ejWPKMe!6oUB|Z8e9$>_kylSy{#;eJP?#tF6?7P0|yPj+I%+9M; z==ot4&i|tgd#|iP&vggvySW^_w_LFAh6}N{Gj?Bf!jA9l(RJPq9cOH?>8J&I&n2LJ ze>8Hp3b1jr4&utxZUv_=nDjCBr}q4T^Mww$*>=YS=dZLsyyB4TAb zY$ul9c4-N^F4$qqz+!AZYm3&CR%rUx9JT$%By*sVtZ^pMf62Vn_U?wc_8-=7Qg z0nJC2Ml>8TmNy+ULh}h@MKZRWG)3zvbF`hdMEhwgBGza-Wvx)U<+!Cn@%lrisO~c& z${Uc-(MA3aV*O4nq%>(Fs({6O9;I9|0YJO=#Pfce!sJGmFIT_W+uQp(y%~-FhCb)q zs;>;0>OOs9O?}iIGC=)dBM>Mw9x)+es*r}mW(uY24w|6m8)H;`WrXtmRCzrVbn75z zt2WZxG>}xsM?@ZraSxlb-NQra%?A&P{zy8v!Js_Uw(o)4oR@~UJ1YI~783JGsXTLZ z*t2i@B^R$Q(s&9s+p9}!^^c@B7$AF#4vP2aDy&-5XGnmIh{9Bi6`?{Er&cGxiZ!MC z^ii~nhK>%>TC^dq)I>z44t!$NFL*|)nr$C+egE4bpYETSgoj5TxsP-WT3##e(OEfZ zi28%8rtP`9qJ7uZ<#L*&o!>2Cinh~$8@Q3KHhTxNCnoC5(;)`rwgJSKmKu3}BfCUquI!XB{o zp7Z{s0Lps3|D4rnd`#BDV`MGrNN(UGDxbxy2$?HQZ!#;}*vTgk(L&K40ZR7jpsZIH z<-K|&#`P7ULaR)9uc4yOm-LXh-!mRM1v_c%3y`^4i-eE{B=zbLmGZGZoy)kaQ`#4p zs2VM8u_y z0SHvy=Py=`k<_a(*>r8EHZ>gMpQw7;am|N+nG`_N?x1(FI!unFG^sJtMm`d2cm#k8 zw{@T9CRLi1rZjPx%nl7?cWDw=YY`A_Vp%QZZ#6*s*XuBN{cFhOPeI4iu@RiTvI`A+ z*CMlB7cye`lua5)Ce}}=;^T`#9)eRjjB~)8z20#Pgh_SOIJCiO6A$qj-vpIYHm;M* zfsQ`^KW^+W>6bQgndAl@d5{_+ayf7bQqD^(H_4YYaGCTrb-E28meoSxc2n#;l0dcx zC&@P93I6Y3$j_6fk1=?yA8q?1AZyYk)vzvwgXR88JN)B0Nr^RTBsa!A zl~l`zZ@lUWyVWz^oiqUPz&Db54nr(L9;Alw95&+|s8p0#X1X!4mcyjA@`;r+2!s}L zTbyw4+r4B@#3e1&WY^>$_l=@IQ( zWDNyac*N3e_B)dTDDM`(oz-S~fC5m9#8q$+md$2df|RNf%1tv9s@Y6xGoNe&G?4qH z5pLeQfW|M=kXGc2Q|J2e*Ton<5@)K@yQ;DhbS_KrRl@TPkD=P96L9@l1uJOtCSYR1i&wz_qDb4pWmKj zBNI={Y&Yvptl^OG;nE&J09cGmz$dk$V*TW}O12_5WGy6&I>rGe22I`{uAfF>eK;bL z98g#jgCB1Ukn3a5yg~sYveZZgQbS}89~)Bju-x~PRzDFtC!T~Wtx~DYnu-wf74g1$ zIe<3v9VAr9O*n`x=3sq>3h}_Fn}h{=lDG;sBO$p#OKfJF?*9UqNZR|uw~^Pd7LOhe zKT~{Se1G)}!ZOwHMF9m+$NE%VIQc5Kdc`ixrQs?g%BO77L|i!^K0@`q0>NLWO$wmv zn)t2EHj9q9M@%UMifts0~xj51nZ1fXMR_%3p4y+{~6 ze4!={T>2L4)7T_@xQNWwK!{WaPCm*lUP9Fp3P7z-cd4Q>;(=K89ut%4f0z_NHQ9k? zwpujDRj?RgDI3v+EUY5{q*64Cij0zkWdxvx3mQi0Ejp727#s(P%%uQYSeL8~M?d8{ zpIFuMxN@#Sd1-?t$q_!hVl}oYDJi`^Hxb&*uQDp9f$tI!emvv3&>@*&rlM72(+&L}uwCTxJc2wF~Oj zMDrcL$k%?9Qg6Z}RvR!;S^AFygr@6W>P!$UF`VZc$M5kMX%BgX^M{DO(JCPgWT{&_tvgE={doQJqxk*cdD^a9<@BOnd3$qg&AIcU=8hTqhI7KS#i5xP*SC-Jid|xng`Sibf&ROy|rG(Cw(9c0~e1Yr_PIn%L%0B2as~eC03{2 zv$HChWz`-WQK8wLnBwsgOLHNC z08o$6CPbTFbUp`uain*o@!%23BD+mmaY)%L9G9qklDs)wgl2LOo^FgFk;Nki?}Zkx zcQEc%{Z+U z9CQzy``0Ob#U7t;o3c7mi8P^)VY6Zu%p7LH*zRNKSJfF zX%=kUlwj?u#4K~y?&0y?{qHIL|A4e|u{c;ZpOnRUa1Z+w_Fl?VIhfdeTs4vWKH)a5 zMoZt9Te-}@5)WlKc+Vy4=7M-&>H*RlmL`Pfs9-~e3IdZ=@Ok6{I1uH`9h9B{_(xkg zTDyKY=HT-QR&AJ1s*(zs7h+|AZVzwS6a!>6FB3-QsW9O=s@Rauf`1~5D5nBjx4C5# z0HMjt9G(1Tk9{8bDLo#Nj?Tf_7#2Pc(VJQTs$5$AVy~z?mOO$0(B>4J!lf2wmUt`> zO#pn6zFgNMa^8qvf(kjjt06>24=EhRGfYsaNH>y) zr(2GZO0?hJYtF2RH6GO-Zw9AmWQYo^A0$^eFv%6m$3kU>{hr|}s{axH?DmLI`jc;* zmic;#xo@z<+{Q0j=e-xbHRG+Q0uz?B%E3um>0la?WAN^4zmMO?f5!MHA0dNte7~9U P00000NkvXXu0mjfh7>_m diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-mdpi/notification_00_post_lollipop.png b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-mdpi/notification_00_post_lollipop.png deleted file mode 100755 index c1d9e6f6b25e6f6292250cc61e27cae82ad8303f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 826 zcmeAS@N?(olHy`uVBq!ia0vp^TR@nD4M^IaWitX&Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~Cp){eg*AgUP>$)ir;B4q#jUq@9Lo+F@HiaQI{$tD zrd@BBZDI6L%1rZRw6;H(SK*TOOx&b!1``W!6Psi60znfFDKJwxLjb~byPyDJ_AYRQ zGJ)zKOt2OZ6I1t!{FzO`kC@j_To!rZ>Z01GUs?5E+&=bu-FKZ&3muOyC|tV0^-k#> z%?!cr=nG0>+ZVLf{JpbuL90%VBX{JDYT2Y^mu>WgeU`8Os+eYV_J5+$%MzJso;JGe zeYRRU_S0tQ_kXuvFTLp9R?RsAg+~vt)?Qv+EN1(%B{nBmz!x(S8cyGjli8oV=m9LJQmvrn%2YaEkaB|~|A{H~lk*$I2* zPLr7bBa+dcHSB{|cr8y}H}|esmPK+hB@)vY$d)`7-qM^qr)gWE(AEXA5y|iWKV7n! z-6X!|-s=DVwjb}?xw)$2XNk}5fA^+FUEo__`BJ`wBkkQY3nSyBHbJLLfq~#H;Am~J zNNh`U(mxj4s%GU^pQkZ@xT5y*m9)0?vjs{mjbocy2uCr_X7tB4c2#V!hb1Due zCtrSjQ>5$TrssmIv`x(IPO^fM1~fhNE?E5`Rp#^EcU-zzpZ{Dix*1W_08R|h6ySIP kntn)2N;q}5x$k4N{~mC8mQuD7FqJcSy85}Sb4q9e0P9CfXaE2J diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-mdpi/notification_01_post_lollipop.png b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-mdpi/notification_01_post_lollipop.png deleted file mode 100755 index bb0d1a28b09ef8fe3bc5544cd7e126fb0ba26c79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1019 zcmeAS@N?(olHy`uVBq!ia0vp^TR@nD4M^IaWitX&Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~Cp){0)I!BK1`G_$9iA?ZAr-gY-gV4-Y{27iG3dnK z^=H=Yda2fz94++oU!H;E@`dpdlCH)RXZ}uh*tdfrJ6zJ#ajXSpZ^Z9RYf0pzb}19 z<2|uWYk5l|Pb8SL%buN=ZheFK*{AcC4P}9QXEc^6?%mK>_HoaN#%)v2uHep?F?)YE z?~H?Nx0W?ZWr!crX>7ac6W!2uGw1Yu5w2Idja5T32zV_lK30}6m$M=of8E&P` z`g*7Kg3m!^x9j~(yFW{aIoKP|*|Ik8c#gCGjVrO+OTEv;p1UwN;5f?}#xI|pUp83z z?Fqhl!ECEC+lA@{d^5h=m-V#jcg%L3eX}jEh=p@TcVW}QyGL%Eb8yym=ZiGj z>TvtgI@g`Nyjx`~uN1H3VGdn-lfOB1=}dm+X~rg3wi#b&%iZVToVzX;NX&Z*B>F%^ z9gwK4OI!NPj4MvTbl%m1g$Zo8qBYMr?5>D=;;?%{+zt7!SrviIDblxGzpYDgzI`oj zjl+3n0R`sVY-gS=Yk3VXWHWGeG_I?=Ec$^dR(7Y_)8;gmEf5IJBGVd(&Lp`P^lj%I W>+jtQ{@QWDsGB`FbaJ-<9!NS|b24-?dL79RkP^NN* z0EFoVR0n4Eg0+B{aNVhE9`)y2Ji6<2!D*evZh1I{DgX5E>(qH9?Rz)9p5xcPw>nRj zg&V)$_SoZ!^98dWORlQVW&*{<>ttkN1)PB{c_F&xx3QVYRB8z>uhk=lHej;Lb9W{l{)zm=eWz+3^A2-#@=+t#}{F zrI<1M)*Zbqvt;_Vx6P9;;`p^E`?y6x#K+dd?iZH3*Sg(ts{0YY=iU5>o5I^?2*=!C zc93h^q&Me_j`-Spzw!LHb6#6cad_uWuM6RP(P!#6`+nZ?+@!)V{r;)5YV@WLpjNDx#=#qfRiFCwc8eKoXa}*5tm|`x0UOa4+phd niBAUtCeT!bo}k+P)-iT}^PS>-Y1ukpvSsje^>bP0l+XkK!bm+A diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-mdpi/notification_03_post_lollipop.png b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-mdpi/notification_03_post_lollipop.png deleted file mode 100755 index 502584f909d93e825c765ece9db29b64d708c510..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 821 zcmeAS@N?(olHy`uVBq!ia0vp^TR@nD4M^IaWitX&Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~Cp){WCi|;B=?n}^hdf;zLn>~)y?fB_v4enXp!CoG z^*e8FXyI_VwJyB$99yQF$Kr2uy(~GO#AL5!p7o=Eg+q#kw~5VBIYYn%%yhe;0Acnn zaD*})o1sjgItUZ2rFp?ai@wu>Ii+=<)9sjCE_@XH|KeDTX#UY>{tz0CVvWQ2EoRnd77YVnGzF?{a5rD~;Hr!M~F zyzT&V*~?evt=c;8)aAR%+2lU=xL>+lw(NWDbJ5>5C7-ypndUxqgq7QDY>UhZEY$Zb_;E4XpN>GkT*nHl^4Pi3on^?TmSw{CtH z-j?MHaz{O25-X_!5r6*aCOIBIuKS3$hHIL%HEJ+AUVuhI^MaqfX7B%fuFGKDu9U&Z zEv0ySAt(}{!HuL&5E5B<<84-%)*rV2U%!4Wu}so++;1mR*ll6=BD`I-fYF^@w}5dw z->oX8N7o#?qYvaZZ=1!_zoYm9lf1;oB@33XQ_p@;f9Iln@14x5_01n0m-_>KV^vkf z9dY4eBaGPidwYfX$GVKwO*oPVY3>CluEg#B6CT%}Prp0M3z)zeJYD@<);T3K0RVGb BO?ChP diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-mdpi/notification_04_post_lollipop.png b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-mdpi/notification_04_post_lollipop.png deleted file mode 100755 index ffd8c43d1268ea4b31117dcb7c3d321a67dbef7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 970 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 SBMsgF+}G06EWd60@_zt@es$dd diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-xhdpi/g_play_img.png b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-xhdpi/g_play_img.png deleted file mode 100755 index 9a50affda395c98ed77c3dff9321d00bd6bf32e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9614 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§ycc-A1Fh_!@thp17}Kt@#d_Y{`% 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 diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-xhdpi/notification_02.png b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-xhdpi/notification_02.png deleted file mode 100755 index 99ed78f4ee91ecdff56c63b6c6e6304df8cdc35f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19772 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 Q|7R{uHC@$P%BQ{m2XC*a&;S4c diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-xhdpi/notification_03.png b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-xhdpi/notification_03.png deleted file mode 100755 index 5f0630321288701b82326c4572dbfc635810af7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20895 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 H*oOQU^z;e| diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-xhdpi/notification_04.png b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-xhdpi/notification_04.png deleted file mode 100755 index cca2e553fd51e7d890d52991bdcb52aac45dad83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21794 zcmeHP2{hF0_a7Si?yLixAKnvW{;=F@x4v%2QWk4?F;c2M zRmFOTc}>$)4o}bEn}>DpWC%p^2ENQ{b<1?5hGFA-Xt*n~yQjC8x%Q4o@wGp~QCDqp zY|fni{CG%){n;Je{_!cfyL3Zz&RKIk6ODpp@Q%Z2dRP}bqwahuCBcH~s zm|J>Xu39X}96liT^iLnyw1K~hnYYH?K1aSsJ7a7PMr%VCc*5pzg|BWtem&9LJT1H& z*BhWzG-I$9Dj+s_Zd3Y=Nj$&N)C{6Z(J?&2E+zG&=Vx}WH>go0UKX?6vu0_Qqc-0X zAHfO}hCq;m?$)+sTl2k0G~QDI<$`y{DEN620Ok;g)-FE+3VjqqhB{+h-MzFWzLZx< zK;2!mB@U{Z!_5f>7&mv503v38fQ2q6!SI z2vby+S41FHRFH5u^v92c4mI?szXKRWHgJ?@iX0kf1K~>*vS5 zJPE%R@*@4f4xkA0LlIz#3UJsz3Avzu$q>AWxbKhVf`(ym7*C8BnFQn%|51+c)6Rd1 z|7FQv!~eQ4I1_X8e-{4vyq=!_xHO5p+Xq1K1Jb`N`%{u+?N7kKtS}_JHxZ55?E|(V z`A@qiyJLSJ&R;Z9NB;HMF@EmMfuEQMf;*RzIn+`>!k_J*qakY+BGih}Ii+4ehQU8&a z)pKd|eBTeAXpP6?bXL6PH}wJLqwW#9-5iB>_oDLQj#XRxA+$=L3mS>V6FpI69d}QZ zD+WgJa@B(U?p!tVmt7$Z@HjjXY!joStOfh0?thd5q-?pu$v+<2%2*$|9r&UKc*5UW zR!v)_=DW!vO}$8DlouLfYN!J`6x`iikg94J3>u-KDvxp2z{snhup08tN-9e72p1Ja zl#;WG3Kp*P9RPFl)#86sZHPyEQ{4`zUSTK~JQ}F~{amUj4KxC)2$$D@qcr3d71h<{ zHC$9Q6>IsE;c1oe+>HG?gTENGKnSix%uJeZL>-m)s8__rD+Je+Iyc z{#D}tzJ{+G#_KOW5Byabsi^eRUsqIppY`ubNO&yS7e&PAxdQw6&m3+=?_UM~eF3x^ z%F7kwq67Ph-OmnM5iJ-s4&mJYFP`0h=7|5zvs=xz|1ZvNyb#cGF5&y8B^pwubH?aIBn$2H4nlA=;6DlsxpWlB-63NUj*l zs+9CQ2dwmhgcs!6uwTjc-{|2N_5M$O_`Rk7Nv$-x7>m#VLchs?i#|RyqYSuc0HNPx zz(pS)no$N^G=R`=GT@?*56vh8E*e1SHyLoz$A@N=0T&G*^qUO0=;K2(%7BXo5c*99 zT=emw8D+pl0|@;l11|db(2O$Rq5*_{lK~ffd}u})aM1ulzsZ1$K0Y*~47g|jq2FY{ zMIRrUQ3hNzfY5I;;G&NY%_svd8bIhb8F10Zhh~%k7Y!ivn+&+<<3lsbfQtqY`b`F0 z^zoq?Wxz!P2>m7lF8cV;j56S&0fc^&0T+FIXhs=u(Evif$$*PKJ~X2YxM%>O-(#Gv#a1ZV#L653 z3D^dKghfCgbIag;5CXAcg)s5kg73thhd>1Jt%t=DArK)iQ$sy#zqi8~L;LIw&No!G zsx97HwKW-pq6=-|yLRzhd2w=T%6pKElv7Y}CXqHBJ$lsE&aSq_}Lq9t+`oS+DQP3w$4CFli)!b>$h}9LU>vpZlkxFU zRyPcTgSE}f%%B3X8#iv$en341d{YVPWLsqh`I6f9KAf z8~FKmOJ{m#85a;xHz`E9C-#%ktVJ=FWfssL?^p8J#w)e}^&ud+j^zvH+1zov$Yn3@8Zr~0g*VBbET zkZ*IYL9=5$)yq2K;!N)D?v0Nh>m53@`K;MCtNr^Uh#P61r zI6FIkD6)+FTnF6aUf_(vXjesSW1|UgYQ9E>g_i%s+NP!^;A|1P8*Ii@~%Ebj@$6Kqu@%xT;A~qcgLdo2%?a_60 zl?hoKHy)gt4|5TSF{Ew~jh1BR;MnJ>M5(W5sjsi6ym@n?vQkGQqdDxbhuY%xTemnC z#w2qiOFBltN!Ir^B%oA;EAj+eKSUc!=m8fI78dqXewY2)<3(53>E`Cyn;hbZ8Xmx0QnMqj^%GNRm<92DjSD~5QSgU3C#{4KcU_3QCFb*JLu z3>_V}0s|Hh6htXqSp1gO*N4I3@x34FVmHLrp>~jMhj-kymGk?yhzJM_ocVI%Tj+%g zOQgOh{8~Y?8~XbC9xRW7SHIaY@!R%gyp+8b07>8+yV6*svi7lUO<3>X;9z;{b$TXh zd3&;1(DKsEb_E6Qv}jv<`?xPv%UjK|l`cImEh)JSpz6^;KMkaMGZl>Z`1oME{t8rm z#Co2@v@{VP9wl{kK`JyT6iT;f+sMd>kf`XktbLo*(zrZ5JwfALX*tFYdICi?n82CQ zDDPCvAAf8deODe0C?*r8F5(k^`t;?zJTA2~`P@;aeAl<33nS{BoSd^63FiCuHRRcq zj`f{)V%bt37axxb2oUxuUoxB-FMH<&_yG!-{=$U|jZdC@SX?~s6vB4qab#x5JR1iG zM`lIma3~-T78aJV4t!PC?c1j#b==RLI|t06-VDjJ`fDhzyP-GfD7T#70xYXPz4 z<;km8#NNgxs;+ML;>1%} z!Qng|yQ60w0}Wi+Rxy(U&(Ba~qMr8Y17ekymR{t>J$d@{1%(p!=+PtQrPCuLo`5|g zbN6(WM^^Zb2D!Vly?XVEO7t0;zGLUB7V8Fl&Gzm!G%#T99~eNq!f0>h0ct4S-8{)= z`~sR!{5KoGV6fi4r{@>A*ZTf>?%atqb^KP3b&04H2OhsFfv@*`GKSA5JZye4Jabt) zc%Cocsj8o|n2&v(SJ#6W5DYVmbgFYiwO~$_k0vIRxY+mYycRSwn$i8{5OjlXwpGtW z-_wSPz?lVy%Bz~EGn=C7ob`Nt)%*MVHFo*VO<=BD?`#edC`k^P8Fi?>5G3_g(HSm8 z>FOHwML~D%60@Q-*QgJa>AfCF5$Km&P27peOuGkmePHUjV(BCa4LY4 zo1191QA{l1)2C0DMiw;9VY@G7?e*~R(A~z(vVOg<=T>M|M4UxVZA%N^fa_JO9Uzoh zOpV4_4p>Y=;&r2EqUPNQd2j?Gbh0mUeRS(wY$eIYN?GsYq;WY|6!p{kS13E34D;J{Be> zVTKY9r>A|!?2?zAV(zx%+Pb=?WnZCO(CDF_9#nIIGcbD~1;Wq+d$*o=%B@?sQZ8KR zSxh&SIBs=AYeMA$NKpL!5#TYma2r$h2!c$fZNw)oA>m4SdB>MaGX)i3UZkN!Pp6Bf zvU0@h*EaXwdGR7`0TojNpPZbZAltN^!}o?(?i427w;Oz68+IP&BjD8H56DO+SKXLR7eo5JF2!%R9^ z`rG*=l$4aNS1{GWfscmU%5~Z7!RNGa*6QAREdfl}1@`rV2;V0%QizkKIa)r+#LwYs zqBiQND~l8SV>6I2lo;Q9UYV0Q;$d}1JGUdNC*VVi*`m3cpeR&I;$GD!eG?8hE-zH5 zh=_q%ZKaU)^zPva$`Jj1-KgJL^CqZLN*B8FH8%4k~CAV#hnsm+2&!0Tt zw$UlF|7PYh_NLaGx<2KiMMXtI!ouwHoxX;KYnwAPXWEYtWB}GuWcVRR$9_(Pp~ObK zY-@gQ?xoUFK@bd6GBUWX+vs@UM8(8-l1x4-JCM=nh|;+i4>kn29(<-l$>7mZR7~>q zPJHL3j>Tff@W&87{K+;&X=D%KJOu{t;o@s)c=ArpVqOQ-n*%? zptABbFp9gSrD!6NSK++u)rO)%*91}pPKuluH7zJOk)7T;HU___9eCp5L%rPFw^{5z z`Qq~*ZOsX?&6-hz1b&A6NzsdR2$_EU`jp}2{Z0#hfN7SNmS(?%E_1{iF`q!KIp@DC zQokpQV=oJ_sx5gBZ)zK$ts0;esj2y*y`AmW>wxQH&aMvexwJY`+F^uFyjY2Z1} zo6Fp66_Quq3$r3XT=l_63KzAGRBOM?o)_6J9KH^i= z`l$6)k)PyUUFaBs^-eo3$H;B^>f6xeg>K3aIo&2{`t!uhrq6(~W+yY3Pjl(sh38`c3=^*%ag1!waX^sumr8vc3aOj2TE!Jfekec&-TFRzPjQ-x7ZA#;6# zUwSUu=MkYwPUSvarC#s!j~yF7{xoIX%UCcGM3Ue=iQA;4W^*%)^~IP$O#@Sl z%a^>*u#>K>g_CbLZQ5iyc!Xml|7t7fB_rR(uvU~7^y;k-1F0cDKfjxs8|%En#te(- z?CfpL6d7^xGcr9fZ}+8UEK^H`@bEPtAXpzf z80}I_^6~NM7WUB;JOJ{Sk3#lSpFSv113Ygs_K4#@cO~K_-n;i+)fZ7aMC} zYRU#u%=bR!!4~<2t)iPZ$9!(hH@IPag3JUaE#%pzCM6v|dzP>3B1d!VEdkcG0Q$z} z=6<<9L9Dv;!p+jjN$ll;!*T*wva*;!YRuHoX=-XJUSX8bz#MN>dr0X#O3204)j&=_ ztRr2WZNz|jGWHMrl8U^d+Hv*o-$Oz0(0^OQ8dbBu3SHkvL=gy-ffgCrrMg(bq>C4u z?Xvujz2>Zig5;Y$Dx9?L=@8i&I5OaIsLz$w&)~mH)m=EtCo0MXLRnjzZ5Os<{FCb0 zr+pynA76MsKR<7QnSN*5Lq@)6Z5`lh4U&I6@bTlAk59yT{XN-M_7wrilgiXQb7+Wd z=r*Q=a=Ff#Z7`t;%i-?552QgLp|2WZ0`ahKWSAx2+3j3pVd3$lq@=I}GB^jzoyiRsuRP?}JX-wrIo58vxdq5wY`dW1YUKuL zeD=%`KtI2*FcYi+a-##c_&th+qoShj`HeeM^4-0?`9(!V2S-M@1}Bq~lkX9F^i3i! zW@JPi&g<`#Y=m=y`qR(B|I~T$^78xRnnPsE<=7&%ef6ZW)^ zeK4W6hxPGB4?yi;lMlg+fdO#j6bhvP-=xWlY!j5*K&2Q^U#6GUgTM+N1Qg8T7ord* zZnf7uS<QOOD1NAv$1&fWSZy2rchlO<%3AH>&a%0SM(gR_KEQ56@GBU}rkNAb={7Po6x{vFq=W9R)!)WNGRkSWfzC-k51_Nd;KA>f5|5 zxL42!T$f}L2}r`eDnvWi(an)V6kLCR1^M{-=RAYEt3ne%br^U0^a(@k?fK@1pLQ65 z48F574%GOhZx()En%K|noDB>*?QBRCvqg4nKUaA7ri`{JIq40#`T zLz;tC5Dt1`{^?tPT`?W+t}DaxU-E--8J2|Z6w`P9_ZHNs?f72(BRvE}M= z-!J-GJ4Vwn8Wvp@fzhGgCNn8+DonwS*;ZL4CFe@nOzb0fdzJ&c2LPas9otw@QIReW zO%q%kd?DFc?#lz}7vriJi6me2P}kb!4Bn#9^C>BQxS>1{K8;8ulCHe+n0xY_8#iJ| zs8g+6=`wLAz8M%8_iS{_Weh1_vkBhJm!3desAik-Q!{ zFDro3fmpU^qFD|K9csCpvoAAbIym^)(93PqGAcVe8>RVl(*gaC5g)RzZ|`_-L%9Io zy=L{ZCQ{e)^NoS!;!j7t@+fx0HQ2!BTEN|rVjl$R|~iI`^A%+ zn=KY+dlNwATz)^)$y*s@5g@s|WOc*R(vskz+ziTdxQ-5Y@!^rCx#_74+bjnKK|q?L z-Bk(m^8sC3bIDj>vD@zM`c*V{s2ihpZ3J_?I`18S^2DsMZ({$eKihF?&zhRDKxzWY z=J%Zk%QmfCVo>1(HFM8MeXBA|MI_|z-Mg1SF&|LT&dc6d{uosvRwMqghdYn=3 z@rkl__)buMb_dUh-n@CU#%tTyGmfT`7H~)M{GvAXM#Z(QhvT>|vvd630RQmYbg+xVuZlcs+5?_v@yZnc-pT&ETU)P%6a=#EC{CGAuN< zaJS*qaGsv1z(5gjz1Vf?21~^8BCUf^lo?3;N;Qy9*ThT*(P7$3m#dcrl+H?M930%< z;-L!CbHwKgP=230syCnkc6pE3$8NpT##UN5i4rXYpPri1%R7L^V*72maRcm!)^NEl zf?76ico;_w;MUgZWyi(XMr6L(J37`=lOtfc4?>r>c64-zwH0?IXNmW zj?)E;ov73jWD905w3V~9wFPNJHK-2ANYSqW+Q97!N=igV9p`oF~r+p@S_kzkv4;)9E^!qcE9M+syL-GR{Iych(JnZqOPU%})^MNzn z2re2vessBd?V5zVJQql3Ku8StE&gLW-^G|*4c=7f8eQGeFlZKAc%(EdXqveF{;<*u ndj6M&SC;#wT;s}OH)L?<8)$$_P&W1dZ<_A5FubjQB>cYs_2>3d diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-xxhdpi/ic_launcher.png b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/drawable-xxhdpi/ic_launcher.png deleted file mode 100755 index dec0b850aeb468076ce78feeb3b6acffa635f5ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24726 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 diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/layout/wear_setting_0.xml b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/layout/wear_setting_0.xml deleted file mode 100755 index b7491b59eb..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/layout/wear_setting_0.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/values-v11/styles.xml b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/values-v11/styles.xml deleted file mode 100755 index cc7b3128b5..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/values-v11/styles.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/values-v14/styles.xml b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/values-v14/styles.xml deleted file mode 100755 index d581045ffc..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/values-v14/styles.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/values/strings.xml b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/values/strings.xml deleted file mode 100755 index 20d28b27f4..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/values/strings.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - Android Wear (Device Connect Device Plug-in) - org.deviceconnect.android.intent.action.notifiy.androidwear - Device Connect AndroidWear Notification - DeviceConnectのAndroidWearプラグインの通知 - diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/values/styles.xml b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/values/styles.xml deleted file mode 100755 index c1d5d9d7ef..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/xml/network_security_config.xml b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/xml/network_security_config.xml deleted file mode 100644 index dca93c079e..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/xml/network_security_config.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/xml/org_deviceconnect_android_deviceplugin_wear.xml b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/xml/org_deviceconnect_android_deviceplugin_wear.xml deleted file mode 100755 index 0a48048e41..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/xml/org_deviceconnect_android_deviceplugin_wear.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - デバイス検索 - 周辺のデバイスを検索する - Network Service Discovery - Searches near devices. - - - デバイス情報 - デバイス情報を取得する - Service Information - Gets service information. - - - システム - システム情報を取得する - System - Obtains system information. - - - 通知 - 通知管理機能にアクセスする - Notification - Accesses notification feature. - - - キャンバス - キャンバスにアクセスする - Canvas - Accesses canvas feature. - - - - バイブレーション - バイブレーション機能にアクセスする - Vibrarion - Accesses vibrarion feature. - - - - 加速度 - 加速度機能にアクセスする - Device Orientation - Accesses device orientation. - - - - 通知 - 通知管理機能にアクセスする - Notification - Accesses notification feature. - - - - タッチ - タッチ状態を取得する - Touch - Touch event. - - - - キーイベント - キーイベント状態を取得する - KeyEvent - Key Event. - - - diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/xml/wear.xml b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/xml/wear.xml deleted file mode 100644 index cde84b0e58..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/xml/wear.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - wear_deviceconnect - - \ No newline at end of file diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/xml/wearable_app_desc.xml b/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/xml/wearable_app_desc.xml deleted file mode 100755 index 3291cf8994..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/app/src/main/res/xml/wearable_app_desc.xml +++ /dev/null @@ -1,5 +0,0 @@ - - 1 - 2.0.0 - wearable_app - \ No newline at end of file diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/build.gradle b/dConnectDevicePlugin/dConnectDeviceAndroidWear/build.gradle deleted file mode 100644 index 087ed2dd61..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/build.gradle +++ /dev/null @@ -1,18 +0,0 @@ - -buildscript { - repositories { - google() - jcenter() - } - dependencies { - classpath 'com.android.tools.build:gradle:3.6.2' - } -} - -allprojects { - repositories { - jcenter() - google() - } -} - diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/gradle.properties b/dConnectDevicePlugin/dConnectDeviceAndroidWear/gradle.properties deleted file mode 100644 index 0d089abc76..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/gradle.properties +++ /dev/null @@ -1,6 +0,0 @@ -storeFile=キーストアのファイル名 -storePassword=キーストアのパスワード -keyAlias=エイリアス名 -keyPassword=エイリアスのパスワード -android.useAndroidX=true -android.enableJetifier=true diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/gradle/wrapper/gradle-wrapper.jar b/dConnectDevicePlugin/dConnectDeviceAndroidWear/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 13372aef5e24af05341d49695ee84e5f9b594659..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53636 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ⅅ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 H-+%o-(+5aQ diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/gradle/wrapper/gradle-wrapper.properties b/dConnectDevicePlugin/dConnectDeviceAndroidWear/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index ee31d1c5a8..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Tue Apr 14 15:43:39 JST 2020 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/gradlew b/dConnectDevicePlugin/dConnectDeviceAndroidWear/gradlew deleted file mode 100755 index 9d82f78915..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/gradlew +++ /dev/null @@ -1,160 +0,0 @@ -#!/usr/bin/env bash - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar - -# Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." - fi -else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. - -Please set the JAVA_HOME variable in your environment to match the -location of your Java installation." -fi - -# Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") -} -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" - -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/gradlew.bat b/dConnectDevicePlugin/dConnectDeviceAndroidWear/gradlew.bat deleted file mode 100644 index aec99730b4..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/gradlew.bat +++ /dev/null @@ -1,90 +0,0 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/lint.xml b/dConnectDevicePlugin/dConnectDeviceAndroidWear/lint.xml deleted file mode 100644 index 715caf3d22..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/lint.xml +++ /dev/null @@ -1,190 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/proguard-project.txt b/dConnectDevicePlugin/dConnectDeviceAndroidWear/proguard-project.txt deleted file mode 100755 index f2fe1559a2..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/proguard-project.txt +++ /dev/null @@ -1,20 +0,0 @@ -# To enable ProGuard in your project, edit project.properties -# to define the proguard.config property as described in that file. -# -# Add project specific ProGuard rules here. -# By default, the flags in this file are appended to flags specified -# in ${sdk.dir}/tools/proguard/proguard-android.txt -# You can edit the include path and order by changing the ProGuard -# include property in project.properties. -# -# 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/dConnectDeviceAndroidWear/settings.gradle b/dConnectDevicePlugin/dConnectDeviceAndroidWear/settings.gradle deleted file mode 100644 index 078b083939..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -include ':app', ':wear-app' diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/build.gradle b/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/build.gradle deleted file mode 100755 index 22c0a2ebc4..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/build.gradle +++ /dev/null @@ -1,50 +0,0 @@ -apply plugin: 'com.android.application' - - -android { - compileSdkVersion 29 - defaultConfig { - applicationId "org.deviceconnect.android.deviceplugin.wear" - minSdkVersion 23 - targetSdkVersion 29 - versionCode 1 - versionName '2.0.0' - } - 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 - } - } - productFlavors { - } - tasks.withType(JavaCompile) { - options.encoding = 'UTF-8' - } - lintOptions { - checkReleaseBuilds false - abortOnError false - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } -} - -dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.wear:wear:1.0.0' - implementation 'com.google.android.support:wearable:2.5.0' - compileOnly 'com.google.android.wearable:wearable:2.5.0' - - implementation 'com.google.android.gms:play-services-wearable:17.0.0' -} \ No newline at end of file diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/proguard-rules.pro b/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/proguard-rules.pro deleted file mode 100755 index 1c560ab8e2..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-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/android-sdk-macosx/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/dConnectDeviceAndroidWear/wear-app/src/main/AndroidManifest.xml b/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/AndroidManifest.xml deleted file mode 100755 index 22de2d9b83..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/DataLayerListenerService.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/DataLayerListenerService.java deleted file mode 100755 index 4fb882c213..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/DataLayerListenerService.java +++ /dev/null @@ -1,247 +0,0 @@ -/* -DataLayerListenerService.java -Copyright (c) 2014 NTT DOCOMO,INC. -Released under the MIT license -http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.wear; - -import android.content.Intent; -import android.net.Uri; -import android.os.Build; -import android.os.Vibrator; -import android.util.Log; - -import com.google.android.gms.wearable.Asset; -import com.google.android.gms.wearable.DataEvent; -import com.google.android.gms.wearable.DataEventBuffer; -import com.google.android.gms.wearable.DataMap; -import com.google.android.gms.wearable.DataMapItem; -import com.google.android.gms.wearable.MessageEvent; -import com.google.android.gms.wearable.Node; -import com.google.android.gms.wearable.WearableListenerService; - -import org.deviceconnect.android.deviceplugin.wear.activity.CanvasActivity; -import org.deviceconnect.android.deviceplugin.wear.activity.WearKeyEventProfileActivity; -import org.deviceconnect.android.deviceplugin.wear.activity.WearTouchProfileActivity; - -import java.util.List; - -/** - * DataLayerListenerService. - * - * @author NTT DOCOMO, INC. - */ -public class DataLayerListenerService extends WearableListenerService { - - @Override - public void onCreate() { - super.onCreate(); - } - - @Override - public void onDestroy() { - super.onDestroy(); - } - - @Override - public void onDataChanged(final DataEventBuffer dataEvents) { - super.onDataChanged(dataEvents); - for (DataEvent event : dataEvents) { - Uri uri = event.getDataItem().getUri(); - if (event.getType() == DataEvent.TYPE_CHANGED - && uri.getPath().startsWith(WearConst.PATH_CANVAS)) { - - DataMapItem dataMapItem = DataMapItem.fromDataItem(event.getDataItem()); - DataMap map = dataMapItem.getDataMap(); - List segments = uri.getPathSegments(); - - String selfId = ((WearApplication) getApplication()).getSelfId(); - String wearId = segments.get(2); - if (selfId == null || !selfId.equals(wearId)) { - //WearのIDが違っていれば無視 - return; - } - String nodeId = uri.getHost(); - String requestId = segments.get(3); - Asset profileAsset = map.getAsset(WearConst.PARAM_BITMAP); - int x = map.getInt(WearConst.PARAM_X); - int y = map.getInt(WearConst.PARAM_Y); - int mode = map.getInt(WearConst.PARAM_MODE); - Intent intent = new Intent(); - intent.setClass(this, CanvasActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - intent.putExtra(WearConst.PARAM_SOURCE_ID, nodeId); - intent.putExtra(WearConst.PARAM_REQUEST_ID, requestId); - intent.putExtra(WearConst.PARAM_BITMAP, profileAsset); - intent.putExtra(WearConst.PARAM_X, x); - intent.putExtra(WearConst.PARAM_Y, y); - intent.putExtra(WearConst.PARAM_MODE, mode); - startActivity(intent); - } - } - } - - private void startSensorService(String id) { - Intent intent = new Intent(); - intent.setAction(WearConst.DEVICE_TO_WEAR_DEIVCEORIENTATION_REGISTER); - intent.setClass(this, WearAppService.class); - intent.putExtra(WearConst.PARAM_SENSOR_ID, id); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - startForegroundService(intent); - } else { - startService(intent); - } - } - - private void stopSensorService(String id) { - Intent intent = new Intent(); - intent.setAction(WearConst.DEVICE_TO_WEAR_DEIVCEORIENTATION_UNREGISTER); - intent.setClass(this, WearAppService.class); - intent.putExtra(WearConst.PARAM_SENSOR_ID, id); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - startForegroundService(intent); - } else { - startService(intent); - } - } - - @Override - public void onMessageReceived(final MessageEvent messageEvent) { - // get id of wear device - String id = messageEvent.getSourceNodeId(); - String action = messageEvent.getPath(); - if (action.equals(WearConst.DEVICE_TO_WEAR_VIBRATION_RUN)) { - startVibration(messageEvent); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_VIBRATION_DEL)) { - stopVibration(); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_CANCAS_DELETE_IMAGE)) { - deleteCanvas(); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_DEIVCEORIENTATION_REGISTER)) { - startSensorService(id); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_DEIVCEORIENTATION_UNREGISTER)) { - stopSensorService(id); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_KEYEVENT_ONDOWN_REGISTER)) { - startKeyEventActivity(WearConst.DEVICE_TO_WEAR_KEYEVENT_ONDOWN_REGISTER, id); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_KEYEVENT_ONDOWN_UNREGISTER)) { - startKeyEventActivity(WearConst.DEVICE_TO_WEAR_KEYEVENT_ONDOWN_UNREGISTER, id); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_KEYEVENT_ONUP_REGISTER)) { - startKeyEventActivity(WearConst.DEVICE_TO_WEAR_KEYEVENT_ONUP_REGISTER, id); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_KEYEVENT_ONUP_UNREGISTER)) { - startKeyEventActivity(WearConst.DEVICE_TO_WEAR_KEYEVENT_ONUP_UNREGISTER, id); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_KEYEVENT_ONKEYCHANGE_REGISTER)) { - startKeyEventActivity(WearConst.DEVICE_TO_WEAR_KEYEVENT_ONKEYCHANGE_REGISTER, id); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_KEYEVENT_ONKEYCHANGE_UNREGISTER)) { - startKeyEventActivity(WearConst.DEVICE_TO_WEAR_KEYEVENT_ONKEYCHANGE_UNREGISTER, id); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCH_REGISTER)) { - startTouchActivity(WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCH_REGISTER, id); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHSTART_REGISTER)) { - startTouchActivity(WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHSTART_REGISTER, id); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHEND_REGISTER)) { - startTouchActivity(WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHEND_REGISTER, id); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_TOUCH_ONDOUBLETAP_REGISTER)) { - startTouchActivity(WearConst.DEVICE_TO_WEAR_TOUCH_ONDOUBLETAP_REGISTER, id); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHMOVE_REGISTER)) { - startTouchActivity(WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHMOVE_REGISTER, id); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHCANCEL_REGISTER)) { - startTouchActivity(WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHCANCEL_REGISTER, id); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHCHANGE_REGISTER)) { - startTouchActivity(WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHCHANGE_REGISTER, id); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCH_UNREGISTER)) { - startTouchActivity(WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCH_UNREGISTER, id); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHSTART_UNREGISTER)) { - startTouchActivity(WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHSTART_UNREGISTER, id); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHEND_UNREGISTER)) { - startTouchActivity(WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHEND_UNREGISTER, id); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_TOUCH_ONDOUBLETAP_UNREGISTER)) { - startTouchActivity(WearConst.DEVICE_TO_WEAR_TOUCH_ONDOUBLETAP_UNREGISTER, id); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHMOVE_UNREGISTER)) { - startTouchActivity(WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHMOVE_UNREGISTER, id); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHCANCEL_UNREGISTER)) { - startTouchActivity(WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHCANCEL_UNREGISTER, id); - } else if (action.equals(WearConst.DEVICE_TO_WEAR_SET_ID)) { - String wearId = new String(messageEvent.getData()); - ((WearApplication) getApplication()).setSelfId(wearId); - } else { - if (BuildConfig.DEBUG) { - Log.e("Wear", "unknown event:" + action); - } - } - } - - @Override - public void onPeerConnected(final Node peer) { - } - - @Override - public void onPeerDisconnected(final Node peer) { - } - - /** - * バイブレーションを開始する. - * @param messageEvent メッセージ - */ - private void startVibration(final MessageEvent messageEvent) { - // get vibration pattern - String mPattern = new String(messageEvent.getData()); - - // Make array of pattern - String[] mPatternArray = mPattern.split(",", 0); - long[] mPatternLong = new long[mPatternArray.length + 1]; - mPatternLong[0] = 0; - for (int i = 1; i < mPatternLong.length; i++) { - mPatternLong[i] = Integer.parseInt(mPatternArray[i - 1]); - } - - Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); - vibrator.vibrate(mPatternLong, -1); - } - - /** - * バイブレーションを停止する. - */ - private void stopVibration() { - Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); - // 停止のパターンの時にバイブレーションを止めようとした時にcancelが効かないため、 - // バイブレーションが停止している時は、一度バイブレーションを鳴らしたのちに停止を行う。 - vibrator.vibrate(new long[]{100}, -1); - vibrator.cancel(); - } - - /** - * Canvasの画面を削除する. - */ - private void deleteCanvas() { - Intent intent = new Intent(); - intent.setClass(this, CanvasActivity.class); - intent.setAction(WearConst.ACTION_DELETE_CANVAS); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - startActivity(intent); - } - - /** - * Execute Key Event Activity. - * - * @param regist Register string. - */ - private void startKeyEventActivity(final String regist, String id) { - Intent i = new Intent(this, WearKeyEventProfileActivity.class); - i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - i.putExtra(WearConst.PARAM_KEYEVENT_REGIST, regist); - i.putExtra(WearConst.PARAM_KEYEVENT_ID, id); - startActivity(i); - } - - /** - * Execute Touch Activity. - * - * @param regist Register string. - */ - private void startTouchActivity(final String regist, String id) { - Intent i = new Intent(this, WearTouchProfileActivity.class); - i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - i.putExtra(WearConst.PARAM_TOUCH_REGIST, regist); - i.putExtra(WearConst.PARAM_TOUCH_ID, id); - startActivity(i); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearAppService.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearAppService.java deleted file mode 100644 index b8b0691432..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearAppService.java +++ /dev/null @@ -1,197 +0,0 @@ -package org.deviceconnect.android.deviceplugin.wear; - -import android.app.Notification; -import android.app.NotificationChannel; -import android.app.NotificationManager; -import android.app.Service; -import android.content.Intent; -import android.hardware.Sensor; -import android.hardware.SensorEvent; -import android.hardware.SensorEventListener; -import android.hardware.SensorManager; -import android.os.Build; -import android.os.IBinder; -import androidx.annotation.Nullable; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -public class WearAppService extends Service implements SensorEventListener { - /** radian. */ - private static final double RAD2DEG = 180 / Math.PI; - - /** Device NodeID . */ - private final List mIds = Collections.synchronizedList(new ArrayList()); - - /** SensorManager. */ - private SensorManager mSensorManager; - - /** Gyro x. */ - private float mGyroX; - - /** Gyro y. */ - private float mGyroY; - - /** Gyro z. */ - private float mGyroZ; - - /** The start time for measuring the interval. */ - private long mStartTime; - - /** GyroSensor. */ - private Sensor mGyroSensor; - - /** AcceleratorSensor. */ - private Sensor mAccelerometer; - - /** - * スレッド管理用クラス. - */ - private final ExecutorService mExecutorService = Executors.newSingleThreadExecutor(); - - @Override - public void onCreate() { - super.onCreate(); - } - - @Nullable - @Override - public IBinder onBind(Intent intent) { - return null; - } - - @Override - public int onStartCommand(Intent intent, int flags, int startId) { - if (intent != null) { - String action = intent.getAction(); - String id = intent.getStringExtra(WearConst.PARAM_SENSOR_ID); - if (WearConst.DEVICE_TO_WEAR_DEIVCEORIENTATION_REGISTER.equals(action)) { - if (!mIds.contains(id)) { - mIds.add(id); - } - registerSensor(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - NotificationManager manager = (NotificationManager) getSystemService(Service.NOTIFICATION_SERVICE); - String channelId = getString(R.string.android_wear_data_layer_channel_id); - NotificationChannel channel = new NotificationChannel( - channelId, - getString(R.string.android_wear_data_layer_channel_title), - NotificationManager.IMPORTANCE_LOW); - channel.setDescription(getResources().getString(R.string.android_wear_data_layer_channel_desc)); - manager.createNotificationChannel(channel); - Notification.Builder builder = new Notification.Builder(this, channelId); - builder.setContentTitle(getString(R.string.android_wear_data_layer_channel_id)); - builder.setContentText(getString(R.string.android_wear_data_layer_channel_desc)); - builder.setWhen(System.currentTimeMillis()); - builder.setAutoCancel(false); - startForeground(1, builder.build()); - } - } else if (WearConst.DEVICE_TO_WEAR_DEIVCEORIENTATION_UNREGISTER.equals(action)) { - mIds.remove(id); - if (mIds.isEmpty()) { - unregisterSensor(); - } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - stopForeground(true); - } - } - } - return super.onStartCommand(intent, flags, startId); - } - - @Override - public void onDestroy() { - mIds.clear(); - unregisterSensor(); - super.onDestroy(); - } - - @Override - public void onSensorChanged(final SensorEvent sensorEvent) { - if (sensorEvent.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { - long time = System.currentTimeMillis(); - long interval = time - mStartTime; - mStartTime = time; - - float accelX = sensorEvent.values[0]; - float accelY = sensorEvent.values[1]; - float accelZ = sensorEvent.values[2]; - final String data = accelX + "," + accelY + "," + accelZ - + "," + mGyroX + "," + mGyroY + "," + mGyroZ + "," + interval; - mExecutorService.execute(() -> { - synchronized (mIds) { - for (String id : mIds) { - sendSensorEvent(data, id); - } - } - }); - } else if (sensorEvent.sensor.getType() == Sensor.TYPE_GYROSCOPE) { - mGyroX = (float) (sensorEvent.values[0] * RAD2DEG); - mGyroY = (float) (sensorEvent.values[1] * RAD2DEG); - mGyroZ = (float) (sensorEvent.values[2] * RAD2DEG); - } - } - - @Override - public void onAccuracyChanged(final Sensor sensor, final int accuracy) { - } - - - /** - * センサーイベントをスマホ側に送信する. - * @param data 送信するデータ - * @param id 送信先のID - */ - private void sendSensorEvent(final String data, final String id) { - WearApplication application = getWearApplication(); - application.sendMessage(id, WearConst.WEAR_TO_DEVICE_DEIVCEORIENTATION_DATA, data); - } - - /** - * センサーを登録する. - */ - private synchronized void registerSensor() { - if (mSensorManager != null) { - return; - } - new Thread(() -> { - mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); - List accelSensors = mSensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER); - if (accelSensors.size() > 0) { - mAccelerometer = accelSensors.get(0); - mSensorManager.registerListener(WearAppService.this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); - } - - List gyroSensors = mSensorManager.getSensorList(Sensor.TYPE_GYROSCOPE); - if (gyroSensors.size() > 0) { - mGyroSensor = gyroSensors.get(0); - mSensorManager.registerListener(WearAppService.this, mGyroSensor, SensorManager.SENSOR_DELAY_NORMAL); - } - - mStartTime = System.currentTimeMillis(); - }).start(); - } - - /** - * センサーを解除する. - */ - private synchronized void unregisterSensor() { - if (mSensorManager != null) { - mSensorManager.unregisterListener(this, mAccelerometer); - mSensorManager.unregisterListener(this, mGyroSensor); - mSensorManager.unregisterListener(this); - mSensorManager = null; - } - } - - /** - * GoogleApiClientを取得する. - * @return GoogleApiClient - */ - private WearApplication getWearApplication() { - return ((WearApplication) getApplication()); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearApplication.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearApplication.java deleted file mode 100644 index 02c9f702f4..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearApplication.java +++ /dev/null @@ -1,93 +0,0 @@ -/* -DataLayerListenerService.java -Copyright (c) 2015 NTT DOCOMO,INC. -Released under the MIT license -http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.wear; - -import android.app.Application; -import androidx.annotation.NonNull; -import android.util.Log; - -import com.google.android.gms.tasks.OnFailureListener; -import com.google.android.gms.tasks.OnSuccessListener; -import com.google.android.gms.tasks.Task; -import com.google.android.gms.wearable.Wearable; - -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -/** - * このアプリで共有するGoogleApiClientを保持するアプリケーションクラス. - */ -public class WearApplication extends Application { - - /** - * WearのID. - */ - private String mSelfId; - /** - * スレッド管理用クラス. - */ - private final ExecutorService mExecutorService = Executors.newSingleThreadExecutor(); - - @Override - public void onCreate() { - super.onCreate(); - } - - @Override - public void onTerminate() { - super.onTerminate(); - destroy(); - } - - /** - * WearのIDを設定する. - * @param self WearのID - */ - public synchronized void setSelfId(final String self) { - mSelfId = self; - } - - /** - * WearのIDを返す. - * @return WearのID - */ - public synchronized String getSelfId() { - return mSelfId; - } - - /** - * 後始末を行う. - */ - public synchronized void destroy() { - mExecutorService.shutdown(); - } - - /** - * Phone側にメッセージを送る. - * @param destinationId phone側のID - * @param path メッセージのパス - * @param data メッセージのデータ - */ - public void sendMessage(final String destinationId, final String path, final String data) { - mExecutorService.execute(() -> { - Task sendMessageTask = - Wearable.getMessageClient(getApplicationContext()) - .sendMessage(destinationId, path, data.getBytes()); - sendMessageTask.addOnSuccessListener((integer) -> { - if (BuildConfig.DEBUG) { - Log.d("WEAR", "Sent result:" + integer); - } - }); - - sendMessageTask.addOnFailureListener((e) -> { - if (BuildConfig.DEBUG) { - Log.e("WEAR", "Sent result:" + e.getLocalizedMessage()); - } - }); - }); - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearConst.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearConst.java deleted file mode 100755 index 11c8f0d9d1..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/WearConst.java +++ /dev/null @@ -1,272 +0,0 @@ -/* -WearConst.java -Copyright (c) 2014 NTT DOCOMO,INC. -Released under the MIT license -http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.wear; - -/** - * Wear Const. - * - * @author NTT DOCOMO, INC. - */ -public final class WearConst { - - /** Broadcast Intent Key. */ - public static final String ACTION_WEAR_PING_SERVICE = "org.deviceconnect.wear.ping.service"; - - /** Vibration start. */ - public static final String DEVICE_TO_WEAR_VIBRATION_RUN = "org.deviceconnect.wear.vibration.run"; - - /** Vibration stop. */ - public static final String DEVICE_TO_WEAR_VIBRATION_DEL = "org.deviceconnect.wear.vibration.del"; - - /** when DeviceOrientation register is opened. */ - public static final String DEVICE_TO_WEAR_DEIVCEORIENTATION_REGISTER - = "org.deviceconnect.wear.deivceorienatation.regist"; - - /** When Canvas deleted. */ - public static final String DEVICE_TO_WEAR_CANCAS_DELETE_IMAGE - = "org.deviceconnect.wear.canvas.delete"; - - /** when DeviceOrientation unregister is opened. */ - public static final String DEVICE_TO_WEAR_DEIVCEORIENTATION_UNREGISTER - = "org.deviceconnect.wear.deivceorienatation.unregist"; - - /** Wear to Android. */ - public static final String WEAR_TO_DEVICE_DEIVCEORIENTATION_DATA = "org.deviceconnect.wear.deivceorienatation.data"; - - /** Register Key Event (ondown). */ - public static final String DEVICE_TO_WEAR_KEYEVENT_ONDOWN_REGISTER - = "org.deviceconnect.wear.keyevent.ondown.regist"; - - /** Register Key Event (onup). */ - public static final String DEVICE_TO_WEAR_KEYEVENT_ONUP_REGISTER = "org.deviceconnect.wear.keyevent.onup.regist"; - /** Register Key Event (onkeychange). */ - public static final String DEVICE_TO_WEAR_KEYEVENT_ONKEYCHANGE_REGISTER - = "org.deviceconnect.wear.keyevent.onkeychange.regist"; - /** Remove Key Event (ondown). */ - public static final String DEVICE_TO_WEAR_KEYEVENT_ONDOWN_UNREGISTER - = "org.deviceconnect.wear.keyevent.ondown.unregist"; - - /** Remove Key Event (onup). */ - public static final String DEVICE_TO_WEAR_KEYEVENT_ONUP_UNREGISTER - = "org.deviceconnect.wear.keyevent.onup.unregist"; - /** Remove Key Event (onkeychange). */ - public static final String DEVICE_TO_WEAR_KEYEVENT_ONKEYCHANGE_UNREGISTER - = "org.deviceconnect.wear.keyevent.onkeychange.unregist"; - /** Set wear id.. */ - public static final String DEVICE_TO_WEAR_SET_ID - = "org.deviceconnect.wear.id.set"; - - /** Wear to Android. */ - public static final String WEAR_TO_DEVICE_KEYEVENT_DATA = "org.deviceconnect.wear.keyevent.data"; - - /** Broadcast Intent Key. */ - public static final String PARAM_DC_WEAR_KEYEVENT_SVC_TO_ACT = "DC_WEAR_KEYEVENT_SVC_TO_ACT"; - - /** Broadcast Intent Key. */ - public static final String PARAM_DC_WEAR_KEYEVENT_ACT_TO_SVC = "DC_WEAR_KEYEVENT_ACT_TO_SVC"; - - /** Key Event (down). */ - public static final String PARAM_KEYEVENT_DOWN = "down"; - - /** Key Event (up). */ - public static final String PARAM_KEYEVENT_UP = "up"; - - /** Broadcast Data Key (Regist). */ - public static final String PARAM_KEYEVENT_REGIST = "keyeventRegist"; - - /** Broadcast Data Key (Regist). */ - public static final String PARAM_KEYEVENT_ID = "keyeventId"; - - /** Broadcast Data Key (Data). */ - public static final String PARAM_KEYEVENT_DATA = "data"; - - /** Key Type (Standard Keyboard). */ - public static final int KEYTYPE_STD_KEY = 0x00000000; - - /** Key Type (Media Control). */ - public static final int KEYTYPE_MEDIA_CTRL = 0x00000200; - - /** Key Type (Directional Pad / Button). */ - public static final int KEYTYPE_DPAD_BUTTON = 0x00000400; - - /** Key Type (User Define). */ - public static final int KEYTYPE_USER = 0x00000800; - - /** Register Touch (ontouch). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCH_REGISTER - = "org.deviceconnect.wear.touch.ontouch.regist"; - - /** Register Touch (ontouchstart). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCHSTART_REGISTER - = "org.deviceconnect.wear.touch.ontouchstart.regist"; - - /** Register Touch (ontouchend). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCHEND_REGISTER - = "org.deviceconnect.wear.touch.ontouchend.regist"; - - /** Register Touch (ondoubletap). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONDOUBLETAP_REGISTER - = "org.deviceconnect.wear.touch.ondoubletap.regist"; - - /** Register Touch (ontouchmove). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCHMOVE_REGISTER - = "org.deviceconnect.wear.touch.ontouchmove.regist"; - - /** Register Touch (ontouchcancel). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCHCANCEL_REGISTER - = "org.deviceconnect.wear.touch.ontouchcancel.regist"; - /** Register Touch (ontouchchange). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCHCHANGE_REGISTER - = "org.deviceconnect.wear.touch.ontouchchange.regist"; - - /** Remove Touch (ontouch). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCH_UNREGISTER - = "org.deviceconnect.wear.touch.ontouch.unregist"; - - /** Remove Touch (ontouchstart). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCHSTART_UNREGISTER - = "org.deviceconnect.wear.touch.ontouchstart.unregist"; - - /** Remove Touch (ontouchend). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCHEND_UNREGISTER - = "org.deviceconnect.wear.touch.ontouchend.unregist"; - - /** Remove Touch (ondoubletap). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONDOUBLETAP_UNREGISTER - = "org.deviceconnect.wear.touch.ondoubletap.unregist"; - - /** Remove Touch (ontouchmove). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCHMOVE_UNREGISTER - = "org.deviceconnect.wear.touch.ontouchmove.unregist"; - - /** Remove Touch (ontouchcancel). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCHCANCEL_UNREGISTER - = "org.deviceconnect.wear.touch.ontouchcancel.unregist"; - /** Remove Touch (ontouchchange). */ - public static final String DEVICE_TO_WEAR_TOUCH_ONTOUCHCHANGE_UNREGISTER - = "org.deviceconnect.wear.touch.ontouchchange.unregist"; - - /** Broadcast Data Key (Regist). */ - public static final String PARAM_TOUCH_REGIST = "touchRegist"; - - public static final String PARAM_TOUCH_ID = "touchId"; - - /** Broadcast Data Key (Data). */ - public static final String PARAM_TOUCH_DATA = "data"; - - /** Broadcast Intent Key. */ - public static final String PARAM_DC_WEAR_TOUCH_SVC_TO_ACT = "DC_WEAR_TOUCH_SVC_TO_ACT"; - - /** Broadcast Intent Key. */ - public static final String PARAM_DC_WEAR_TOUCH_ACT_TO_SVC = "DC_WEAR_TOUCH_ACT_TO_SVC"; - - /** Wear to Android. */ - public static final String WEAR_TO_DEVICE_TOUCH_DATA = "org.deviceconnect.wear.touch.data"; - - /** Touch (touch). */ - public static final String PARAM_TOUCH_TOUCH = "touch"; - - /** Touch (touchstart). */ - public static final String PARAM_TOUCH_TOUCHSTART = "touchstart"; - - /** Touch (touchend). */ - public static final String PARAM_TOUCH_TOUCHEND = "touchend"; - - /** Touch (doubletap). */ - public static final String PARAM_TOUCH_DOUBLETAP = "doubletap"; - - /** Touch (touchmove). */ - public static final String PARAM_TOUCH_TOUCHMOVE = "touchmove"; - - /** Touch (touchcancel). */ - public static final String PARAM_TOUCH_TOUCHCANCEL = "touchcancel"; - - /** - * Canvas Profile Action. - */ - public static final String ACTION_DELETE_CANVAS = "org.devcieconnect.wear.canvas.delete"; - - /** Broadcast Intent Key. */ - public static final String PARAM_DC_WEAR_CANVAS_ACT_TO_SVC = "DC_WEAR_CANVAS_ACT_TO_SVC"; - - /** Wear to Android. */ - public static final String WEAR_TO_DEVICE_CANVAS_RESULT = "org.deviceconnect.wear.canvas.result"; - - /** リクエストID. */ - public static final String PARAM_REQUEST_ID = "requestId"; - - /** データ変更イベントの送信元(Android端末)を特定するためのID. */ - public static final String PARAM_SOURCE_ID = "sourceId"; - - /** メッセージの送信先(Android端末)を特定するためのID. */ - public static final String PARAM_DESTINATION_ID = "destinationId"; - - public static final String PARAM_SENSOR_ID = "sensorId"; - - /** - * bitmapを受け渡しするためのキー. - */ - public static final String PARAM_RESULT = "result"; - - /** 成功. */ - public static final String RESULT_SUCCESS = "success"; - - /** エラー: ビットマップサイズが大きすぎる. */ - public static final String RESULT_ERROR_TOO_LARGE_BITMAP = "errorTooLargeBitmap"; - - /** エラー: Android端末との接続に失敗. */ - public static final String RESULT_ERROR_CONNECTION_FAILURE = "errorConnectionFailure"; - - /** エラー: サポートしていない画像形式. */ - public static final String RESULT_ERROR_NOT_SUPPORTED_FORMAT = "errorNotSupportedFormat"; - - /** - * bitmapを受け渡しするためのキー. - */ - public static final String PARAM_BITMAP = "bitmap"; - - /** - * x座標を受け渡しするためのキー. - */ - public static final String PARAM_X = "x"; - - /** - * y座標を受け渡しするためのキー. - */ - public static final String PARAM_Y = "y"; - - /** - * 描画モードを受け渡しするためのキー. - */ - public static final String PARAM_MODE = "mode"; - - /** - * 画像を送信するためのパスを定義する. - */ - public static final String PATH_CANVAS = "/canvas/profile"; - - /** - * 通常の描画モード. - */ - public static final int MODE_NORMAL = 0; - - /** - * 拡大の描画モード. - */ - public static final int MODE_SCALES = 1; - - /** - * リピート描画モード. - */ - public static final int MODE_FILLS = 2; - - /** - * Constructor. - */ - private WearConst() { - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/activity/CanvasActivity.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/activity/CanvasActivity.java deleted file mode 100644 index 94c32abc10..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/activity/CanvasActivity.java +++ /dev/null @@ -1,292 +0,0 @@ -/* -DataLayerListenerService.java -Copyright (c) 2015NTT DOCOMO,INC. -Released under the MIT license -http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.wear.activity; - -import android.app.Activity; -import android.content.Intent; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.Matrix; -import android.graphics.Shader; -import android.graphics.drawable.BitmapDrawable; -import android.os.AsyncTask; -import android.os.Bundle; -import android.os.PowerManager; -import androidx.wear.widget.BoxInsetLayout; -import android.util.Log; -import android.view.Gravity; -import android.view.View; -import android.view.ViewGroup; -import android.view.WindowManager; -import android.widget.FrameLayout; -import android.widget.ImageView; - -import com.google.android.gms.tasks.Task; -import com.google.android.gms.tasks.Tasks; -import com.google.android.gms.wearable.Asset; -import com.google.android.gms.wearable.DataClient; -import com.google.android.gms.wearable.Wearable; - -import org.deviceconnect.android.deviceplugin.wear.R; -import org.deviceconnect.android.deviceplugin.wear.WearApplication; -import org.deviceconnect.android.deviceplugin.wear.WearConst; - -import java.io.InputStream; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -import static androidx.wear.widget.BoxInsetLayout.LayoutParams.BOX_ALL; - -/** - * Canvas. - */ -public class CanvasActivity extends Activity { - /** - * Defines the timeout. - */ - private static final int TIMEOUT_MS = 10000; - - /** - * ImageView. - */ - private ImageView mImageView; - - /** - * Wakelock. - */ - private PowerManager.WakeLock mWakeLock; - /** - * Canvas Layout. - */ - private FrameLayout mFrameLayout; - @Override - protected void onCreate(final Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); - mWakeLock = powerManager.newWakeLock((PowerManager.PARTIAL_WAKE_LOCK - | PowerManager.ACQUIRE_CAUSES_WAKEUP), "DeviceConnect:CanvasWakelockTag"); - - getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - setContentView(R.layout.activity_canvas); - if (!mWakeLock.isHeld()) { - mWakeLock.acquire(); - } - mImageView = (ImageView) findViewById(R.id.canvas_image); - mImageView.setVisibility(View.INVISIBLE); - mFrameLayout = findViewById(R.id.canvas_frame); - - Intent intent = getIntent(); - if (intent != null) { - refreshImage(intent); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mWakeLock.release(); - } - - @Override - protected void onNewIntent(final Intent intent) { - super.onNewIntent(intent); - if (intent != null) { - refreshImage(intent); - } - } - - /** - * Refresh image. - * @param intent Intent - */ - private void refreshImage(final Intent intent) { - String action = intent.getAction(); - if (WearConst.ACTION_DELETE_CANVAS.equals(action)) { - finish(); - return; - } - - (new AsyncTask() { - @Override - protected LoadingResult doInBackground(Void... params) { - Asset asset = intent.getParcelableExtra(WearConst.PARAM_BITMAP); - return loadBitmapFromAsset(asset); - } - @Override - protected void onPostExecute(LoadingResult result) { - String sourceId = intent.getStringExtra(WearConst.PARAM_SOURCE_ID); - String requestId = intent.getStringExtra(WearConst.PARAM_REQUEST_ID); - sendResultToHost(sourceId, requestId, result.getResultCode()); - if (!result.isSuccess()) { - finish(); - return; - } - - Bitmap bitmap = result.getBitmap(); - if (bitmap == null) { - return; - } - - int x = intent.getIntExtra(WearConst.PARAM_X, 0); - int y = intent.getIntExtra(WearConst.PARAM_Y, 0); - int mode = intent.getIntExtra(WearConst.PARAM_MODE, 0); - setImageBitmap(bitmap, mode, x, y); - } - }).execute(); - } - - private void sendResultToHost(final String destinationId, final String requestId, final String resultCode) { - String data = requestId + "," + resultCode; - String path = WearConst.WEAR_TO_DEVICE_CANVAS_RESULT; - ((WearApplication) getApplication()).sendMessage(destinationId, path, data); - } - - /** - * Sets a bitmap to ImageView. - * @param bitmap bitmap - * @param mode mode - * @param x x - * @param y y - */ - private synchronized void setImageBitmap(final Bitmap bitmap, final int mode, final int x, final int y) { - switch (mode) { - default: - case WearConst.MODE_NORMAL: - Matrix matrix = new Matrix(); - matrix.postTranslate((float) x, (float) y); - mImageView.setImageBitmap(bitmap); - mImageView.setScaleType(ImageView.ScaleType.MATRIX); - mImageView.setImageMatrix(matrix); - mImageView.setVisibility(View.VISIBLE); - BoxInsetLayout.LayoutParams normalLayoutParam = new BoxInsetLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT, Gravity.CENTER, BOX_ALL); - mFrameLayout.setLayoutParams(normalLayoutParam); - break; - case WearConst.MODE_SCALES: - mImageView.setImageBitmap(bitmap); - mImageView.setScaleType(ImageView.ScaleType.FIT_START); - mImageView.setTranslationX(x); - mImageView.setTranslationY(y); - mImageView.setVisibility(View.VISIBLE); - BoxInsetLayout.LayoutParams scaleLayoutParam = new BoxInsetLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT, Gravity.LEFT | Gravity.TOP); - mFrameLayout.setLayoutParams(scaleLayoutParam); - break; - case WearConst.MODE_FILLS: - BitmapDrawable bd = new BitmapDrawable(getResources(), bitmap); - bd.setTileModeX(Shader.TileMode.REPEAT); - bd.setTileModeY(Shader.TileMode.REPEAT); - mImageView.setImageDrawable(bd); - mImageView.setScaleType(ImageView.ScaleType.FIT_XY); - mImageView.setTranslationX(x); - mImageView.setTranslationY(y); - mImageView.setVisibility(View.VISIBLE); - BoxInsetLayout.LayoutParams fillLayoutParam = new BoxInsetLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT, Gravity.LEFT | Gravity.TOP); - mFrameLayout.setLayoutParams(fillLayoutParam); - break; - } - } - - /** - * Load a bitmap from Asset. - * @param asset asset - * @return result of loading - */ - private LoadingResult loadBitmapFromAsset(final Asset asset) { - InputStream in = getInputStream(asset); - if (in == null) { - return LoadingResult.errorOnConnection(); - } - try { - Bitmap bitmap = BitmapFactory.decodeStream(in); - if (bitmap == null) { - return LoadingResult.errorNotSupportedFormat(); - } - return LoadingResult.success(bitmap); - } catch (OutOfMemoryError e) { - return LoadingResult.errorTooLargeBitmap(); - } - } - - /** - * Get an input stream from Asset. - * @param asset input stream of asset - * @return input stream, null on error - */ - private InputStream getInputStream(final Asset asset) { - if (asset == null) { - return null; - } - Task getFdForAssetResponseTask = - Wearable.getDataClient(getApplicationContext()).getFdForAsset(asset); - - InputStream assetInputStream = null; - try { - DataClient.GetFdForAssetResponse getFdForAssetResponse = null; - getFdForAssetResponse = Tasks.await(getFdForAssetResponseTask, TIMEOUT_MS, TimeUnit.MILLISECONDS); - assetInputStream = getFdForAssetResponse.getInputStream(); - } catch (TimeoutException exception) { - Log.e("WEAR", "Failed retrieving asset, Timeout failed: " + exception); - } catch (ExecutionException exception) { - Log.e("WEAR", "Failed retrieving asset, Task failed: " + exception); - } catch (InterruptedException exception) { - Log.e("WEAR", "Failed retrieving asset, interrupt occurred: " + exception); - } - return assetInputStream; - } - - - private static class LoadingResult { - private Bitmap mBitmap; - private String mResultCode; - - private LoadingResult() { - } - - public Bitmap getBitmap() { - return mBitmap; - } - - public String getResultCode() { - return mResultCode; - } - - public boolean isSuccess() { - return WearConst.RESULT_SUCCESS.equals(mResultCode); - } - - static LoadingResult success(final Bitmap bitmap) { - if (bitmap == null) { - throw new IllegalArgumentException(); - } - LoadingResult result = new LoadingResult(); - result.mResultCode = WearConst.RESULT_SUCCESS; - result.mBitmap = bitmap; - return result; - } - - static LoadingResult errorTooLargeBitmap() { - LoadingResult result = new LoadingResult(); - result.mResultCode = WearConst.RESULT_ERROR_TOO_LARGE_BITMAP; - return result; - } - - static LoadingResult errorOnConnection() { - LoadingResult result = new LoadingResult(); - result.mResultCode = WearConst.RESULT_ERROR_CONNECTION_FAILURE; - return result; - } - - static LoadingResult errorNotSupportedFormat() { - LoadingResult result = new LoadingResult(); - result.mResultCode = WearConst.RESULT_ERROR_NOT_SUPPORTED_FORMAT; - return result; - } - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/activity/WearKeyEventProfileActivity.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/activity/WearKeyEventProfileActivity.java deleted file mode 100644 index 7b7f62c1ba..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/activity/WearKeyEventProfileActivity.java +++ /dev/null @@ -1,314 +0,0 @@ -/* -WearKeyEventProfileActivity.java -Copyright (c) 2015 NTT DOCOMO,INC. -Released under the MIT license -http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.wear.activity; - -import android.app.Activity; -import android.content.Intent; -import android.os.Bundle; -import android.os.PowerManager; -import androidx.localbroadcastmanager.content.LocalBroadcastManager; - -import android.view.MotionEvent; -import android.view.View; -import android.view.WindowManager; -import android.widget.Button; - -import org.deviceconnect.android.deviceplugin.wear.R; -import org.deviceconnect.android.deviceplugin.wear.WearApplication; -import org.deviceconnect.android.deviceplugin.wear.WearConst; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -/** - * WearKeyEventProfileActivity. - * - * @author NTT DOCOMO, INC. - */ -public class WearKeyEventProfileActivity extends Activity { - /** Device NodeID . */ - private final List mIds = Collections.synchronizedList(new ArrayList()); - - /** Event flag. */ - private int mRegisterEvent = 0; - /** Event flag define (down). */ - private static final int REGIST_FLAG_KEYEVENT_DOWN = 0x01; - /** Event flag define (up). */ - private static final int REGIST_FLAG_KEYEVENT_UP = 0x02; - /** Event flag define (keyChange). */ - private static final int REGIST_FLAG_KEYEVENT_KEYCHANGE = 0x04; - /** Button define. */ - private Button mBtnKeyMode, mBtnCancel, mBtnOk; - /** Key mode. */ - private int mKeyMode = 0; - - /** Key mode count. */ - private static final int KM_MAX_CNT = 4; - /** Key mode (Standard Keyboard). */ - private static final int KM_STD_KEY = 0; - /** Key mode (Media Control). */ - private static final int KM_MEDIA_CTRL = 1; - /** Key mode (Direction PAd / Button ). */ - private static final int KM_DPAD_BUTTON = 2; - /** Key mode (User Define). */ - private static final int KM_USER = 3; - - /** Key Code define(cancel). */ - private static final int KEYCODE_CANCEL = 0; - /** Key Code define(ok). */ - private static final int KEYCODE_OK = 1; - - /** Configure (Standard Keyboard). */ - private static final String[] CONFIG_STD_KEY = - {"Cancel", "OK"}; - /** Configure (Media Control). */ - private static final String[] CONFIG_MEDIA_CTRL = - {"stop", "play"}; - /** Configure (Directional Pad). */ - private static final String[] CONFIG_DPAD = - {"up", "down"}; - /** Configure (User defined). */ - private static final String[] CONFIG_USER = - {"USER_CANCEL", "USER_OK"}; - - /** - * Wakelock. - */ - private PowerManager.WakeLock mWakeLock; - - @Override - protected void onCreate(final Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); - mWakeLock = powerManager.newWakeLock((PowerManager.PARTIAL_WAKE_LOCK - | PowerManager.ACQUIRE_CAUSES_WAKEUP), "DeviceConnect:KeyEvent"); - - getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - if (!mWakeLock.isHeld()) { - mWakeLock.acquire(); - } - setRegisterEvent(getIntent()); - setContentView(R.layout.activity_wear_keyevent_profile); - - mBtnKeyMode = findViewById(R.id.button_key_mode); - mBtnKeyMode.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(final View v) { - // Update Key Mode. - mKeyMode++; - if (mKeyMode >= KM_MAX_CNT) { - mKeyMode = KM_STD_KEY; - } - - String keyMode; - switch (mKeyMode) { - case KM_MEDIA_CTRL: - keyMode = getString(R.string.key_mode_media_ctrl); - break; - case KM_DPAD_BUTTON: - keyMode = getString(R.string.key_mode_dpad_button); - break; - case KM_USER: - keyMode = getString(R.string.key_mode_user); - break; - case KM_STD_KEY: - default: - keyMode = getString(R.string.key_mode_std_key); - break; - } - mBtnKeyMode.setText(keyMode); - } - }); - - mBtnCancel = findViewById(R.id.button_cancel); - mBtnCancel.setOnTouchListener((view, event) -> { - int action = event.getAction(); - switch (action) { - case MotionEvent.ACTION_DOWN: - case MotionEvent.ACTION_UP: - sendMessageData(action, KEYCODE_CANCEL); - break; - default: - break; - } - return false; - }); - - mBtnOk = findViewById(R.id.button_ok); - mBtnOk.setOnTouchListener((view, event) -> { - int action = event.getAction(); - switch (action) { - case MotionEvent.ACTION_DOWN: - case MotionEvent.ACTION_UP: - sendMessageData(action, KEYCODE_OK); - break; - default: - break; - } - return false; - }); - Intent i = new Intent(WearConst.ACTION_WEAR_PING_SERVICE); - LocalBroadcastManager.getInstance(this).sendBroadcast(i); - } - - @Override - protected void onNewIntent(Intent intent) { - setRegisterEvent(intent); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mWakeLock.release(); - } - - /** - * Get Configure string. - * - * @param keyMode Key Mode. - * @param keyId Key ID. - * @return config Configure string. - */ - private String getConfig(final int keyMode, final int keyId) { - String config; - int nIndex; - switch (keyId) { - case KEYCODE_CANCEL: - nIndex = 0; - break; - case KEYCODE_OK: - nIndex = 1; - break; - default: - nIndex = -1; - break; - } - - if (nIndex != -1) { - switch (keyMode) { - case KM_MEDIA_CTRL: - config = CONFIG_MEDIA_CTRL[nIndex]; - break; - case KM_DPAD_BUTTON: - config = CONFIG_DPAD[nIndex]; - break; - case KM_USER: - config = CONFIG_USER[nIndex]; - break; - case KM_STD_KEY: - default: - config = CONFIG_STD_KEY[nIndex]; - break; - } - } else { - config = ""; - } - - return config; - } - - /** - * Send message data. - * - * @param action MotionEvent action. - * @param keyId Key ID. - */ - private void sendMessageData(final int action, final int keyId) { - int keycode = keyId; - String keyConfig = getConfig(mKeyMode, keycode); - String keyAction; - if (action == MotionEvent.ACTION_DOWN) { - if ((mRegisterEvent & REGIST_FLAG_KEYEVENT_KEYCHANGE) == 0 - && (mRegisterEvent & REGIST_FLAG_KEYEVENT_DOWN) == 0) { - return; - } - keyAction = WearConst.PARAM_KEYEVENT_DOWN; - } else { - if ((mRegisterEvent & REGIST_FLAG_KEYEVENT_KEYCHANGE) == 0 - && (mRegisterEvent & REGIST_FLAG_KEYEVENT_UP) == 0) { - return; - } - keyAction = WearConst.PARAM_KEYEVENT_UP; - } - - switch (mKeyMode) { - case KM_MEDIA_CTRL: - keycode += WearConst.KEYTYPE_MEDIA_CTRL; - break; - case KM_DPAD_BUTTON: - keycode += WearConst.KEYTYPE_DPAD_BUTTON; - break; - case KM_USER: - keycode += WearConst.KEYTYPE_USER; - break; - case KM_STD_KEY: - default: - keycode += WearConst.KEYTYPE_STD_KEY; - break; - } - - String data = keyAction + "," + String.valueOf(keycode) + "," + keyConfig; - sendEvent(WearConst.WEAR_TO_DEVICE_KEYEVENT_DATA, data); - } - - private void sendEvent(final String path, final String data) { - synchronized (mIds) { - for (String id : mIds) { - ((WearApplication) getApplication()).sendMessage(id, path, data); - } - } - } - - private void setRegisterEvent(Intent intent) { - String type = intent.getStringExtra(WearConst.PARAM_KEYEVENT_REGIST); - String id = intent.getStringExtra(WearConst.PARAM_KEYEVENT_ID); - setRegisterEvent(type, id); - } - - /** - * Set register event. - * - * @param regist Request event. - */ - private void setRegisterEvent(final String regist, final String id) { - if (WearConst.DEVICE_TO_WEAR_KEYEVENT_ONDOWN_REGISTER.equals(regist)) { - if (!mIds.contains(id)) { - mIds.add(id); - } - mRegisterEvent |= REGIST_FLAG_KEYEVENT_DOWN; - } else if (WearConst.DEVICE_TO_WEAR_KEYEVENT_ONUP_REGISTER.equals(regist)) { - if (!mIds.contains(id)) { - mIds.add(id); - } - mRegisterEvent |= REGIST_FLAG_KEYEVENT_UP; - } else if (WearConst.DEVICE_TO_WEAR_KEYEVENT_ONKEYCHANGE_REGISTER.equals(regist)) { - if (!mIds.contains(id)) { - mIds.add(id); - } - mRegisterEvent |= REGIST_FLAG_KEYEVENT_KEYCHANGE; - } else if (WearConst.DEVICE_TO_WEAR_KEYEVENT_ONDOWN_UNREGISTER.equals(regist)) { - mIds.remove(id); - mRegisterEvent &= ~(REGIST_FLAG_KEYEVENT_DOWN); - if (mRegisterEvent == 0) { - finish(); - } - } else if (WearConst.DEVICE_TO_WEAR_KEYEVENT_ONUP_UNREGISTER.equals(regist)) { - mIds.remove(id); - mRegisterEvent &= ~(REGIST_FLAG_KEYEVENT_UP); - if (mRegisterEvent == 0) { - finish(); - } - } else if (WearConst.DEVICE_TO_WEAR_KEYEVENT_ONKEYCHANGE_UNREGISTER.equals(regist)) { - mIds.remove(id); - mRegisterEvent &= ~(REGIST_FLAG_KEYEVENT_KEYCHANGE); - if (mRegisterEvent == 0) { - finish(); - } - } - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/activity/WearTouchProfileActivity.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/activity/WearTouchProfileActivity.java deleted file mode 100644 index 122ddc736e..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/activity/WearTouchProfileActivity.java +++ /dev/null @@ -1,287 +0,0 @@ -/* -WearTouchProfileActivity.java -Copyright (c) 2015 NTT DOCOMO,INC. -Released under the MIT license -http://opensource.org/licenses/mit-license.php - */ -package org.deviceconnect.android.deviceplugin.wear.activity; - -import android.app.Activity; -import android.content.Intent; -import android.os.Bundle; -import android.os.PowerManager; -import androidx.annotation.NonNull; -import androidx.localbroadcastmanager.content.LocalBroadcastManager; -import android.view.GestureDetector; -import android.view.GestureDetector.SimpleOnGestureListener; -import android.view.MotionEvent; -import android.view.WindowManager; - -import org.deviceconnect.android.deviceplugin.wear.R; -import org.deviceconnect.android.deviceplugin.wear.WearApplication; -import org.deviceconnect.android.deviceplugin.wear.WearConst; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -/** - * WearTouchProfileActivity. - * - * @author NTT DOCOMO, INC. - */ -public class WearTouchProfileActivity extends Activity { - - /** Gesture detector. */ - private GestureDetector mGestureDetector; - - /** Device NodeID . */ - private final List mIds = Collections.synchronizedList(new ArrayList()); - - /** - * Wakelock. - */ - private PowerManager.WakeLock mWakeLock; - - /** Event flag. */ - private int mRegisterEvent = 0; - /** Event flag define (touch). */ - private static final int REGIST_FLAG_TOUCH_TOUCH = 0x01; - /** Event flag define (touchstart). */ - private static final int REGIST_FLAG_TOUCH_TOUCHSTART = 0x02; - /** Event flag define (touchend). */ - private static final int REGIST_FLAG_TOUCH_TOUCHEND = 0x04; - /** Event flag define (doubletap). */ - private static final int REGIST_FLAG_TOUCH_DOUBLETAP = 0x08; - /** Event flag define (touchmove). */ - private static final int REGIST_FLAG_TOUCH_TOUCHMOVE = 0x10; - /** Event flag define (touchcancel). */ - private static final int REGIST_FLAG_TOUCH_TOUCHCANCEL = 0x20; - /** Touch profile event flag. (ontouchchange). */ - private static final int REGIST_FLAG_TOUCH_TOUCHCHANGE = 0x0040; - /** - * Constructor. - */ - public WearTouchProfileActivity() { - } - - @Override - protected void onCreate(final Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); - mWakeLock = powerManager.newWakeLock((PowerManager.PARTIAL_WAKE_LOCK - | PowerManager.ACQUIRE_CAUSES_WAKEUP), "DeviceConnect:TouchWakelockTag"); - - getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); - if (!mWakeLock.isHeld()) { - mWakeLock.acquire(); - } - - // Get intent data. - setRegisterEvent(getIntent()); - setContentView(R.layout.activity_wear_touch_profile); - mGestureDetector = new GestureDetector(this, mSimpleOnGestureListener); - - // For service destruction suppression. - Intent i = new Intent(WearConst.ACTION_WEAR_PING_SERVICE); - LocalBroadcastManager.getInstance(this).sendBroadcast(i); - } - - @Override - protected void onNewIntent(Intent intent) { - setRegisterEvent(intent); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mWakeLock.release(); - } - - @Override - public boolean dispatchTouchEvent(@NonNull final MotionEvent event) { - boolean execFlag = false; - int action = (event.getAction() & MotionEvent.ACTION_MASK); - String strAction = null; - switch (action) { - case MotionEvent.ACTION_DOWN: // 1st touch only. - case MotionEvent.ACTION_POINTER_DOWN: // Others touch. - // "ontouch" event processing. - if ((mRegisterEvent & REGIST_FLAG_TOUCH_TOUCH) != 0) { - sendEventData(WearConst.PARAM_TOUCH_TOUCH, event); - } - - // "ontouchstart" event processing. - if ((mRegisterEvent & REGIST_FLAG_TOUCH_TOUCHCHANGE) != 0 - || (mRegisterEvent & REGIST_FLAG_TOUCH_TOUCHSTART) != 0) { - strAction = WearConst.PARAM_TOUCH_TOUCHSTART; - execFlag = true; - } - break; - case MotionEvent.ACTION_UP: // Last touch remove only. - case MotionEvent.ACTION_POINTER_UP: // Others touch move. - // "ontouchend" event processing. - if ((mRegisterEvent & REGIST_FLAG_TOUCH_TOUCHCHANGE) != 0 - || (mRegisterEvent & REGIST_FLAG_TOUCH_TOUCHEND) != 0) { - strAction = WearConst.PARAM_TOUCH_TOUCHEND; - execFlag = true; - } - break; - case MotionEvent.ACTION_MOVE: - // "ontouchmove" event processing. - if ((mRegisterEvent & REGIST_FLAG_TOUCH_TOUCHCHANGE) != 0 - || (mRegisterEvent & REGIST_FLAG_TOUCH_TOUCHMOVE) != 0) { - strAction = WearConst.PARAM_TOUCH_TOUCHMOVE; - execFlag = true; - } - break; - case MotionEvent.ACTION_CANCEL: - // "ontouchcancel" event processing. - if ((mRegisterEvent & REGIST_FLAG_TOUCH_TOUCHCHANGE) != 0 - || (mRegisterEvent & REGIST_FLAG_TOUCH_TOUCHCANCEL) != 0) { - strAction = WearConst.PARAM_TOUCH_TOUCHCANCEL; - execFlag = true; - } - break; - default: - return mGestureDetector.onTouchEvent(event); - } - - if (execFlag) { - sendEventData(strAction, event); - } - return mGestureDetector.onTouchEvent(event) || super.dispatchTouchEvent(event); - } - - /** - * Gesture Listener. - */ - private final SimpleOnGestureListener mSimpleOnGestureListener = new SimpleOnGestureListener() { - @Override - public boolean onDoubleTap(final MotionEvent event) { - if ((mRegisterEvent & REGIST_FLAG_TOUCH_TOUCHCHANGE) != 0 - || (mRegisterEvent & REGIST_FLAG_TOUCH_DOUBLETAP) != 0) { - sendEventData(WearConst.PARAM_TOUCH_DOUBLETAP, event); - } - return super.onDoubleTap(event); - } - }; - - /** - * Send event data. - * - * @param action Action. - * @param event MotionEvent. - */ - private void sendEventData(final String action, final MotionEvent event) { - int dataCount = event.getPointerCount(); - StringBuilder data = new StringBuilder(String.valueOf(dataCount)); - data.append(",").append(action); - for (int n = 0; n < dataCount; n++) { - int pointerId = event.getPointerId(n); - data.append(",").append(pointerId).append(",").append(event.getX(n)).append(",").append(event.getY(n)); - } - - sendEvent(WearConst.WEAR_TO_DEVICE_TOUCH_DATA, data.toString()); - } - - private void sendEvent(final String path, final String data) { - synchronized (mIds) { - for (String id : mIds) { - ((WearApplication) getApplication()).sendMessage(id, path, data); - } - } - } - - private void setRegisterEvent(Intent intent) { - String type = intent.getStringExtra(WearConst.PARAM_TOUCH_REGIST); - String id = intent.getStringExtra(WearConst.PARAM_TOUCH_ID); - setRegisterEvent(type, id); - } - - /** - * Set register event. - * - * @param regist Request event. - */ - private void setRegisterEvent(final String regist, String id) { - if (WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCH_REGISTER.equals(regist)) { - if (!mIds.contains(id)) { - mIds.add(id); - } - mRegisterEvent |= REGIST_FLAG_TOUCH_TOUCH; - } else if (WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHSTART_REGISTER.equals(regist)) { - if (!mIds.contains(id)) { - mIds.add(id); - } - mRegisterEvent |= REGIST_FLAG_TOUCH_TOUCHSTART; - } else if (WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHEND_REGISTER.equals(regist)) { - if (!mIds.contains(id)) { - mIds.add(id); - } - mRegisterEvent |= REGIST_FLAG_TOUCH_TOUCHEND; - } else if (WearConst.DEVICE_TO_WEAR_TOUCH_ONDOUBLETAP_REGISTER.equals(regist)) { - if (!mIds.contains(id)) { - mIds.add(id); - } - mRegisterEvent |= REGIST_FLAG_TOUCH_DOUBLETAP; - } else if (WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHMOVE_REGISTER.equals(regist)) { - if (!mIds.contains(id)) { - mIds.add(id); - } - mRegisterEvent |= REGIST_FLAG_TOUCH_TOUCHMOVE; - } else if (WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHCANCEL_REGISTER.equals(regist)) { - if (!mIds.contains(id)) { - mIds.add(id); - } - mRegisterEvent |= REGIST_FLAG_TOUCH_TOUCHCANCEL; - } else if (WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHCHANGE_REGISTER.equals(regist)) { - if (!mIds.contains(id)) { - mIds.add(id); - } - mRegisterEvent |= REGIST_FLAG_TOUCH_TOUCHCHANGE; - } else if (WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCH_UNREGISTER.equals(regist)) { - mIds.remove(id); - mRegisterEvent &= ~(REGIST_FLAG_TOUCH_TOUCH); - if (mRegisterEvent == 0) { - finish(); - } - } else if (WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHSTART_UNREGISTER.equals(regist)) { - mIds.remove(id); - mRegisterEvent &= ~(REGIST_FLAG_TOUCH_TOUCHSTART); - if (mRegisterEvent == 0) { - finish(); - } - } else if (WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHEND_UNREGISTER.equals(regist)) { - mIds.remove(id); - mRegisterEvent &= ~(REGIST_FLAG_TOUCH_TOUCHEND); - if (mRegisterEvent == 0) { - finish(); - } - } else if (WearConst.DEVICE_TO_WEAR_TOUCH_ONDOUBLETAP_UNREGISTER.equals(regist)) { - mIds.remove(id); - mRegisterEvent &= ~(REGIST_FLAG_TOUCH_DOUBLETAP); - if (mRegisterEvent == 0) { - finish(); - } - } else if (WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHMOVE_UNREGISTER.equals(regist)) { - mIds.remove(id); - mRegisterEvent &= ~(REGIST_FLAG_TOUCH_TOUCHMOVE); - if (mRegisterEvent == 0) { - finish(); - } - } else if (WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHCANCEL_UNREGISTER.equals(regist)) { - mIds.remove(id); - mRegisterEvent &= ~(REGIST_FLAG_TOUCH_TOUCHCANCEL); - if (mRegisterEvent == 0) { - finish(); - } - } else if (WearConst.DEVICE_TO_WEAR_TOUCH_ONTOUCHCHANGE_UNREGISTER.equals(regist)) { - mIds.remove(id); - mRegisterEvent &= ~(REGIST_FLAG_TOUCH_TOUCHCHANGE); - if (mRegisterEvent == 0) { - finish(); - } - } - } -} diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/package-info.java b/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/package-info.java deleted file mode 100644 index eb89e6a5bd..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/java/org/deviceconnect/android/deviceplugin/wear/package-info.java +++ /dev/null @@ -1,11 +0,0 @@ -/* -org.deviceconnect.android.deviceplugin.wear -Copyright (c) 2014 NTT DOCOMO,INC. -Released under the MIT license -http://opensource.org/licenses/mit-license.php - */ -/** - * Android Wear Device Plug-in package. - * @author NTT DOCOMO, INC. - */ -package org.deviceconnect.android.deviceplugin.wear; diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/res/drawable-xhdpi/dconnect_icon.png b/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/res/drawable-xhdpi/dconnect_icon.png deleted file mode 100755 index a3a7f4794e8761a961a4a7c65595c173333ff8e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26324 zcmbTdc{tSJ_b~jKv2P({3lk9``yMm0i|kvLu`k)Oln^r{SwoiWWLKCzL|#@-K}JqiMqW)?PEK7> zMO{uA@}HkDdA3kbZ*@yu{r}8Ge$o{74G+JmE+Z2W5pgL(;Zks@kBpp}nwpHPyo|iO zG`WRzSY%MR+a2kkFp>WnLDwtHBh>F^xL z-KE`Rz1^ifJY+pRyu8%pJXGEOYn=b7zp{#)qOzR6qQ2S{WjQ%L1vM3UMO8T!ZB=;{ z{VQr}3jfvDC@3u4Ey%;`zvlKM&;6gi3jfEx>N=rbZsEb9*1^F6|HTF7zQN(aVZOmP zAv!t`aZ@)BzaYx91Z9o>p{(l_>UZ1AQ$I8~5OP9fb-(`s03|PP4-YRDRcR$9MI~uP z4=*KYRe5^SrS@@!@jYXElAqg={*o@#^DW(Yfh_fsY zg4jTE#}{=|Fw%@I%w6+_{$_+j9IZQ`7=cMj%LPS zScfPrlID*C5`^TX^!Xu)clxn|?7i*{m{>qR1$_-6lBYs?I(#f!ZN2Yuu%Ri22?qX} z5-;oSlbgfT#lH!ozRwT;>A3d(Bb6yHp#L)*N*U-;_2e1Ei~4RxLJ$&p9Qz_}BMt5RYekC*1AdBLun^2{R*AlM1ihIBDKdD#i@W~_!-xfd^R z<=jz0M521b5Seo>g_MGu;%)^`4kW!nzWE$10v%W zH4oO4-hIj`ujI-YeCt6-9A)k`1wgxE_ic@q*)gb}$J@WrT zW{8U{6Q$2T!2h#CtA>9E5fZc~Lwi!b0wagKKo^N}Cr|kU{|MX?^mc?_`GZ9R(nXM0xQK-v5E2AP(l# z^yCJR{|m46G3L`y#{A#6k21zhJloZ`3mXC_cvH2him-{klj>u`4OxBqHYA~5vas`HSz9hP zQI`JM9=P!f_6EUEV(gcRuY; zFPHk6Q?&o2|rH!28vEVnYr z(#p~R;WZ#knX<2b*V8U2hMD>lOL*8WHezDx9HO#l8@#srsb1Ez#cyGx8EUMEOSKYhRdyEQ8L#}j&9GP6JrVF*&g@t^6hkmrO z7S&P~Bz`bvTCLU0ll8mJi`G*F_&2622P9eJnHTkW9Y`cSn=oGLqCXpC)n@ji3Nxmv zH+}#%LV#G^%=6!^oIg)!ej!09ZkoWarZ2@tS=E;**Y}+wJCZ<~czKK7PakSdcsk6} z4MIK3-!j?9hokAR)rW}l&&g5k$E<{i`7r#!F3HjC`*&@01U%edURgyPIG102B|PIG zSgx^5=UZtD8M~Da0>*-XtqTl=reJgAh-9Y}K;s35>5L0|jqXpHCsY#%@D(}gSOo}E zC-&A$Tr<7SO;vaeYNcn@zr*8|9`;E@PU31{7?om!1L{{BAE?jHnLI1`@{?@#~sOo zWr0Cn$xCG`eDi(ao`Ywl*@8YGeaHk)AA79%E>?whJ{nib?L8+hIbOC~R*TwqDL=?D zSnUYYd1YvGu?4K21^^5^!14PyeH3@F^_tKE>)A6%kng3BW2z;utQU`c31Ua^7wacl z*+`*G8hUxE<=-VM>AhEbHi9{OSA`fkb|tI3cQ?OlfA*jLOkb`~F(xp4Gsva@$z~CU zvs!%XkQ7(v(?N6XeR}@7Jnf?wuCW{tUMjV*hzi7k+TpGJg?S|fr&{Q5fod%Gh1JRB zys^QZjxNO+M=5#^ikul{Z1rEUx;1M@H^;5c6Nj$_Uz&hX57O3oF(22Ie?G4o15}-( zV$5g3+;zvI2dhyUPjc1{@Mh!E-5~tLANlJRLk0R6g%~z6Y~*$I?c=*sbf5k-9(X15 z7rr{YJxp7dD@}hy96HGIkxlRh-_1C}LbJ+hGMI-(3_f37jZx6a8RvYa1v@yadIX=K4V5(5R9vN-vlE}El2w4biEzOH-7ME2F4>XnURlmz+ zkxfG$-E#v2Fm?z~{&p3;iP~;7vClo1S$0qank{|64C>RzL>>c@qrG$w#|@aS4t@tO zzc|N#qOOo%3-7g=#v$t6m;JYYBRZUPSNj1c=yx|CT4m$MPEt3a);I$qS#vpO^H#_*=5mMDmn)&g0;2y z{;m`n_sEa*;<hisDB&iv&f9ApBK9W4&L?O7|nfp`+nojyEO6HmV++gDs?DV9s| zY`J)o8czQgxT9iVyw=BV#P!qXv-vdftHSh@o`XpNPGV1Z%T(UY%V7K?2QQ@ZuLS40tLpmPU!Cz{)rWFhE=0$;w%*F;e{jo-xuokGTIzOYjqC1}Z+L!w1xhri!fi7NW=QY^eXLu`T4{kv9W|nqoj9L}IUM3;cW` zaj28_>Yy$uYwa+90JbVeJ;=F5Aesz;am^riT4YT0*c*bQX78FpfKo@n-f8Yzpo=CH z*RDM9gBS{SfjdBy5F(j6)Q-0;qB{?@6|Ipzlk{?%YNa}PJ_D+$G z_IGiqe(q0iY?#U=g;*4nC#rfj28!^=ZDu^b9LS02X_!s&PQMVEJDJB*yMQl#D=_M_ zmZ@xtdTOOO^aV3pM#GaHRe^}S=u(&l`*tu#`?6UtN}EF8MLapD|oxh&?ze(^otg}_I%jxrYh zl{Y5mn?U41feJ!+u`nHX>LGEkBS?>gznhGE=Lz23hZEw2d+yd?xMH75l?0@qy}$## zoXdP*?^&0CfY#@rHa%W>=J(eN-PAkkOviS5_U|0Vt0jzFRA6gm-}0ea|HMdL5QiF5 z`@AO?B_#b)FoA*M=!HMvm95lPAfRks0w3t>3YC~gHW#*1wP=!{HVI`Ks1{SCM69JU zED7zKD8dZtUrL+W{~gM>$9u$|3u=>4(Jd2isI0vEP;j!x@3Fc*-9$Ym?0m)x1BTc~ z`jDr}7?OG<4@M3I_g?WWH+vE>;@VAplam%qX6d%~EcWi$d>}gYBcNMXazO+`H2|p1 zV^1;3UfmK1gCwK<7(-LM7(;DY341-UIzhYy%VA^np9*HI^_9D>eiKqsIeH3)NgrQ= zLwMur0$`1k{U3pcytunWW|qCBRokEbgH3F+tj$zpEqy6=WOeV+rhg9yp=i8E_g9&B zOEOnI!h+d1z{%_r_WfP=HgJ@!& z2Xl2`YS+p>`>ZAZ&38<)H`5iYWv^4=H)nFAO<-V~T_SxdtAMUMnrWnETpe|W75g=X zionYJkw%ER!Fx8JWCPUFX@u1)G0UzX@QhdID16hsaaAe|h)Li?-<# z*V>O`F?G0;0jZ(1Rw!p^gn81+pE}+Irda?&Gq82=68(RjkI4!yx3PZiO_$%SOD_h5 z*Mcyjtm-pt2`!nXYjFlY4+ePHBm%?=z^zDgmLbN)jRB-A)&0xTa+?TQbo}O;qc*9k zq!ycZZCn>K@c|;j=93Pq)B#(FxyCEvO}43HEZ}A_57~8lVPvZgl=y(})W($Wtmm{u z@SQXI4)WVa@^B9y4#3`jX58gDI#_x<(jNVI6w0SRhwZQRE%d*|5Sq#E`x$ENH2 zj0fy<{fQ@SmpL+@{TB}?C?Il*{#}O;L(El8J*ZTff(BPx0nKbQzc=-dLYA!};Aw;6 zYLhAtSu!?LbwbC$wjl_7HJ#J``*k}8+l9L_&q|anQXNWCXaR*FM`tsG0xuTwG z!f*M!G0I@k+}*d4DE9o<`_S4`<7Eeb$|b{e;s^(7dZ<_5nyxb&4BRu(?$CFQ_uHlG z9@p)@(oHSSECzTo4uF9d82RwQzN;K`(l*myCOfTBZbQitLHso^sV9>7^Ri08!Fr!>FrgPi--arNH zjsb-=9L}hkPe#t)*2e_oc%EXd+aJNa(>M=#3Brz_8DB|p^h;Q|;Z603?=(H1ApKd| z%pek1N%cp~HVuUjC3O`eilan|D;R{OLlP zEpB?TKyaPDCgyiQX{QyBh^ zf!&r)7u1gfb5{(~$961TQpuq=s0bQR2K9lFukH!MfE!K=Zrw=82WnLny-Bxb*@qko zKJ2Sit6w+Z8xBVI-d>Jz)Ck<0yntQrwb5EWCpCVZ4{)3at4R=dWU z`n%D#e;=D-`@UR+l8c(~pl(>dGdOr^^);_+B0J6%ds_Z75Hl_dS`6k}ObQqfLtZgS zI_k%z(rhf;O&%UGOBoMu|LW5Skw`n`O@rjTcaEF^h&DxL|5Wj(QuH^(NS!Vw-~EKU zm>h`rQ~A)DW0*nM)?l+TWcktFE*y<#nhJ;!{m^>Y~VRi6|jA09K`yR!`B&YpA@5WSIJ3aY8ZeXqYrt;t4&8@`B1$58Q zsOv)@3R@X>bM#YtIK0n5GXAYE@*)Q$kvf4PUy_}73Nbo47PZcx1mbiDyO;5@L5SD9 z%Li0ruBrulff5)pr>Lnig~_QCq0NA&KUDk&_e=zP7*SMg^5jtveJox#fZ;$j7 z)S0F7@1SH(8so_XD`xRKFrmumlz!iq!q%^*Y>5V()M76dl>kaQY0L*)Wdi&3l)+xk zU{~Tg|Fry@9*1p1V`DnEy zz;Ce)LXsYS^G zHz*0b4*couVxJw>m-MHGFaef5U^3OtGATxNY%vQq-~DsB5^bPA^xC($vcBf#dYaYG zkxynzw&Muz2ZOx>iLkNn5k1q{Pw8%U!IjU33Lx)n_Tp*qu5M~9+@XnY<+|V=-c;v@ z=v)3}r*2k8X>h=9n_}_~&vrb>Q?_AcvpWM3CtwHY&C`pZo*rF{_l?hx6Iq#i%)mRz z)x2Vwui&I9Y92m69>C}O46AtR+UUHVdgJ3{$rO0j3@TNUiS3mOV3dWU zzq9V8G7Mu5n~t9~JTnL4Q#bAvfu@qkMOdcAYH{E+v4a6O4}H-e0XUkM$iH! zN;L8WEgn5&zhfeFK^kS)7{~jS?jPy}44I7J+3JT0r$AMrOmp0b_lkbYvPehfRZq}~ zjzuO(A%na?K@xjomZibI^pJWfBx!p_(eDdrvB4cSKnobfIRKDO)}98xQ#8W>rll<4 z46K0*GjX=VhQ9*4*n7D`#*T1=ZKl>$UcDnYd1)->&?XO8)B-#`?2Y^Wj{}qXz&E4y zF^>KBp4>naG>P=$g{-!!VfYpsmK??`S2Oj#@<4jo5C@@zBuKTTByPJt8>tRA=bxq#(9i`*d3Iz(T#_0Zjek$q8c*KmvMuE`H>P>nCZFh;J8`Y*PU+`^z;;oK+#(~%(T4Ecr$0%=n0hk0a@|8fr};LRO(|&)q#wy2Mt`A=Z9o5 zT3UgpK(anz??8#*f6e-+SBsVNb`(tx*WEEAGO5GN3Cc9`uVa4X@Ddc%sDN#{6V!B$ z-)1w+g{Rv}(C!Y?&oLw+CS;K!f32LVttuEY^V^cHz)l2kuLua^!F+2Pjgr&>h|I7q zS(tERyy(4~eQ-K}190~wr<~2}8Ts1XU)n>5b%=4V-f4dTe8ctLKDd)LPyl!i)86!^ zc@D#7#(xKT7Es#`QC2}1L9nZ>Vb9HU5G7L$k*9K9?-=rH%&R@ubSDwiSH_T}F^2l+ zdUnjGVHb@S0$%>BBUP9J-vg1Y>m5y7?fMuc#yu3*$Tgig6xAKmq8E%Hy$dj!53H`_ z5zFN`TzQZiQD!zQu(7LD4+=q3Y$i8zYw}wX_ePCh5O|GM<1@la_4&EiOwVyR9E-czn)r@P}h5<#w(_}K=U=j2!e zLxvKjdj=LTAPeG;eBmtsdqe;{e?h1kq~wz8{XPKa4dCD(>n%%$PoH)m{XsHSS(dps z(m~dF-o_mNtBTyJ0&IOFgOR7lm>_Eoz~;|RO=B;!#SH3yz|h(^NamreyWPzs|y&DHg(id(}Q%p0g3dA-=Z+ALP7IH;(^Hcs{jphA6%x*R2#G01PL# za-JxJJy8(tTT6v?R)2-re`QcT9ivT-|3qTE-@!Gf zY&jkiITkpI%BKQ;u+)I!bt@DjqOwu&XyM-ZKLq~1I*|F;t#leE{{gx4`x`HtLnf4HR}5XJ^j(jWzsE`EJL*V0+ayrzBoE zp5m_=jP~9uBA6%Sh)KV=xNZF31YZ_8#DpUr=>VZ2Wf}65{++axhyX~kMr_J~3yjKj zj!*1}q70FS#0Jx}K=7qd$INF${gZ7L^9H%3(r|sC@YERiI*7`ALES)d?oWqLNqFP0 zD5?{(3z#T$B#w!R)VByDY7bcp0niE6-Nb+_MT(L{KD0yhX`b9QT^V+5fV<+vX}2l< zuW(Zcr&wLJ0K8N_UI!&oh$jd+>fVHEl-nb zWEjj0TtWP!v%=%7u`-AuV(v#xXa55XQi(L3}I zKOHvFwU5Sv=b%Xf|IGl*ZV@BxeXrVF9``UKTYg>thu23j*W!r@{{9usnX?4rAkp zEC#cwkVF6djIh565AV}29G84>(7UBqOy}h9Hp#ow@mhMaPWid$7qr4li^-db|eJiSExIR1QK2l=FWynSg; z+m~`9?I6Qwk~UBO+q{em#YNB(VZBjiCNv21kY!Z0lT_hsMrkjzUi z1H;i>GuitGnwz_TVHD%sQzsb~t0DSh8!R*M(0lx!3E(9#3CvpMqt4t#u)waw3n|x< zQs$p8iQV7w&-Fvr{aYV%Ixn5cgQexCDTMU`P-YeTo6Atoj3Ya55bU4eP85K?!No1U z8x=m#BRzqaPRqZy<2>VFfv#cqyLPU8LW=%G-sxBBKNL&i2U^XHrz>BQ4MO(sYSA1O zE7D>OX=5AV3r%9+1cAxAzLM)^TP5PjhS?c!O&gN77_#aET9FfQaXcGhMQW=lZ~)%Y zvz=7ZA@Lt+a)%^td{KmwtT9!KS`AclE%&pGx68!7{5Nz%z~vxa(n}oOZNTI?%}q8< zDTBu=v>Urw<}Rf~pHyfM=|p}f z-gjO}9$J27{7T3j{D_al%HNOB33(xkbDxHPnHB^R$V!kRoh=Fg>%oA13BhxeRe_2@ zm_P1a$mK~c{f2m`O>-rpo(=%yULqZUH}={dWF@=464?dKY`_gm@M-3i)$8IctKb>9 zUQHr4A6cTmJ1cUX$p0ZYh@2n3HRwWX-+RP#!kV&ze@c{00F=z%3`0U|KRtCdsoNuX z)4|*3_?az!HV{adhn|2lIto>JEyPv(ZjJPO4MDU4aikp6P#KrrUgj>yC4I%A*M~?d zrvKtZwxO_YHTA~2FJDO72UME6@?vv&rPbDKah)~oqi8iQ^VVmi|A;NySwiXt_DIb6 z3F|YWnFpRU^mC~R*RBKnWkmk7>$1@)JK?f+i~&Te7BdSx>Cp!u&=wy^Rc<>*;u|AD z)SjOK0QO1MuV6#FT?7K_DY}RC1l^qjSQ|?@Wo%ZR`fljrLJ;g=z5C;cK8IyLQClWrlin#J?x1=-qX)IBj zK)832=sy!&%YH`(Yk7T$F>j7P3+?i{TWAmgW2DrjZaFQ~u^Jkacw=H*(`xdsh5Er8 zSD~v%T>=EApEKy5i~ClR^QfsE(%?hnom3EICx^KJ0qR^_*_+bLVn7N(9dmn9H_2S8 zNjEOb{Ywty1W78~ROF33C%oK(Gm|XtoQB$ReNy2g^pb-q_EEIeHtK3OVtE=t{|{uO z;g4^fin971DS{4%aI@VqT|DW>JbmCN7W@0LuW@0+IOuz7WS6!Okcp{nZ%HYtrT_fB zU+8PdUD#)+kWgQJGLcjrQFxo%yIY`j2{pagi_Ut*+I~AfY_MgGFEkBM*grVcz{-aB zvT@uS(s<%TVFT3Slf9_{o5^H@}jlB7HO|GYrJm(VpLc)F4-5N3%< zUCTn-m*#9M4&Jx6`}X~gXJ0k%k;32V>LVn=mS+Sl~C^-@4MB=;tJ|$=g&4y^*ld1S; z$z8Tp79SBkU2|N9A8TqJf2@c}$v?HqO?p#7(ld_xIgWn)2+utq{E+lmZvVuA$7I+u zA6&iXu^Zra>24DOb_N3%$+Vup{=o`N!#aff>};%wCnhS1(_H5{`m(HkhWcP^($j9O z51edz+{6|Qe8eW)_H4yebe^NTOwY02Ztz1w-CGl5oy7wq?zd_XH3 zklr;-Zatm+ON;htEc?ipw(NjZqnD?VJqZ!y#f~c;lMar=)}lMIt-Y;ny138G7$hU6 znFtBI@vJPtHA;yr&ufkx=7UdBy-6kd21*|-_L7 zkuEJT6K7ubVvmDmpM8mQo<>KQQLBKhnLjN(nfH`cbC;M;l2|&SOYz0Fgu73#k(!GB z=K?wR6`9k?zu4RbK`Wh8FD2?G*)Yr$y7CL0mDC4@Q!n#grAr#kK97I%4dueu=4XR081>%!sa_z3}i zquCd6ulm38juPg(P)wcPyna3Utxgt^xM|fF1OtgythmI{!_3e>4d>?@KC`JR(a2I! z*o>2bq&PkpPRfX?X$XfNCTKjZMNrL`ExthrS*@xVytdF@uzfmfa`d>dLvaH|uCVh<|OA<<*OQLOZ%sE^8)!5t~D{4XhKb%zz8ixWadH{0G%e@-m0bWzp)+{7(Gn$U6& z6Ls9JBu@rQqXlwD%E#YJA#aRw7Z3UE%5+%mx`zCCi2GEud0;?nNzj^8$^majY$EQA ziiX?7W)qt zTd|8=wy_k9dYH4q`l#Y}=>YOB*YnHJS)#ZM*HtF5hBIjw(d2Bui)E1U`-AkVIRw)63S%wYyOsK7Qj`|^Gsiop-Z(vnjyk2B(H~SrYJ9i zjX2V$)kRO1Q6a@mgwF73{MLw=|G+F4!fzVgpschB&)E9y_|==5oXgrrC{I(qB7J7(U>Gz)cd4Z`p{6pzy zgV0x44*#d*0Y6etDEt&^#RbbqRlprz-OqpO@a%|Tw2Wiwofr6XddATtXY45S7rx)* z*JNujM#ydAR@4rcwX*X5XA8?tlK4_-WG)YC0(>&r$g8c0ZdJ5&T{dHF%>Bq8*<~vC z5ygIS6=vFN#PUAP0G@KtsF~%l3ODU4G$Ww$U5(us@e0m#TgGPjXi{wxZq|izZp}5u zA|%&}Y=31u&pH^EHU6>Bni-2zl$a$(^wYo5i{pC#fZg{6i0qB5;#j%YGlgMrMnYP} z*ps`-r}(mnsfk-cR-d)9P||qv4vn}9xX2P2Kh)sfXmG}#au>O3_^U%M55nyU)b|SjL5U&FQ;QWZ!qL)9V=ALyb(a$Y3!1<#A6W&xbY*S!ya^I z=z4q(`xYyUwVBYL*8vn+R5FQsYd4*|`E?^ft}00^Ox;u$VX`1?08*G306-ksZD zN$b^5kIB?FU(8S`n`;+}C2vGCf5R^evWYfUUXq!e%@Hb}b$M5k7~ai=7!=qEZdjEu zKHlpTw8Xwm{~R%ElGFc-wZWM;j{kK*de*LxmiA`?Yqq@OUrwfrr3Vss?92I0D3F}H z8@8{yR%qPDuJ${o=K;b+As*@obkV7|_J$6&chcCZv2xuL|CR6677d>+RM_NyQOi4+ zI@R10+jGZTKg!u0e(Kiv{{F>E#DDLRlj2Ah}S> z;n-)TVHG`e4WTqnNEFZAY%jt+(!(vJP4P}=Xz4UNPqaUpowX zuv5!-KT5j=&^1-rNp?I&t?@pYwGS`>(afuZ*2AVsyhSSbklIw`$A)@$i+3OC0po zdHc({#}Qhvbq*PeO@HWlWv#$YnG|aw2-<(fnxE{9yBh>8eG-{g&RDZwoQm_WnW|V+ zp>J~iE{2g~mrC?N8HoEc1cmQBue-VRrIF{*Wkxg ze+SRVTT#MtVd`&VcDo42B8X_C;F zQE(3DW35}P+qqY_9^}|Ed-OyE2yg7no?Ds=F;j+!vwp9qi6Aokh z9;xN`E8{fD=B-PZ(X3Jfk2KNU5N0!IhL7r={S;gu;cT{)F*Cz1xqIufBsT})Afu=N zATG=-|KWM7412N)et%6CL>^ODcgMm3KupM>Yn&aBQQgggzZ!k)%PpES#eO{&iYA9X zcwEI`(7m$Hmr0Kz{NR2A=yTgLi}kzP?MCf8>c=22V-QQ_esaX=*|vwTP{$k+USD!< zyMcH4XyQv;!DQa^{Xk8fj7Hyvq>myhdE@l&Ycc%FNWn9iJYi)CtkQ_G%g^d)dYb#? zc)7Z67W!ovFLo;#?XW~@7n0@P0`V@L`uHZ$-Uz?asi&xHWT68t@dT3-La;wE_hVz_ z{LXWXG%>@TC7$Es`s2;4`{;uV^tIfq8Cw0_{jV20Y$vc)gpy^gq4n6MmtTI`nP8dO zNPQBqzw@lt#)Zyz-lawuI;>cJ#Ki1#RK@P2jMQ$wzF`PyP?hahpe6_CkSimUbdzK4_(}62myzCr2vMO?*~>R2+Aw_bv+W%80Y%L3-OU3B>$SWbRVM;_+N z4e)h0=0~!Z-9BJ-2}1mxIm!|-T{bgLZ-deD}7V?;zON!rf*kaS1p$Kh?^ z#3vqQM7A~fo3i}xGRUHuv3e#pF<9+ZEXYBgvcwZv3^xW|+f%J6z)DT%sT z$L}OJUNU6TCBM8uS=gkcxqFGALO z-nHTfvyX{@#AZ$ua!$5vmHM^hYmI^K*h?iliyB`G;T&SiEqF-RZfpWebzerX1oIdj zxAT>vFoM2furA^Hcj?`*+QZz>Un~%YpP^eT+Q;pJOPvwdm4se1uzdtY2`Esjt5cDa zH|5z1AZ=kz>m@AQ^+F^1szx(o2orgS8?+E-R`tmkHk1sC;JV7bxK$sjTsVv_S`U#O7CTZFIYJn>KKpu(x|sWvre5Knn_=$uVAp&h-lpo@O(E{gYOvm&}L z>=BvW3QZ{nhK1g%<3s705HE>K*3ay4WS?QsFGeFhY4&V8HyGu|l@+mkaP>Z7`ESQ9 zeZu?s;NcxI`_)(c5TZfACa8~lG^?%+W_GS9WxSI-kGfe{5=BYn{eaXBdIR=!Or{fR z+t3R=4#9t%uRzDqg|GQ&F`RdeaD#ob1-;lmgb#3o2{Kc=4?IRWUh|S07P2BBi^xZe zh^=I0??a5=^;j9mfwuaC4GV?qJiDkdP)hZ3Uur7uGXUjt~1FxzL?+iie;tJd?Vc<3eJ4;|Og-Qi)g@;@BTJ`o&h$mz&l zju4Lea_yjh9`&?o%h6k#Z>2TXmjjfpID=h?;K07TACs7v=sQ@bWQrh+RbOr242Hc8 zmtNXDq8aPl)qH9VSeqd4-m1P81);wo(5464r>@0j1(1;(KDS7W+uV&XocEcb36?h-vav@NxZqrnYRJ6qLCNKXLW#TU-1WOt2z^BjtkHo%BQKJC>Llt{ zgs|RFJW27X%dkakVUAzslps@LF4)=ftm4XAuyRH8XyK&kZ>INl>GX!JOovszW#@mX z9R2mr?eJ$DFo`Q!R!POL%WOVV!5^d@A^r$-*wD^v6NPREBTx zyGOfI5w|y#L@pjiM@Kt80K{fE7_Ij}Wv zAG30#n|=4EwoU;{YJ$fUILUtB{3#2`EVKx5-{qm|Qc_viC7W@}6>i$s+PFmK5FyLI zue#WFx_dUVoU-zG*pE+ppqNvZ0RWGVE=x%4o-2?w> z!`bW(Uju=AX2&yHB%v6(QCGMf$>_EFF?)?4Y}R(x1={-*GUk?nzHUZj&a_Z z;~ftUtAgheGB^EI0xl4HB-@F@FLP;O6QE-CTTh=2`w*8UjXFZ;*4htfzEUlUYg$pc z0Wg#K;0Y+f-tEy!rs1czb>J4ec!{?A3es?nwvEk8j)pPH7&H zwUx_dU3|bNE<`VFf+>qGEfD?=srF^gy;G$>cW`c;lb#3pBVI@hzv&X?6g$LqmmCe~ zF2Bsw&;h1>=sn$3g0nC9&+(*UJWP5b+UBt}L~JC}=p()Q*dsm9PWNs`_3%~m{u^-J zBKWqZ9m*we^XTZvF=}A`sFSb}T&v(SG_p2cyY}aMb5-(_@-uvSrbWu5{W9o)YZ9iC z0o%f#XTmP{AqX<{f{d8!07PGNp^8U{_WE0soM!5>WC>UI7A5P0$za+)Q(tJ2cGZW^ zDq@D72~9>~78b95-&w~48Kd-{u2hL^d+HH}V!xc8kC=Ug?>qkL7_5}K{Z>hR?q zW>ZsBC24%cAU2VO-}mtEQmG4Z0~Ss_{VuZkEyFhXY!YsJ!8-$aKWSg|vC|bhcudRT z5q;Qh7l&EZ4{As{-n*8z1AW*JCqw;1=93 zao8qpkS#h-<@J@)oGb6&pz=qdH3u~OHOpy8teR1sR|qPf)2tVIT%g2ZFMY=klBfwPi66<(p8V`&y%i+W2-1othP*kD4^j@Je8fD zy~pJD!f?_#qU12TFNyh{EU0ln_7&gWnw>8(Y__~uZ9h1jB>5UAdHYXr;7{RI{YX~C z;YQCjYj}!nTK2xnbeYQQm#Un<$o7z&^*t>QTv@!&z!qO-Wuo9(LwrIQtiMiG0E)2N zv)}S>KEK;?E!W@})tQ6CBF?w;O6iiMgCkRU_2|yo&OFOyv40yX8aVZOFl~Q4MVxaQ zjew>uY#b8~n)DyM3a(Km{IPKa`P*6^)eC^K>>jdcckY*S&n#$hy?Vn_e&k!U(f50WyM zukbD}#M-91(ja53C!OCkdt99Rl2f^J`|ScT;XvO9W}~~&W zEiqx!DSIqM-6=}y8aWOC1b7Mk8QT#vg~r?53zLH>&^mn+R!*^Uu2lY(!uj@~og{Ra zBWo5xwSnTymN!?Dr2Ug$2OECbPVOV*IR+Wss*cSwMI!jT`1*op4Fi6+VWf~NQR#9_ zloB3nSEv~`dv|AWIb3r@u*)Q+ZY{@Xbmy8RQ~A+L;PO2FJ~{P_6stg7*SfNs*l%^~ z?o?~=uxEGd8B^E~d8uv{CpV|;k6PPiO=o~ca++Fzi_kt!>>@rassAk(ve?J|qwSXe z#kQSW^6mm)xei$yo=Nv#L;Q8e5u~7*y#f5nW*R_hnQ4;bA&2#_-U84#TarV6giBf5 zLQ!dH%}N;#VI?AU3>8!=bE-;Eh&Fu!bBkIF4(@zPa?JmoObRJo@L4)KAPA zk*{=YOsA>~N;R4ym_SRyu#Shn`6y)}@}7d9V7bxb3*AXywr^v9rmHmFPntm6OG#{S zHqBo1bgFDSf1LYUg?tQ^a;{q-3$(>ant49s6spcNy8aB+c|B~D-&{zhW7qPA6-j>n z$G~hjO?}2?v%;7?`B`HiM0bUQt#+T4YSD40mRuJ%;s+hwdxd)NP03L{?2o&)kj0DGm6C}0^nlZ*;{y}W;gP40 z@B6>zo4k>Q3#fm33iF9t_JbmfeD0#`*(JFvMNT!RB4^re-I+au%(swJ%59{%Q4o^8 zjQVj}o=a9xgo?}*eK#lI$N;Ns+)UX>}tJ@;BwLyoMP8ZOhy(Lt0K`(mx?}ey6;^X?J%d` z7#U$>VP!39ygmN>xJmW3B5v>HAPmM>ym!2x_uu!Q#b@{4J?DAO`JO(eDcC$%-m`gE9WhN5hl7Jd&S@L% z7aLTL!t=>wG=1n2*LglA1HVvL@p|7^lep9ZK^3<*DCvHhp`G8YJ7eZ#Z-ZNr;_-jJ z-9>$T^)WcDLnIqnkWH+EqV%$rYjbyf_LsDLSgW};ufS*O+>0*Xqe!8~Zs;R2%cNQp zAC~xT$7e%qg~v&=iua*sIly5Q>3W@mgERbGrHJi?+m}ahGEI9F*-GAdwYzldzT1=6 zeP$ZGMXmhCjVhU$W8&X%y@$4QOXxgnNVAs0Z!CHmo4!ubASD*EPNf)JFWG!RC{ReBc`u!YQGD@U_PoZG(A5A(qN5OfZ;w!NdIWdJ+o*xZzYuzTCyMgDX?8Er(Ebe<+WN{s#`gM;+s60=p zvIRDhfyPHBg(z>T*59BMibL@Eot3x6I|Btumyx1%!LFN0W(A})X?K$Mn=5z_ z+Kc}2@u>zT>*c6U9U(=FsGOa+giyg5`^Y60QZ5`QE2ku*j^ivXmlQ8cw%=pKm%Q7} zbMA=swY9z=qN{cvBNRioqZxx3vEtb3Y7l2z<|(&k$Zf7B2i1UNwI32T*T;IF>yTJ! za_3^$LcVv_vWsi^o+lsl47_EzN1;ZH$ENY!*eGWK9B{0sD&J1!aFZeDjC9^;+<)|# zV~rHogPLR6z+waKM+rPypenGUo4N0N18~GpCRg|%gl)$bVA~*=0{0Rc%DL|ER5CF# z4lQ-YxlUC%IWxgjrcelke;?oanmJXTh3$8!BfVeC(;1XZq+1x6pfT56(RFh)v+- zfz$=Im{jQUbK@sYfOa(K?cL8fD{R`+PJTfnWJl?B(65-q0-udr=!pR{-D{Ke7la$^ zxtBmowG-z9I$Zs_0wT~_3eaE(v|qn%CTDPwcxxh5^5MNlWL(O{h7>;>Hn7R-78U6e z>$DMiB^T$2X|V7BqH$^yzLPrP#(LBpQsAoB^56)!C(ejKajg$=b5z1OLL5b_)C(d$ z=m6h2%zvH!{hr)oJ7C2a^-m}KnIY)Q0)VMtbR@wl?7U_->PsPszvEi#``E0-4ApsnhX>7q|h_a|Y+Skso4p zSLI;jwJeE!0iZ~&cevlES_32bAZD{mVsJ*iVWd2lZ6Q9t{5a}7wGeneV5WFibw=UR zhA^8f#bB%b<1!kuDBO^?y|4e#;?jMS#Q;gN;@dXVQ;7Od1L^q|-UdMTlieD!8~Mq{ z+YJx&XRv3Y;3Kv5tiJg4Eqa-2EP~AB7WjUs*QdjII)bF3A%msvWbCyE9r7Q( zX~RmIsDTdYLpD{0aQ%L<>GMh(uHj~iKzn<;6(Y>daP%WPX(to&5+p@vG(CG*+~q&Q zo?ZhD?2Bgl_-$CFWtFLV;gVPrF7_-RC@#e+Qv$jOMlji^qUh zc}PJ{`YhbCs?VCv45Di_&BlW#LQeFVNS(*r^byhrcewG~vbC$WG$%+ z@!KJvwQ-+@#{@(8UWz^5Qk)NTcxF=1>Ofq=POBXW-t8(hdZ(W);bGaX^9Gx-{;a;- zZ|#(qe3q?jTv`4rPd1Yb`xH5;BX+d=$`&de?p_)EF>YeR|8QCG(TR<8nyfcrfOkUr z;6A*xQ+-HEVW)gAgA$0zDDiKd9+rL5u=;t7bpCFVKp_|hswb?|QeKmncOo{`2z@3l ze|~gtbk{0wWY{ob2N7A0G2T4GNJedZ>eHW%g@Ql30(UDNy88}&`799xjC*$QBrUI^ zM}b>;qxgH|#Uh&=C2tWGn$|wx-W~HCG%|=DV#eS@!GNX==L1jmK5OfazVH@eXR%U; zuO6)_@eHyAb-q3T|8=!~NOn;5&fP@5``ZB=)CdubAZK@yprS6!I9(%ftSLuQJp5d5 zXz6Q8Fgiq56sB3~3MsL0;3eg`^BnL=R0j=*G;Qx1JyZAAu&S+!%XJ$;E%L`b2@5W{VZ znEsM)>|XX~+W9|rFBb|vl{+}J*5mi*i-`@LI^k*|M?+Z)_%%&(FMWTp+Pg9!>ag}-(?C^IUO;O{2bHd#-pKa$7c*TM1(xwR z_H$YVGVhf*G8pWDk+z?2B{uLU2N~a@i;*FnZ*e9i-+&=EUkf*CTTqPn-%?*=fG|C5-~mXg2v3L*SxSXqhmxngq}Arv zeYKFPmoarVAv^L-9~oeb#RYylkwXp&<-=3W=XSR0l*f0isB@J?lS?3r;7oz`_pKa+ zllGXw0mF?blWGS?#y@ZJ<-H_CaZIzmqq^=kwk4@LsISPwshh{aM=~S_>tB9ECbB|6 zw@Cq|=C^d8A0)LTXDraKvm2+CMlv{qE7lCo?SzaL*P9_V8 zF3$Dp?}}RMAtX&7>7-p8exQZCMHGUio`(3>KQ}mw_iO8S~>}+Vs;<|LBQ_lfC4SONgfL@g^ z@#EYlB7ZW@li5Bq&lDlluQNH}YzkJ75fPFJWCvDg*;z=*$sA71onpI`AcR@4)^x~Y z;#Da4H~C~a^8*}?TK{I$m!LHU)VK(pxttkdf!g6U?>?80ZbyE1T?`8-{Pk4`Bgime z9a1*M_0-u}+^AcgIAqun?`Bw6`a&Ls;DD+8V5bFo0%?TMb+U|m@#$hYpO@#VoERRH zt_y7f3LdlRHzs;rmwps~&I^gUQVqe6LJ0MCAnj22p!=Fz@iTW^qjzS=zs@K80r`ZZ zTRt(hOx8gct)g<@>i@lnnKf<2^xm$p``vXLcBW*_C~vl95{ROol$9%u3HtDVtkr|+ zPnnDLvh#|O@ab)6y0|oc(axlUUG^Vy76htqa)*51YbVO4)UnMU4o`wt?|n`*k!m>D zYiAxkJd~Sn;sAl$HFzmjq7MTZ>DZQh?MiHYq_`?5w~G|9plAoz3X9pR4o@Bb((Teh zdOODd{gNJQ24F`6b5jcVYk8&9<{FOhS}d}cB8zm1&6==qUi5#3omGK1{2}sjq07;u zlfC;_o}0fdFY)sK-A6U+KjU8WbXcS*gMnpo_)+k7W%s?&k$ULZ>>pO=1Egh)-Nixq zKKoGgwv^;ZUu7V>{i|n5Ct; zBZI=f@5gKy^Mu147RkxApR6&w6m zCqjB)p8EZCq`JajqxI1h4_%u`E;|Z1ZWK9ERzGj<^ClM>`e?4jb3y&!2t+D$rd#<( z5K$bD)Kr81iS0~PcbCNmqCdXw(~HeBdt3&mv%l#iOk90&GZi)S#k*fu?fYO1F{5Hr zqvSly8du-EL85jB|6M4|8P>A1P}D+zJxj8pO}_@Q=Tl)6PR{dyY4+-^$WR%CW>0o? zcgtenvG;87>Yz2-P%QKq?@`f$yF!>j5wf_!dPY=F&btSNW5mSu7D9e<6g=-Y5aS|n z7Q|`Sf$g0uO@CoD?-Rb}k9s%lU}7{L@2ph;Xpl7`f^>`kn*wgdRIqFuNFYP2{;&nl zDlKD{0=4Q}u8B)X^z+0vha4NTAJMh%q4Se6r{31wI5~VMSG{f&@C`Zo&qTP9;2Bzm zAb_R);D`h&cFO-|cp64T0+)C-3UapUSbwcPJ^``*xp1Q5La1z+b@Ox|qw4XjkF!Ho z=6Y+)ha^D_4-b1Y%V9r*Q08H{lIyGRxaD91WieWbYc3Bqe%&@F#H4^#?6cHF>jcacWbh+fjjA+uoNkARkowWvtw!|U1Z z-HH4~whE(z){GZp%D`mE?=lM)=|t8527BRok!j90nHyXT+{FP^kTmPyPd6ttb`suc zBd~^7km|dM1X-KIL6JOC!!{3yDY*`>kgrum?Ik;Y`ob1NdY3$ zT(kFwK1GBx>ZLuavn?1#ta-8ep!%u7tf&0aI^D9crn%-$86T1}dTH@T=J@CME=lSmT9CZ0!_Gp_ zJ{W~!t?(o`3^%4@f-E*3;Od!{>oCsO9UR%H2-E+JJvKfqcG_Mz8#Ty(j(OI^nM#T2 zWzGI&9@aY$)X6WaY-;Ez^TA0}0&U!%DCalqDzSz(Eej1r;&-0mGm8Ht9b78j#HIQh z6Gh3iXM(fX;@f+dD}BBn4IQ@Y2UM6XHC;3d_edgk3(o7Ze$T1M+#TF@LX^ISd^Ul^ z^PT}5JpvOJB*Xi1zk(q8$wmA7QD|)&P|$p0pmLdeV&GE+Lgs6)M#-KGI+O9cKN)~? zJI#Q>*9Vpv+8QLq4x=*3!AFvL#~%GajN2M^9d%z$MKIm&F@;C5Fzz*I8~AE*2nF`0 z*7I1X1%BviIZEmQ8z6_E#VtguOqD>n+;N$=Z%C#q^68p~GGL(}kn58#JLq0o(`y6m zDQs)qK!l7~UiI1=;QhX-8haZyTv%anNe+XVGY6E8h79G7mL;A^9WEywthS*XE#&f9 zpg?YZH8AUw)yO|lCU>=7Be~J-LRSk;?aFggEj5eZ0ppDq=1#S>wP#QBSU;MkwceV2 zzx!)2&gkS@!qlB^^q2|p$AnGZ$r$2-F_=dNhK!y)2-*PmM5V6lkC2#)UQBC`B{`KB-hvG)ZK*YcX)m-RhLYO#~vq7R2z zGTbF$Wj^_C*GSYN53~s5aX_Iyo_rWqZnQ72R7nbgvoJ>HBYlYoLIV1IbBMefGJeU)mGw3zwzWW7m)_8n>!u%oaplVCn00%MA7>{dK zim>Y2mkG-f_itW|LuWYBm@eX29~qInYw_e5Pk0Y%Q=!!SO|5d3gWPFPwJ%X}p_6X= zu^xOC&V#_Z4q{T`bV#x`39$}0A}c!koX*^J-NVhldEWp}I zvF5MxX?EjoPN6IUr`vZP?YP4^PDGNn4EC9=_qtVHvH7|e-p6ykgS3*>%c$T#qvJBU zvcGUp3}zqP%9Rznc7PR7zA1mF6mcqAaEMuQ^oQE#kWw^=4>RWvo*B8{!~8cgK6rED z{gSoe#`r^WoYM+Pot$5r>l$(Ept+On$1;*Ak~*01$I+j*@W8yv(s z5?>mhJex1Uv#~qULg1-OMA4od_ z%i}f`P#c^GP>ul|SZml??3$_3FOw;%z5UC|CpM&bX>}}{p0jr2-jJa$`WW@J?idpg z)t7>z$sNH;pn2@LSr8Dgbs4aw=uy$LAV3DTHzNA7IZT66_Zv)M=t0z-gL8>P|B{+t zo2tKln+a+7JRDnrNR!56_djnEa@kNO_|h5tjl8}X4f4WYr2|2K>r~YY0!o{18eM4N zcuP7G>laklDpkk)dScqhCL!PXZXiB0l~{c)DVR#_-XS46+$aMer6$AoZIU5iMFH5L zs~wdy!)~$Yi53|=KeW?)St>f0k5H!Z(Md2wk!b-gs`r$>ac|E<_TPH-K}r}Q-}vyL z7zZ|sxRw*iAxvPimp<@&gAvujDg8~++`&}zHj==vt8q+U*0kIFj(5BJrw(NLkdgoN zA3?5i>!j5wBr+4X5;|y-bfV&aEu!4xvVy)(yq&I1y}+epEN>Qp|jf(A?zeD+ye}Wur6{z*16{<6eg{l zTA?2dLB7kxZur#vYdJQ6|GcK>75}bVdSt%>PpSJCe%)((eqm0gm&*4)?3v|ADGn>g zA3IYjrASa3u+SA(FZPYf3~$Ns=M^3|rE)BU@mBIV)7P*L4;;@j3x2FVCZ!)vHMW*$ z=Ih1z?QL;k$#67Jf4+{kUq2Yh_U;>C{djL+ll?iPd3|b6qzED}?vp3fA7kVZ^Pc!IpKYs(P z%(c@CC~nP}@Y-flOVd-^6n!eT$(z5*t0Q{NcQmzwO=@cC2Nbt2aXd67sH#(aE|IF> z@N&(f%$3bFPZhIQi$r*~F!BFb;9lrZGR!~$mQn>tjg9=h_2696a4hM>jsKPn5u&=7hdil(1TATu*BbF~4Z~kE}rz=t1+!Z6s#hF^%iX3k3ZZl?IEHA)L zuz7iGt$b0jbvj>juRXt4yNPD$l zHuuPS>=PJb@qi-8OeM7TJX{o}xgvd~gR%Vwu0%AJ+nq`>F?(nuqNTr=sK?oLQT(J_DCi9@m4y3T$9x?SXG@u_-XIb!uD zeGD%0RgT{ec?QtX0xBIT+lm;J^8}t#IsQ0yp=z+wSma8o5-xD)^8XWIwdT;+8CT-@ zi)M4CAv0K!Yo<$ntU9=HKf(S##Q|61*v(9}7yqp#=G-_2VK9Sm;*^3ZK8ozxjLbZ| z1gS`PHn&A0&b|M4CckV>lzcu=XDY`Cmlub-zvxZ5qk7%?EBLc=H|AtU-c>d(h$3ZO zI1j&A-i}&*SkhomxBB`u*l_jY4&^&Vh04%M(^A;wl~VfiL1yxC2bvXO?$4sfe!7mt z>t?4H{likF4p`?_vHVFJh=06+Prq5T%Wkw5+wti^I>B&1FQ4$>H_#@S1%ZJ^10Z*7 z_VZ3Wtk%!=2nu2D;dmdyrD+K{ZN-nl>z% zt|aF@=haOyt)C6H+dO$D?pPaY> z(Hw54g2Kr<6m2THxWfSTplNE`4ZBLsMNKacDT^VR-8L}KI!mgbgYAg6+Q%(Y=0!Fs9E z0k=ff2N`?JDCzlVO0MF{WPx$#aIGe3okO#5bhUCKbt`x^tSbTL;N0p-+f-5J5z70X z{pmK=tb}&LkgWka{Ce+9L3DFPIQNCCS}rP5*_nlJB3Y#hn;;*Zgx7Kf9Drdm^8o1) z%KhQT`?hx$`)_!0@_gbC$DSUX6 z{%DJ>Nd`Qo;0mZBt%!vv&i+$pRb^_t`@p1gg8THO^Y-aMSJ8CE=z3#IE@SxiCBFKP z)8~@wwHAW1Daev&<-{hmy?>YBv{3Y5@X-@-TVb%0%bz`w(!0Z^nwf0AgH_8F5Q9P~ znAyncduGTri?M9G@VsV>!9|QrG3j~%`6)F5E?;ck<{|7T)^@^T3l33%%?R3DZpzl@ z5dk`|oTg=B(0#JCjU`Pr=Ce~p2!-ca5J`d)nN(eJMKX!n-sd$dkJJN97#7n3uJ+5Y zP=Q5`-`2$tBZwE>cl=F?=$eB7JTuU}u_3l75RLHMt*7um2V;PE=~f7TnITZN1{DJb zK0(b_5gb^)LnBBsIGbD%JiuaV*hAqV4NFP7a6U-TVg+eg6fls-AFOu{B`uWFhnGP- z(Uh$L_O^ay%Al?n{3;2)l7vA10f_>wUnuw${6qyx4fqB=koN!m$@U-A7MP~}y1+Ww SBMsgF+}G06EWd60@_zt@es$dd diff --git a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/res/layout-notround/activity_wear_keyevent_profile.xml b/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/res/layout-notround/activity_wear_keyevent_profile.xml deleted file mode 100644 index 24f4eee90d..0000000000 --- a/dConnectDevicePlugin/dConnectDeviceAndroidWear/wear-app/src/main/res/layout-notround/activity_wear_keyevent_profile.xml +++ /dev/null @@ -1,36 +0,0 @@ - - -