├── .github └── logo.png ├── .gitignore ├── .idea ├── codeStyles │ └── Project.xml ├── compiler.xml ├── gradle.xml ├── jarRepositories.xml ├── misc.xml ├── modules.xml ├── runConfigurations.xml └── vcs.xml ├── .project ├── LICENSE ├── README.md ├── TODO.txt ├── app ├── .gitignore ├── app-release-1.3.apk ├── app-release-1.4.apk ├── app-release-alpha-0.1.apk ├── app-release-alpha-0.10.apk ├── app-release-alpha-0.2.apk ├── app-release-alpha-0.3.apk ├── app-release-alpha-0.4.apk ├── app-release-alpha-0.5.apk ├── app-release-beta-1.0.0.apk ├── app-release-beta-1.0.1.apk ├── app-release-beta-1.1.1.apk ├── app-release-beta-1.1.apk ├── app-release-beta-1.2.apk ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ ├── AndroidManifest.xml │ └── java │ │ └── tranquvis │ │ └── simplesmsremote │ │ ├── AppContextTest.java │ │ ├── Aspects │ │ └── ExecSequentially │ │ │ ├── ExecSequentially.java │ │ │ └── ExecSequentiallyAspect.java │ │ ├── CommandManagement │ │ ├── Commands │ │ │ ├── CommandGetAudioVolumeTest.java │ │ │ ├── CommandGetBatteryLevelTest.java │ │ │ ├── CommandGetBatteryStatusTest.java │ │ │ ├── CommandGetBluetoothStateTest.java │ │ │ ├── CommandGetDisplayBrightnessTest.java │ │ │ ├── CommandGetDisplayOffTimeoutTest.java │ │ │ ├── CommandGetHotspotStateTest.java │ │ │ ├── CommandGetLocationCoordinatesTest.java │ │ │ ├── CommandGetMobileDataStateTest.java │ │ │ ├── CommandGetWifiStateTest.java │ │ │ ├── CommandGrantPhoneRemotelyTest.java │ │ │ ├── CommandPlaySoundTest.java │ │ │ ├── CommandSetAudioVolumeTest.java │ │ │ ├── CommandSetBluetoothStateTest.java │ │ │ ├── CommandSetDisplayBrightnessTest.java │ │ │ ├── CommandSetDisplayOffTimeoutTest.java │ │ │ ├── CommandSetHotspotStateTest.java │ │ │ ├── CommandSetMobileDataStateTest.java │ │ │ ├── CommandSetWifiStateTest.java │ │ │ ├── CommandStartAudioRecordingTest.java │ │ │ ├── CommandStopAudioRecordingTest.java │ │ │ ├── CommandTakePictureTest.java │ │ │ ├── CommandTest.java │ │ │ └── CommandTurnDisplayOffTest.java │ │ ├── Modules │ │ │ ├── ModuleAudioRecordingTest.java │ │ │ ├── ModuleAudioTest.java │ │ │ ├── ModuleBatteryTest.java │ │ │ ├── ModuleBluetoothTest.java │ │ │ ├── ModuleCameraTest.java │ │ │ ├── ModuleDisplayTest.java │ │ │ ├── ModuleGrantPhoneRemotelyTest.java │ │ │ ├── ModuleLocationTest.java │ │ │ ├── ModuleMobileDataTest.java │ │ │ ├── ModulePlaySoundTest.java │ │ │ ├── ModuleTest.java │ │ │ ├── ModuleWifiHotspotTest.java │ │ │ └── ModuleWifiTest.java │ │ └── Params │ │ │ └── CommandParamOnOffTest.java │ │ ├── MyNotificationManagerTest.java │ │ ├── ServiceTestUtils.java │ │ ├── TestDataManager.java │ │ └── Utils │ │ ├── AudioUtilsTest.java │ │ ├── BatteryUtilsTest.java │ │ ├── BluetoothUtilsTest.java │ │ ├── CameraUtilsTest.java │ │ ├── DisplayUtilsTest.java │ │ ├── LocationUtilsTest.java │ │ ├── MobileDataUtilsTest.java │ │ ├── UnitTestUtils.java │ │ └── WifiUtilsTest.java │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── tranquvis │ │ └── simplesmsremote │ │ ├── Activities │ │ ├── HelpHowToControlActivity.java │ │ ├── LogActivity.java │ │ ├── MainActivity.java │ │ ├── ModuleActivities │ │ │ ├── CameraModuleActivity.java │ │ │ └── GrantPhoneRemotelyModuleActivity.java │ │ ├── ModuleActivity.java │ │ └── SettingsActivity.java │ │ ├── Adapters │ │ ├── CameraDeviceSpinnerAdapter.java │ │ ├── CommandSyntaxDescListAdapter.java │ │ ├── GrantedPhonesEditableListAdapter.java │ │ ├── LogListAdapter.java │ │ └── ManageControlModulesListAdapter.java │ │ ├── CommandManagement │ │ ├── CommandExecResult.java │ │ ├── CommandInstance.java │ │ ├── Commands │ │ │ ├── Command.java │ │ │ ├── CommandGetAudioVolume.java │ │ │ ├── CommandGetBatteryLevel.java │ │ │ ├── CommandGetBatteryStatus.java │ │ │ ├── CommandGetBluetoothState.java │ │ │ ├── CommandGetDisplayBrightness.java │ │ │ ├── CommandGetDisplayOffTimeout.java │ │ │ ├── CommandGetHotspotState.java │ │ │ ├── CommandGetLocationCoordinates.java │ │ │ ├── CommandGetMobileDataState.java │ │ │ ├── CommandGetWifiState.java │ │ │ ├── CommandGrantPhoneRemotely.java │ │ │ ├── CommandPlaySound.java │ │ │ ├── CommandSetAudioVolume.java │ │ │ ├── CommandSetBluetoothState.java │ │ │ ├── CommandSetDisplayBrightness.java │ │ │ ├── CommandSetDisplayOffTimeout.java │ │ │ ├── CommandSetHotspotState.java │ │ │ ├── CommandSetMobileDataState.java │ │ │ ├── CommandSetWifiState.java │ │ │ ├── CommandStartAudioRecording.java │ │ │ ├── CommandStopAudioRecording.java │ │ │ ├── CommandTakePicture.java │ │ │ ├── CommandTurnDisplayOff.java │ │ │ └── PhoneDependentCommand.java │ │ ├── Modules │ │ │ ├── Instances.java │ │ │ ├── Module.java │ │ │ ├── ModuleAudio.java │ │ │ ├── ModuleAudioRecording.java │ │ │ ├── ModuleBattery.java │ │ │ ├── ModuleBluetooth.java │ │ │ ├── ModuleCamera.java │ │ │ ├── ModuleDisplay.java │ │ │ ├── ModuleGrantPhoneRemotely.java │ │ │ ├── ModuleLocation.java │ │ │ ├── ModuleMobileData.java │ │ │ ├── ModulePlaySound.java │ │ │ ├── ModuleWifi.java │ │ │ └── ModuleWifiHotspot.java │ │ └── Params │ │ │ ├── CommandParam.java │ │ │ ├── CommandParamAudioType.java │ │ │ ├── CommandParamEmpty.java │ │ │ ├── CommandParamNumber.java │ │ │ ├── CommandParamOnOff.java │ │ │ ├── CommandParamString.java │ │ │ └── CommandParamUnit.java │ │ ├── Data │ │ ├── AppDataManager.java │ │ ├── CameraModuleSettingsData.java │ │ ├── CaptureSettings.java │ │ ├── DataManager.java │ │ ├── GrantModuleSettingsData.java │ │ ├── LogEntry.java │ │ ├── ModuleSettingsData.java │ │ ├── ModuleUserData.java │ │ ├── PhoneAllowlistModuleUserData.java │ │ ├── UserData.java │ │ └── UserSettings.java │ │ ├── Fragments │ │ └── GeneralPreferenceFragment.java │ │ ├── Helper │ │ ├── AudioTypeHelper.java │ │ ├── HelpOverlay.java │ │ └── MyNotificationManager.java │ │ ├── Listeners │ │ └── OnSwipeTouchListener.java │ │ ├── Receiver │ │ ├── BootCompletedReceiver.java │ │ └── SMSReceiver.java │ │ ├── Services │ │ ├── PlaySoundService.java │ │ ├── SMSCommandHandlerService.java │ │ ├── SMSReceiverService.java │ │ └── TestService.java │ │ ├── Sms │ │ ├── MyCommandMessage.java │ │ ├── MyMessage.java │ │ ├── MySimpleMessage.java │ │ ├── MySmsService.java │ │ └── SmsServiceListener.java │ │ ├── TestActivity.java │ │ └── Utils │ │ ├── AppUtils.java │ │ ├── ContactUtils.java │ │ ├── Device │ │ ├── AudioUtils.java │ │ ├── BatteryUtils.java │ │ ├── BluetoothUtils.java │ │ ├── CameraUtils.java │ │ ├── DisplayUtils.java │ │ ├── LocationUtils.java │ │ ├── MobileDataUtils.java │ │ └── WifiUtils.java │ │ ├── Graphic │ │ └── ImageUtils.java │ │ ├── PermissionUtils.java │ │ ├── Regex │ │ ├── MatchResult.java │ │ ├── MatchType.java │ │ ├── MatcherTreeNode.java │ │ ├── PatternParam.java │ │ ├── PatternTreeNode.java │ │ └── RegexUtils.java │ │ ├── StringUtils.java │ │ ├── UI │ │ └── UIUtils.java │ │ └── UnitTools │ │ ├── Unit.java │ │ └── UnitType.java │ └── res │ ├── color │ └── color_state_list_primary.xml │ ├── drawable-hdpi │ ├── baseline_play_circle_outline_grey_700_36dp.png │ ├── ic_add_circle_indigo_400_24dp.png │ ├── ic_add_white.png │ ├── ic_battery_50_grey_700_36dp.png │ ├── ic_bluetooth_grey_700_36dp.png │ ├── ic_camera_grey_700_36dp.png │ ├── ic_check_circle_green_400_18dp.png │ ├── ic_check_circle_green_400_24dp.png │ ├── ic_delete_white_24dp.png │ ├── ic_error_red_400_18dp.png │ ├── ic_folder_grey_700_24dp.png │ ├── ic_info_indigo_400_18dp.png │ ├── ic_info_outline_grey_700_24dp.png │ ├── ic_local_phone_grey_700_24dp.png │ ├── ic_location_on_grey_700_36dp.png │ ├── ic_menu_grey_700_36dp.png │ ├── ic_mic_grey_700_36dp.png │ ├── ic_more_horiz_black_24dp.png │ ├── ic_more_horiz_grey_700_18dp.png │ ├── ic_network_cell_grey_700_36dp.png │ ├── ic_play_arrow_white_24dp.png │ ├── ic_remove_circle_red_400_24dp.png │ ├── ic_settings_brightness_grey_700_36dp.png │ ├── ic_signal_wifi_2_bar_grey_700_36dp.png │ ├── ic_stop_white_24dp.png │ ├── ic_volume_up_grey_700_36dp.png │ ├── ic_wifi_tethering_grey_700_36dp.png │ └── outline_cancel_black_36dp.png │ ├── drawable-mdpi │ ├── baseline_play_circle_outline_grey_700_36dp.png │ ├── ic_add_circle_indigo_400_24dp.png │ ├── ic_add_white.png │ ├── ic_battery_50_grey_700_36dp.png │ ├── ic_bluetooth_grey_700_36dp.png │ ├── ic_camera_grey_700_36dp.png │ ├── ic_check_circle_green_400_18dp.png │ ├── ic_check_circle_green_400_24dp.png │ ├── ic_delete_white_24dp.png │ ├── ic_error_red_400_18dp.png │ ├── ic_folder_grey_700_24dp.png │ ├── ic_info_indigo_400_18dp.png │ ├── ic_info_outline_grey_700_24dp.png │ ├── ic_local_phone_grey_700_24dp.png │ ├── ic_location_on_grey_700_36dp.png │ ├── ic_menu_grey_700_36dp.png │ ├── ic_mic_grey_700_36dp.png │ ├── ic_more_horiz_black_24dp.png │ ├── ic_more_horiz_grey_700_18dp.png │ ├── ic_network_cell_grey_700_36dp.png │ ├── ic_play_arrow_white_24dp.png │ ├── ic_remove_circle_red_400_24dp.png │ ├── ic_settings_brightness_grey_700_36dp.png │ ├── ic_signal_wifi_2_bar_grey_700_36dp.png │ ├── ic_stop_white_24dp.png │ ├── ic_volume_up_grey_700_36dp.png │ ├── ic_wifi_tethering_grey_700_36dp.png │ └── outline_cancel_black_36dp.png │ ├── drawable-xhdpi │ ├── baseline_play_circle_outline_grey_700_36dp.png │ ├── ic_add_circle_indigo_400_24dp.png │ ├── ic_add_white.png │ ├── ic_battery_50_grey_700_36dp.png │ ├── ic_bluetooth_grey_700_36dp.png │ ├── ic_camera_grey_700_36dp.png │ ├── ic_check_circle_green_400_18dp.png │ ├── ic_check_circle_green_400_24dp.png │ ├── ic_delete_white_24dp.png │ ├── ic_error_red_400_18dp.png │ ├── ic_folder_grey_700_24dp.png │ ├── ic_info_indigo_400_18dp.png │ ├── ic_info_outline_grey_700_24dp.png │ ├── ic_local_phone_grey_700_24dp.png │ ├── ic_location_on_grey_700_36dp.png │ ├── ic_menu_grey_700_36dp.png │ ├── ic_mic_grey_700_36dp.png │ ├── ic_more_horiz_black_24dp.png │ ├── ic_more_horiz_grey_700_18dp.png │ ├── ic_network_cell_grey_700_36dp.png │ ├── ic_play_arrow_white_24dp.png │ ├── ic_remove_circle_red_400_24dp.png │ ├── ic_settings_brightness_grey_700_36dp.png │ ├── ic_signal_wifi_2_bar_grey_700_36dp.png │ ├── ic_stop_white_24dp.png │ ├── ic_volume_up_grey_700_36dp.png │ ├── ic_wifi_tethering_grey_700_36dp.png │ └── outline_cancel_black_36dp.png │ ├── drawable-xxhdpi │ ├── baseline_play_circle_outline_grey_700_36dp.png │ ├── ic_add_circle_indigo_400_24dp.png │ ├── ic_add_white.png │ ├── ic_battery_50_grey_700_36dp.png │ ├── ic_bluetooth_grey_700_36dp.png │ ├── ic_camera_grey_700_36dp.png │ ├── ic_check_circle_green_400_18dp.png │ ├── ic_check_circle_green_400_24dp.png │ ├── ic_delete_white_24dp.png │ ├── ic_error_red_400_18dp.png │ ├── ic_folder_grey_700_24dp.png │ ├── ic_info_indigo_400_18dp.png │ ├── ic_info_outline_grey_700_24dp.png │ ├── ic_local_phone_grey_700_24dp.png │ ├── ic_location_on_grey_700_36dp.png │ ├── ic_menu_grey_700_36dp.png │ ├── ic_mic_grey_700_36dp.png │ ├── ic_more_horiz_black_24dp.png │ ├── ic_more_horiz_grey_700_18dp.png │ ├── ic_network_cell_grey_700_36dp.png │ ├── ic_play_arrow_white_24dp.png │ ├── ic_remove_circle_red_400_24dp.png │ ├── ic_settings_brightness_grey_700_36dp.png │ ├── ic_signal_wifi_2_bar_grey_700_36dp.png │ ├── ic_stop_white_24dp.png │ ├── ic_volume_up_grey_700_36dp.png │ ├── ic_wifi_tethering_grey_700_36dp.png │ └── outline_cancel_black_36dp.png │ ├── drawable-xxxhdpi │ ├── baseline_play_circle_outline_grey_700_36dp.png │ ├── ic_add_circle_indigo_400_24dp.png │ ├── ic_add_white.png │ ├── ic_battery_50_grey_700_36dp.png │ ├── ic_bluetooth_grey_700_36dp.png │ ├── ic_camera_grey_700_36dp.png │ ├── ic_check_circle_green_400_18dp.png │ ├── ic_check_circle_green_400_24dp.png │ ├── ic_delete_white_24dp.png │ ├── ic_error_red_400_18dp.png │ ├── ic_folder_grey_700_24dp.png │ ├── ic_info_indigo_400_18dp.png │ ├── ic_info_outline_grey_700_24dp.png │ ├── ic_local_phone_grey_700_24dp.png │ ├── ic_location_on_grey_700_36dp.png │ ├── ic_menu_grey_700_36dp.png │ ├── ic_mic_grey_700_36dp.png │ ├── ic_more_horiz_black_24dp.png │ ├── ic_more_horiz_grey_700_18dp.png │ ├── ic_network_cell_grey_700_36dp.png │ ├── ic_play_arrow_white_24dp.png │ ├── ic_remove_circle_red_400_24dp.png │ ├── ic_settings_brightness_grey_700_36dp.png │ ├── ic_signal_wifi_2_bar_grey_700_36dp.png │ ├── ic_stop_white_24dp.png │ ├── ic_volume_up_grey_700_36dp.png │ ├── ic_wifi_tethering_grey_700_36dp.png │ └── outline_cancel_black_36dp.png │ ├── drawable │ ├── bg_border_bottom_grey.xml │ ├── bg_border_top_grey.xml │ ├── bg_help_frame.xml │ ├── bg_round_white.xml │ ├── button_selector_primary.xml │ ├── code_box.xml │ ├── ic_baseline_lock_36.xml │ ├── ic_launcher_foreground.xml │ └── list_divider.xml │ ├── layout │ ├── activity_configure_control_module.xml │ ├── activity_help_how_to_control.xml │ ├── activity_log.xml │ ├── activity_main.xml │ ├── activity_settings.xml │ ├── activity_test.xml │ ├── content_configure_control_module.xml │ ├── content_help_how_to_control.xml │ ├── content_log.xml │ ├── content_main.xml │ ├── content_module_settings_camera.xml │ ├── content_module_settings_grant_phone_remotely.xml │ ├── content_settings.xml │ ├── dropdown_item_phone.xml │ ├── help_overlay_main.xml │ ├── listview_item_commands.xml │ ├── listview_item_granted_phones_editable.xml │ ├── listview_item_log.xml │ ├── listview_item_manage_control_modules.xml │ └── spinner_item_camera_device.xml │ ├── menu │ └── menu_main.xml │ ├── mipmap-anydpi-v26 │ ├── ic_launcher.xml │ └── ic_launcher_round.xml │ ├── mipmap-hdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-mdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xxhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xxxhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── values-v21 │ └── styles.xml │ ├── values-w820dp │ └── dimens.xml │ ├── values │ ├── colors.xml │ ├── dimens.xml │ ├── ic_launcher_background.xml │ ├── string_arrays.xml │ ├── strings.xml │ ├── strings_audio_types.xml │ ├── strings_commands.xml │ ├── strings_control_modules.xml │ ├── strings_help.xml │ ├── strings_log.xml │ ├── strings_notifications.xml │ ├── strings_pref.xml │ ├── strings_result_messages.xml │ └── styles.xml │ └── xml │ └── pref_general.xml ├── build.gradle ├── google-play-privacy-policy.md ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── res ├── SimpleSmsRemoteLogo.ai ├── SimpleSmsRemoteLogo_colorful.ai └── SimpleSmsRemote_notification_icon.ai ├── settings.gradle └── tranquvis.directorypicker ├── app-debug.aar └── build.gradle /.github/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/.github/logo.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | /tranquvis.directorypicker/build/ 10 | .idea/assetWizardSettings.xml 11 | -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 15 | 16 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 20 | 21 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 27 | 28 | 29 | 30 | 31 | 32 | 34 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | SimpleSmsRemote 4 | Project SimpleSmsRemote created by Buildship. 5 | 6 | 7 | 8 | 9 | org.eclipse.buildship.core.gradleprojectbuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.buildship.core.gradleprojectnature 16 | 17 | 18 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016 Andreas Kaltenleitner 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /TODO.txt: -------------------------------------------------------------------------------- 1 | TODO change PreferenceScreen to CompatPreferenceScreen 2 | TODO log entry for stopping receiver not saved in apis below 21 (solution: save receiver status cyclically to file) 3 | TODO create modules: wifi (connect to specific network), camera 4 | TODO option to delete sms from inbox 5 | TODO create moore specific log entries for errors 6 | TODO important: move parameter info from module to command info activity -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/app-release-1.3.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/app-release-1.3.apk -------------------------------------------------------------------------------- /app/app-release-1.4.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/app-release-1.4.apk -------------------------------------------------------------------------------- /app/app-release-alpha-0.1.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/app-release-alpha-0.1.apk -------------------------------------------------------------------------------- /app/app-release-alpha-0.10.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/app-release-alpha-0.10.apk -------------------------------------------------------------------------------- /app/app-release-alpha-0.2.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/app-release-alpha-0.2.apk -------------------------------------------------------------------------------- /app/app-release-alpha-0.3.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/app-release-alpha-0.3.apk -------------------------------------------------------------------------------- /app/app-release-alpha-0.4.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/app-release-alpha-0.4.apk -------------------------------------------------------------------------------- /app/app-release-alpha-0.5.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/app-release-alpha-0.5.apk -------------------------------------------------------------------------------- /app/app-release-beta-1.0.0.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/app-release-beta-1.0.0.apk -------------------------------------------------------------------------------- /app/app-release-beta-1.0.1.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/app-release-beta-1.0.1.apk -------------------------------------------------------------------------------- /app/app-release-beta-1.1.1.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/app-release-beta-1.1.1.apk -------------------------------------------------------------------------------- /app/app-release-beta-1.1.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/app-release-beta-1.1.apk -------------------------------------------------------------------------------- /app/app-release-beta-1.2.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/app-release-beta-1.2.apk -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in D:\Users\Andi\sdks\android/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/androidTest/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/Aspects/ExecSequentially/ExecSequentially.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Aspects.ExecSequentially; 2 | 3 | /** 4 | * Created by Andreas Kaltenleitner on 06.10.2016. 5 | */ 6 | 7 | import java.lang.annotation.ElementType; 8 | import java.lang.annotation.Retention; 9 | import java.lang.annotation.RetentionPolicy; 10 | import java.lang.annotation.Target; 11 | 12 | @Retention(RetentionPolicy.RUNTIME) 13 | @Target({ElementType.METHOD}) 14 | public @interface ExecSequentially { 15 | String value(); 16 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandGetBatteryLevelTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | /** 4 | * Created by Kaltenleitner Andreas on 29.10.2016. 5 | */ 6 | public class CommandGetBatteryLevelTest extends CommandTest { 7 | 8 | @Override 9 | public void testPattern() throws Exception { 10 | assertThat("\n get Battery level \r").matches(); 11 | assertThat("get battery value").matches(); 12 | assertThat("fetch battery value").matches(); 13 | assertThat("retrieve battery level").matches(); 14 | assertThat("get battery charge").matches(); 15 | } 16 | 17 | @Override 18 | public void testExecution() throws Exception { 19 | assertThat("get battery level").matches().executes(); 20 | } 21 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandGetBatteryStatusTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | /** 4 | * Created by Kaltenleitner Andreas on 29.10.2016. 5 | */ 6 | public class CommandGetBatteryStatusTest extends CommandTest { 7 | 8 | @Override 9 | public void testPattern() throws Exception { 10 | assertThat("\n get Battery status \r").matches(); 11 | assertThat("is battery charging").matches(); 12 | assertThat("is charging").matches(); 13 | assertThat("is battery charging?").matches(); 14 | assertThat("is battery loading").matches(); 15 | assertThat("charging?").matches(); 16 | assertThat("battery loading?").matches(); 17 | 18 | assertThat("charging").doesNotMatch(); 19 | } 20 | 21 | @Override 22 | public void testExecution() throws Exception { 23 | assertThat("is battery charging?").matches().executes(); 24 | } 25 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandGetBluetoothStateTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import org.junit.Test; 4 | 5 | /** 6 | * Created by Kaltenleitner Andreas on 29.10.2016. 7 | */ 8 | public class CommandGetBluetoothStateTest extends CommandTest { 9 | 10 | @Override 11 | @Test 12 | public void testPattern() throws Exception { 13 | assertThat("\n is Bluetooth enabled \r").matches(); 14 | assertThat("is bluetooth on").matches(); 15 | assertThat("is bluetooth disabled").matches(); 16 | assertThat("is bluetooth off").matches(); 17 | assertThat("is bluetooth disabled").matches(); 18 | assertThat("bluetooth enabled?").matches(); 19 | assertThat("bluetooth disabled?").matches(); 20 | assertThat("get bluetooth state").matches(); 21 | } 22 | 23 | @Override 24 | @Test 25 | public void testExecution() throws Exception { 26 | assertThat("is bluetooth enabled").matches().executes(); 27 | } 28 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandGetDisplayBrightnessTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import org.junit.Test; 4 | 5 | /** 6 | * Created by Andreas Kaltenleitner on 31.10.2016. 7 | */ 8 | public class CommandGetDisplayBrightnessTest extends CommandTest { 9 | 10 | @Override 11 | @Test 12 | public void testPattern() throws Exception { 13 | assertThat("\n get Brightness \r").matches(); 14 | assertThat("fetch brightness of display").matches(); 15 | assertThat("retrieve display brightness").matches(); 16 | } 17 | 18 | @Override 19 | @Test 20 | public void testExecution() throws Exception { 21 | assertThat("get brightness").matches().executes(); 22 | } 23 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandGetDisplayOffTimeoutTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import org.junit.Test; 4 | 5 | /** 6 | * Created by Kaltenleitner Andreas on 01.11.2016. 7 | */ 8 | public class CommandGetDisplayOffTimeoutTest extends CommandTest { 9 | 10 | @Override 11 | @Test 12 | public void testPattern() throws Exception { 13 | assertThat("\n get screen Off timeout").matches(); 14 | assertThat("fetch display off timeout").matches(); 15 | assertThat("retrieve screen off timeout").matches(); 16 | } 17 | 18 | @Override 19 | @Test 20 | public void testExecution() throws Exception { 21 | assertThat("fetch display off timeout").matches().executes(); 22 | } 23 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandGetHotspotStateTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import org.junit.Test; 4 | 5 | /** 6 | * Created by Andreas Kaltenleitner on 27.10.2016. 7 | */ 8 | public class CommandGetHotspotStateTest extends CommandTest { 9 | @Override 10 | @Test 11 | public void testPattern() throws Exception { 12 | assertThat("\n is Hotspot enabled \r").matches(); 13 | assertThat("is hotspot on").matches(); 14 | assertThat("is hotspot disabled").matches(); 15 | assertThat("is hotspot off").matches(); 16 | assertThat("is wifi hotspot disabled").matches(); 17 | assertThat("wlan hotspot enabled?").matches(); 18 | assertThat("hotspot disabled?").matches(); 19 | assertThat("get hotspot state").matches(); 20 | } 21 | 22 | @Override 23 | @Test 24 | public void testExecution() throws Exception { 25 | assertThat("is hotspot enabled").matches().executes(); 26 | } 27 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandGetLocationCoordinatesTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | /** 4 | * Created by Kaltenleitner Andreas on 30.10.2016. 5 | */ 6 | public class CommandGetLocationCoordinatesTest extends CommandTest { 7 | 8 | @Override 9 | public void testPattern() throws Exception { 10 | assertThat("\n Get location \r").matches(); 11 | assertThat("get position").matches(); 12 | assertThat("retrieve location coordinates").matches(); 13 | assertThat("fetch coordinates").matches(); 14 | } 15 | 16 | @Override 17 | public void testExecution() throws Exception { 18 | assertThat("get location").matches().executes(); 19 | } 20 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandGetMobileDataStateTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import org.junit.Test; 4 | 5 | /** 6 | * Created by Kaltenleitner Andreas on 27.10.2016. 7 | */ 8 | public class CommandGetMobileDataStateTest extends CommandTest { 9 | 10 | @Override 11 | @Test 12 | public void testPattern() throws Exception { 13 | assertThat("\n is Mobile data enabled \r").matches(); 14 | assertThat("is mobile internet connection on").matches(); 15 | assertThat("is mobile internet disabled").matches(); 16 | assertThat("is mobile data off").matches(); 17 | assertThat("is mobile data disabled").matches(); 18 | assertThat("mobile data enabled?").matches(); 19 | assertThat("mobile data disabled?").matches(); 20 | assertThat("get mobile data state").matches(); 21 | } 22 | 23 | @Override 24 | @Test 25 | public void testExecution() throws Exception { 26 | assertThat("is mobile data enabled").matches().executes(); 27 | } 28 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandGetWifiStateTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import org.junit.Test; 4 | 5 | /** 6 | * Created by Kaltenleitner Andreas on 26.10.2016. 7 | */ 8 | public class CommandGetWifiStateTest extends CommandTest { 9 | 10 | @Override 11 | @Test 12 | public void testPattern() throws Exception { 13 | assertThat("\n is Wifi enabled \r").matches(); 14 | assertThat("is wifi on").matches(); 15 | assertThat("is wifi disabled").matches(); 16 | assertThat("is wifi off").matches(); 17 | assertThat("is wifi disabled").matches(); 18 | assertThat("wifi enabled?").matches(); 19 | assertThat("wifi disabled?").matches(); 20 | assertThat("get wifi state").matches(); 21 | } 22 | 23 | @Override 24 | @Test 25 | public void testExecution() throws Exception { 26 | assertThat("is wifi enabled").matches().executes(); 27 | } 28 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandSetBluetoothStateTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import org.junit.Test; 4 | 5 | import static tranquvis.simplesmsremote.CommandManagement.Commands.CommandSetBluetoothState.PARAM_BLUETOOTH_STATE; 6 | 7 | /** 8 | * Created by Andreas Kaltenleitner on 28.10.2016. 9 | */ 10 | public class CommandSetBluetoothStateTest extends CommandTest { 11 | @Override 12 | @Test 13 | public void testPattern() throws Exception { 14 | assertThat("\n enable Bluetooth \r").matches().has(PARAM_BLUETOOTH_STATE, true); 15 | assertThat("turn bluetooth on").matches().has(PARAM_BLUETOOTH_STATE, true); 16 | assertThat("turn on bluetooth").matches().has(PARAM_BLUETOOTH_STATE, true); 17 | assertThat("set bluetooth to on").matches() 18 | .has(PARAM_BLUETOOTH_STATE, true); 19 | 20 | assertThat("disable bluetooth").matches().has(PARAM_BLUETOOTH_STATE, false); 21 | assertThat("turn bluetooth off").matches().has(PARAM_BLUETOOTH_STATE, false); 22 | assertThat("turn off bluetooth").matches().has(PARAM_BLUETOOTH_STATE, false); 23 | assertThat("set bluetooth state to off").matches() 24 | .has(PARAM_BLUETOOTH_STATE, false); 25 | } 26 | 27 | @Override 28 | @Test 29 | public void testExecution() throws Exception { 30 | assertThat("enable bluetooth").matches().executes(); 31 | assertThat("disable bluetooth").matches().executes(); 32 | } 33 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandSetDisplayBrightnessTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import org.junit.Test; 4 | 5 | import tranquvis.simplesmsremote.Utils.Device.DisplayUtils; 6 | 7 | import static tranquvis.simplesmsremote.CommandManagement.Commands.CommandSetDisplayBrightness.PARAM_BRIGHTNESS_MODE; 8 | import static tranquvis.simplesmsremote.CommandManagement.Commands.CommandSetDisplayBrightness.PARAM_BRIGHTNESS_VALUE; 9 | 10 | /** 11 | * Created by Andreas Kaltenleitner on 31.10.2016. 12 | */ 13 | public class CommandSetDisplayBrightnessTest extends CommandTest { 14 | 15 | @Override 16 | @Test 17 | public void testPattern() throws Exception { 18 | assertThat("\n set Display brightness to Auto \r").matches() 19 | .has(PARAM_BRIGHTNESS_MODE, DisplayUtils.BrightnessMode.AUTO); 20 | assertThat("set brightness to 10%").matches() 21 | .has(PARAM_BRIGHTNESS_VALUE, 10d); 22 | assertThat("set brightness of display to 100%").matches() 23 | .has(PARAM_BRIGHTNESS_VALUE, 100d); 24 | assertThat("set brightness to 0%").matches() 25 | .has(PARAM_BRIGHTNESS_VALUE, 0d); 26 | 27 | } 28 | 29 | @Override 30 | @Test 31 | public void testExecution() throws Exception { 32 | assertThat("set brightness to 0%").matches().executes(); 33 | assertThat("set brightness to auto").matches().executes(); 34 | assertThat("set brightness to 100%").matches().executes(); 35 | assertThat(format("set brightness to %.4f%%", 50.4d)).matches().executes(); 36 | } 37 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandSetDisplayOffTimeoutTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import org.junit.Test; 4 | 5 | import java.util.Locale; 6 | 7 | import tranquvis.simplesmsremote.Utils.UnitTools.Unit; 8 | 9 | import static tranquvis.simplesmsremote.CommandManagement.Commands.CommandSetDisplayOffTimeout.PARAM_TIMEOUT_UNIT; 10 | import static tranquvis.simplesmsremote.CommandManagement.Commands.CommandSetDisplayOffTimeout.PARAM_TIMEOUT_VALUE; 11 | 12 | /** 13 | * Created by Kaltenleitner Andreas on 01.11.2016. 14 | */ 15 | public class CommandSetDisplayOffTimeoutTest extends CommandTest { 16 | 17 | @Override 18 | @Test 19 | public void testPattern() throws Exception { 20 | Locale.setDefault(Locale.ENGLISH); 21 | 22 | assertThat("\n set screen Off timeout to 0 S").matches() 23 | .has(PARAM_TIMEOUT_VALUE, 0d) 24 | .has(PARAM_TIMEOUT_UNIT, Unit.SECONDS); 25 | assertThat(String.format("set display off timeout to %,.4fms", 10000d)).matches() 26 | .has(PARAM_TIMEOUT_VALUE, 10000d) 27 | .has(PARAM_TIMEOUT_UNIT, Unit.MILLISECONDS); 28 | assertThat("set display off timeout to 10s").matches() 29 | .has(PARAM_TIMEOUT_VALUE, 10d) 30 | .has(PARAM_TIMEOUT_UNIT, Unit.SECONDS); 31 | assertThat(format("set display off timeout to %.4f min", 21.4d)).matches() 32 | .has(PARAM_TIMEOUT_VALUE, 21.4d) 33 | .has(PARAM_TIMEOUT_UNIT, Unit.MINUTES); 34 | assertThat(format("set display off timeout to %.4fh", 1.444d)).matches() 35 | .has(PARAM_TIMEOUT_VALUE, 1.444d) 36 | .has(PARAM_TIMEOUT_UNIT, Unit.HOURS); 37 | } 38 | 39 | @Override 40 | @Test 41 | public void testExecution() throws Exception { 42 | assertThat("set display off timeout to 10h").matches().executes(); 43 | assertThat("set display off timeout to 0ms").matches().executes(); 44 | } 45 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandSetHotspotStateTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import org.junit.Test; 4 | 5 | import static tranquvis.simplesmsremote.CommandManagement.Commands.CommandSetHotspotState.PARAM_HOTSPOT_STATE; 6 | 7 | /** 8 | * Created by Andreas Kaltenleitner on 27.10.2016. 9 | */ 10 | public class CommandSetHotspotStateTest extends CommandTest { 11 | @Override 12 | @Test 13 | public void testPattern() throws Exception { 14 | assertThat("\n enable Wifi hotspot \r").matches().has(PARAM_HOTSPOT_STATE, true); 15 | assertThat("turn hotspot on").matches().has(PARAM_HOTSPOT_STATE, true); 16 | assertThat("turn on wlan hotspot").matches().has(PARAM_HOTSPOT_STATE, true); 17 | assertThat("set hotspot state to on").matches() 18 | .has(PARAM_HOTSPOT_STATE, true); 19 | 20 | assertThat("disable hotspot").matches().has(PARAM_HOTSPOT_STATE, false); 21 | assertThat("turn hotspot off").matches().has(PARAM_HOTSPOT_STATE, false); 22 | assertThat("turn off hotspot").matches().has(PARAM_HOTSPOT_STATE, false); 23 | assertThat("set hotspot state to off").matches() 24 | .has(PARAM_HOTSPOT_STATE, false); 25 | } 26 | 27 | @Override 28 | @Test 29 | public void testExecution() throws Exception { 30 | assertThat("enable hotspot").matches().executes(); 31 | assertThat("disable hotspot").matches().executes(); 32 | } 33 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandSetMobileDataStateTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import org.junit.Test; 4 | 5 | import static tranquvis.simplesmsremote.CommandManagement.Commands.CommandSetMobileDataState.PARAM_MOBILE_DATA_STATE; 6 | 7 | /** 8 | * Created by Kaltenleitner Andreas on 27.10.2016. 9 | */ 10 | public class CommandSetMobileDataStateTest extends CommandTest { 11 | @Override 12 | @Test 13 | public void testPattern() throws Exception { 14 | assertThat("\n enable Mobile data \r").matches().has(PARAM_MOBILE_DATA_STATE, true); 15 | assertThat("turn mobile internet connection on").matches().has(PARAM_MOBILE_DATA_STATE, true); 16 | assertThat("turn on mobile internet").matches().has(PARAM_MOBILE_DATA_STATE, true); 17 | assertThat("set mobile data state to on").matches() 18 | .has(PARAM_MOBILE_DATA_STATE, true); 19 | 20 | assertThat("disable mobile data").matches().has(PARAM_MOBILE_DATA_STATE, false); 21 | assertThat("turn mobile data off").matches().has(PARAM_MOBILE_DATA_STATE, false); 22 | assertThat("turn off mobile data").matches().has(PARAM_MOBILE_DATA_STATE, false); 23 | assertThat("set mobile data state to off").matches() 24 | .has(PARAM_MOBILE_DATA_STATE, false); 25 | } 26 | 27 | @Override 28 | @Test 29 | public void testExecution() throws Exception { 30 | assertThat("enable mobile data").matches().executes(); 31 | assertThat("disable mobile data").matches().executes(); 32 | } 33 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandSetWifiStateTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import org.junit.Test; 4 | 5 | import static tranquvis.simplesmsremote.CommandManagement.Commands.CommandSetWifiState.PARAM_WIFI_STATE; 6 | 7 | 8 | /** 9 | * Created by Andreas Kaltenleitner on 27.10.2016. 10 | */ 11 | public class CommandSetWifiStateTest extends CommandTest { 12 | @Override 13 | @Test 14 | public void testPattern() throws Exception { 15 | assertThat("\n enable Wifi \r").matches().has(PARAM_WIFI_STATE, true); 16 | assertThat("turn wifi on").matches().has(PARAM_WIFI_STATE, true); 17 | assertThat("turn on wlan").matches().has(PARAM_WIFI_STATE, true); 18 | assertThat("set wifi state to on").matches() 19 | .has(PARAM_WIFI_STATE, true); 20 | 21 | assertThat("disable wifi").matches().has(PARAM_WIFI_STATE, false); 22 | assertThat("turn wifi off").matches().has(PARAM_WIFI_STATE, false); 23 | assertThat("turn off wlan").matches().has(PARAM_WIFI_STATE, false); 24 | assertThat("set wifi state to off").matches() 25 | .has(PARAM_WIFI_STATE, false); 26 | } 27 | 28 | @Override 29 | @Test 30 | public void testExecution() throws Exception { 31 | assertThat("enable wifi").matches().executes(); 32 | assertThat("disable wifi").matches().executes(); 33 | } 34 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandStartAudioRecordingTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import org.junit.Test; 4 | 5 | /** 6 | * Created by Andreas Kaltenleitner on 22.1.2018. 7 | */ 8 | public class CommandStartAudioRecordingTest extends CommandTest { 9 | 10 | @Override 11 | public void testPattern() throws Exception { 12 | assertThat("start recording").matches(); 13 | assertThat("start audio recording").matches(); 14 | assertThat("begin recording").matches(); 15 | assertThat("record audio").matches(); 16 | } 17 | 18 | @Override 19 | @Test 20 | public void testExecution() throws Exception { 21 | assertThat("start audio recording").matches().executes(); 22 | } 23 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandStopAudioRecordingTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import org.junit.Test; 4 | 5 | /** 6 | * Created by Andreas Kaltenleitner on 22.1.2018. 7 | */ 8 | public class CommandStopAudioRecordingTest extends CommandTest { 9 | 10 | @Override 11 | public void testPattern() throws Exception { 12 | assertThat("stop recording").matches(); 13 | assertThat("stop audio recording").matches(); 14 | assertThat("end recording").matches(); 15 | } 16 | 17 | @Override 18 | @Test 19 | public void testExecution() throws Exception { 20 | assertThat("stop audio recording").matches().executes(); 21 | } 22 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandTurnDisplayOffTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | /** 4 | * Created by Kaltenleitner Andreas on 01.11.2016. 5 | */ 6 | public class CommandTurnDisplayOffTest extends CommandTest { 7 | 8 | @Override 9 | public void testPattern() throws Exception { 10 | assertThat("\n turn Display off \r").matches(); 11 | assertThat("turn screen off").matches(); 12 | } 13 | 14 | @Override 15 | public void testExecution() throws Exception { 16 | assertThat("turn screen off").matches().executes(); 17 | } 18 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModuleAudioRecordingTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | /** 4 | * Created by Andreas Kaltenleitner on 22.1.2018. 5 | */ 6 | public class ModuleAudioRecordingTest extends ModuleTest { 7 | 8 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModuleAudioTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | /** 4 | * Created by Andreas Kaltenleitner on 31.10.2016. 5 | */ 6 | public class ModuleAudioTest extends ModuleTest { 7 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModuleBatteryTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | /** 4 | * Created by Kaltenleitner Andreas on 29.10.2016. 5 | */ 6 | public class ModuleBatteryTest extends ModuleTest { 7 | 8 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModuleBluetoothTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | /** 4 | * Created by Kaltenleitner Andreas on 29.10.2016. 5 | */ 6 | public class ModuleBluetoothTest extends ModuleTest { 7 | 8 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModuleCameraTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | import org.junit.Test; 4 | 5 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandTakePicture; 6 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandTakePictureTest; 7 | 8 | /** 9 | * Created by Kaltenleitner Andreas on 29.10.2016. 10 | */ 11 | public class ModuleCameraTest extends ModuleTest { 12 | 13 | @Test 14 | public void testTakePhoto() throws Exception { 15 | CommandTakePictureTest unitTest = 16 | getUnitTestFrom(getCommand(CommandTakePicture.class)); 17 | unitTest.testCustomExecutionWith(null); 18 | } 19 | 20 | @Test 21 | public void testTakePhotoWithOptions() throws Exception { 22 | CommandTakePictureTest unitTest = 23 | getUnitTestFrom(getCommand(CommandTakePicture.class)); 24 | unitTest.testCustomExecutionWith("back lens and autofocus"); 25 | } 26 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModuleDisplayTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | /** 4 | * Created by Andreas Kaltenleitner on 31.10.2016. 5 | */ 6 | public class ModuleDisplayTest extends ModuleTest { 7 | 8 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModuleGrantPhoneRemotelyTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandGrantPhoneRemotely; 4 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandGrantPhoneRemotelyTest; 5 | 6 | public class ModuleGrantPhoneRemotelyTest extends ModuleTest { 7 | @Override 8 | public void testCommands() throws Exception { 9 | super.testCommands(); 10 | CommandGrantPhoneRemotelyTest commandTest = 11 | getUnitTestFrom(getCommand(CommandGrantPhoneRemotely.class)); 12 | commandTest.testExecutionGrantSpecific(); 13 | commandTest.testExecutionWrongPassword(); 14 | commandTest.testExecutionGrantAll(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModuleLocationTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | /** 4 | * Created by Andreas Kaltenleitner on 10.11.2016. 5 | */ 6 | public class ModuleLocationTest extends ModuleTest { 7 | 8 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModuleMobileDataTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | /** 4 | * Created by Kaltenleitner Andreas on 29.10.2016. 5 | */ 6 | public class ModuleMobileDataTest extends ModuleTest { 7 | 8 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModulePlaySoundTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | public class ModulePlaySoundTest 4 | extends ModuleTest { 5 | 6 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModuleWifiHotspotTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | /** 4 | * Created by Kaltenleitner Andreas on 29.10.2016. 5 | */ 6 | public class ModuleWifiHotspotTest extends ModuleTest { 7 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModuleWifiTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | /** 4 | * Created by Kaltenleitner Andreas on 29.10.2016. 5 | */ 6 | public class ModuleWifiTest extends ModuleTest { 7 | 8 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/CommandManagement/Params/CommandParamOnOffTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Params; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.assertFalse; 6 | import static org.junit.Assert.assertTrue; 7 | 8 | /** 9 | * Created by Andreas Kaltenleitner on 03.11.2016. 10 | */ 11 | public class CommandParamOnOffTest { 12 | @Test 13 | public void getValueFromInput() throws Exception { 14 | CommandParamOnOff param = new CommandParamOnOff(""); 15 | assertTrue(param.getValueFromInput(" enable test ")); 16 | assertTrue(param.getValueFromInput("on test ")); 17 | assertFalse(param.getValueFromInput(" disable test ")); 18 | assertFalse(param.getValueFromInput("disabled test ")); 19 | assertFalse(param.getValueFromInput(" off test ")); 20 | } 21 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/ServiceTestUtils.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote; 2 | 3 | import android.app.ActivityManager; 4 | import android.app.Service; 5 | import android.content.Context; 6 | 7 | import java.util.List; 8 | 9 | public class ServiceTestUtils { 10 | public static boolean isServiceRunning(Context context, Class serviceClass){ 11 | final ActivityManager activityManager = (ActivityManager) context.getSystemService( 12 | Context.ACTIVITY_SERVICE); 13 | final List services = activityManager 14 | .getRunningServices(Integer.MAX_VALUE); 15 | 16 | for (ActivityManager.RunningServiceInfo runningServiceInfo : services) { 17 | if (runningServiceInfo.service.getClassName().equals(serviceClass.getName())){ 18 | return true; 19 | } 20 | } 21 | return false; 22 | } 23 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/Utils/BatteryUtilsTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Utils; 2 | 3 | import org.junit.Test; 4 | 5 | import tranquvis.simplesmsremote.AppContextTest; 6 | import tranquvis.simplesmsremote.Utils.Device.BatteryUtils; 7 | 8 | import static org.junit.Assert.assertTrue; 9 | 10 | /** 11 | * Created by Andreas Kaltenleitner on 06.10.2016. 12 | */ 13 | public class BatteryUtilsTest extends AppContextTest { 14 | @Test 15 | public void getBatteryLevel() throws Exception { 16 | float batteryLevel = BatteryUtils.GetBatteryLevel(appContext); 17 | assertTrue(batteryLevel <= 100 && batteryLevel > 0); 18 | } 19 | 20 | @Test 21 | public void isBatteryCharging() throws Exception { 22 | BatteryUtils.IsBatteryCharging(appContext); 23 | } 24 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/Utils/BluetoothUtilsTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Utils; 2 | 3 | import org.junit.Test; 4 | 5 | import tranquvis.simplesmsremote.AppContextTest; 6 | import tranquvis.simplesmsremote.Aspects.ExecSequentially.ExecSequentially; 7 | import tranquvis.simplesmsremote.Utils.Device.BluetoothUtils; 8 | 9 | import static org.junit.Assert.assertFalse; 10 | import static org.junit.Assert.assertTrue; 11 | 12 | /** 13 | * Created by Andreas Kaltenleitner on 06.10.2016. 14 | */ 15 | public class BluetoothUtilsTest extends AppContextTest { 16 | @Test 17 | @ExecSequentially("bluetooth") 18 | public void setBluetoothStateEnabled() throws Exception { 19 | BluetoothUtils.SetBluetoothState(true); 20 | 21 | boolean enabled = TryUntil(new TryMethod() { 22 | @Override 23 | public Boolean run() throws Exception { 24 | return BluetoothUtils.IsBluetoothEnabled(); 25 | } 26 | }, true, 10, 10000); 27 | assertTrue(enabled); 28 | } 29 | 30 | @Test 31 | @ExecSequentially("bluetooth") 32 | public void setBluetoothStateDisabled() throws Exception { 33 | BluetoothUtils.SetBluetoothState(false); 34 | 35 | boolean enabled = TryUntil(new TryMethod() { 36 | @Override 37 | public Boolean run() throws Exception { 38 | return BluetoothUtils.IsBluetoothEnabled(); 39 | } 40 | }, false, 10, 10000); 41 | assertFalse(enabled); 42 | } 43 | 44 | @Test 45 | @ExecSequentially("bluetooth") 46 | public void isBluetoothEnabled() throws Exception { 47 | BluetoothUtils.IsBluetoothEnabled(); 48 | } 49 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/Utils/CameraUtilsTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Utils; 2 | 3 | import org.junit.Test; 4 | 5 | import tranquvis.simplesmsremote.AppContextTest; 6 | import tranquvis.simplesmsremote.Utils.Device.CameraUtils; 7 | 8 | import static tranquvis.simplesmsremote.Utils.Device.CameraUtils.LensFacing; 9 | import static tranquvis.simplesmsremote.Utils.Device.CameraUtils.MyCameraInfo; 10 | import static tranquvis.simplesmsremote.Utils.Device.CameraUtils.TakePicture; 11 | 12 | /** 13 | * Created by Andi on 15.10.2016. 14 | */ 15 | public class CameraUtilsTest extends AppContextTest { 16 | @Test 17 | public void takePicture() throws Exception { 18 | MyCameraInfo cameraInfo = CameraUtils.GetCamera(appContext, null, LensFacing.BACK); 19 | TakePicture(appContext, cameraInfo, cameraInfo.getDefaultCaptureSettings()); 20 | } 21 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/Utils/LocationUtilsTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Utils; 2 | 3 | import android.location.Location; 4 | 5 | import org.junit.Test; 6 | 7 | import tranquvis.simplesmsremote.AppContextTest; 8 | import tranquvis.simplesmsremote.Utils.Device.LocationUtils; 9 | 10 | import static org.junit.Assert.assertTrue; 11 | 12 | /** 13 | * Created by Andreas Kaltenleitner on 03.10.2016. 14 | */ 15 | public class LocationUtilsTest extends AppContextTest { 16 | @Test 17 | public void fetchLocation() throws Exception { 18 | Location location = LocationUtils.GetLocation(appContext, 20000); 19 | assertTrue(location != null); 20 | } 21 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/Utils/MobileDataUtilsTest.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Utils; 2 | 3 | import org.junit.Test; 4 | 5 | import tranquvis.simplesmsremote.AppContextTest; 6 | import tranquvis.simplesmsremote.Aspects.ExecSequentially.ExecSequentially; 7 | import tranquvis.simplesmsremote.Utils.Device.MobileDataUtils; 8 | 9 | import static org.junit.Assert.assertFalse; 10 | import static org.junit.Assert.assertTrue; 11 | 12 | /** 13 | * Created by Andi on 03.09.2016. 14 | */ 15 | public class MobileDataUtilsTest extends AppContextTest { 16 | @Test 17 | @ExecSequentially("mobile data") 18 | public void testSetMobileDataStateEnabled() throws Exception { 19 | MobileDataUtils.SetMobileDataState(appContext, true); 20 | 21 | boolean enabled = TryUntil(new TryMethod() { 22 | @Override 23 | public Boolean run() throws Exception { 24 | return MobileDataUtils.IsMobileDataEnabled(appContext); 25 | } 26 | }, true); 27 | assertTrue(enabled); 28 | } 29 | 30 | @Test 31 | @ExecSequentially("mobile data") 32 | public void testSetMobileDataStateDisabled() throws Exception { 33 | MobileDataUtils.SetMobileDataState(appContext, false); 34 | 35 | boolean enabled = TryUntil(new TryMethod() { 36 | @Override 37 | public Boolean run() throws Exception { 38 | return MobileDataUtils.IsMobileDataEnabled(appContext); 39 | } 40 | }, false); 41 | assertFalse(enabled); 42 | } 43 | 44 | @Test 45 | @ExecSequentially("mobile data") 46 | public void testIsMobileDataEnabled() throws Exception { 47 | MobileDataUtils.IsMobileDataEnabled(appContext); 48 | } 49 | } -------------------------------------------------------------------------------- /app/src/androidTest/java/tranquvis/simplesmsremote/Utils/UnitTestUtils.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Utils; 2 | 3 | /** 4 | * Created by Kaltenleitner Andreas on 29.10.2016. 5 | */ 6 | 7 | public class UnitTestUtils { 8 | /** 9 | * Get tested class from unit test class. 10 | * The name of the unit test class must equal: [tested class name]Test. 11 | * 12 | * @param unitTestClass class of the unit test 13 | * @return tested class 14 | * @throws Exception 15 | */ 16 | public static Class GetTestedClassFrom(Class unitTestClass) 17 | throws ClassNotFoundException { 18 | String testUnitClassName = unitTestClass.getName(); 19 | String testedClassName = testUnitClassName.replace("Test", ""); 20 | return Class.forName(testedClassName); 21 | } 22 | 23 | /** 24 | * Counterpart to {@code GetTestedClassFrom}. 25 | * 26 | * @see #GetTestedClassFrom(Class) 27 | */ 28 | public static Class GetUnitTestClassFrom(Class testedClass) throws ClassNotFoundException { 29 | String testedClassName = testedClass.getName(); 30 | String testUnitClassName = testedClassName + "Test"; 31 | return Class.forName(testUnitClassName); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Activities/HelpHowToControlActivity.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Activities; 2 | 3 | import android.os.Bundle; 4 | import android.support.v7.app.AppCompatActivity; 5 | import android.support.v7.widget.Toolbar; 6 | 7 | import tranquvis.simplesmsremote.R; 8 | 9 | public class HelpHowToControlActivity extends AppCompatActivity { 10 | 11 | @Override 12 | protected void onCreate(Bundle savedInstanceState) { 13 | super.onCreate(savedInstanceState); 14 | setContentView(R.layout.activity_help_how_to_control); 15 | Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 16 | setSupportActionBar(toolbar); 17 | 18 | getSupportActionBar().setDisplayHomeAsUpEnabled(true); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Activities/SettingsActivity.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Activities; 2 | 3 | import android.os.Bundle; 4 | import android.support.v7.app.AppCompatActivity; 5 | import android.support.v7.widget.Toolbar; 6 | import android.view.MenuItem; 7 | import android.widget.Toast; 8 | 9 | import java.io.IOException; 10 | 11 | import tranquvis.simplesmsremote.Data.AppDataManager; 12 | import tranquvis.simplesmsremote.R; 13 | 14 | public class SettingsActivity extends AppCompatActivity { 15 | private boolean saveOnStop = true; 16 | 17 | @Override 18 | protected void onCreate(Bundle savedInstanceState) { 19 | super.onCreate(savedInstanceState); 20 | setContentView(R.layout.activity_settings); 21 | Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 22 | setSupportActionBar(toolbar); 23 | 24 | getSupportActionBar().setDisplayHomeAsUpEnabled(true); 25 | } 26 | 27 | @Override 28 | public boolean onOptionsItemSelected(MenuItem item) { 29 | switch (item.getItemId()) { 30 | case android.R.id.home: 31 | saveUserData(); 32 | saveOnStop = false; 33 | } 34 | return super.onOptionsItemSelected(item); 35 | } 36 | 37 | @Override 38 | protected void onStop() { 39 | if (saveOnStop) saveUserData(); 40 | super.onStop(); 41 | } 42 | 43 | private void saveUserData() { 44 | try { 45 | AppDataManager.getDefault().SaveUserData(this); 46 | } catch (IOException e) { 47 | Toast.makeText(this, R.string.alert_save_data_failed, Toast.LENGTH_SHORT).show(); 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Adapters/CommandSyntaxDescListAdapter.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Adapters; 2 | 3 | import android.content.Context; 4 | import android.support.annotation.NonNull; 5 | import android.view.LayoutInflater; 6 | import android.view.View; 7 | import android.view.ViewGroup; 8 | import android.widget.ArrayAdapter; 9 | import android.widget.TextView; 10 | 11 | import org.apache.commons.lang3.StringUtils; 12 | 13 | import java.util.List; 14 | 15 | import tranquvis.simplesmsremote.CommandManagement.Commands.Command; 16 | import tranquvis.simplesmsremote.R; 17 | 18 | /** 19 | * Created by Andreas Kaltenleitner on 21.10.2016. 20 | */ 21 | 22 | public class CommandSyntaxDescListAdapter extends ArrayAdapter { 23 | private static final int LAYOUT_RES = R.layout.listview_item_commands; 24 | 25 | public CommandSyntaxDescListAdapter(Context context, List commands) { 26 | super(context, LAYOUT_RES, commands); 27 | } 28 | 29 | @NonNull 30 | @Override 31 | public View getView(int position, View convertView, @NonNull ViewGroup parent) { 32 | if (convertView == null) { 33 | LayoutInflater inflater = 34 | (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 35 | convertView = inflater.inflate(LAYOUT_RES, parent, false); 36 | } 37 | 38 | Command command = getItem(position); 39 | if (command == null) 40 | return convertView; 41 | 42 | ((TextView) convertView.findViewById(R.id.textView_command_template)) 43 | .setText(StringUtils.join(command.getSyntaxDescList(), "\r\n")); 44 | 45 | return convertView; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/CommandExecResult.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement; 2 | 3 | public class CommandExecResult { 4 | private CommandInstance commandInstance; 5 | private boolean success = true; 6 | private String customResultMessage = null; 7 | private boolean forceSendingResultSmsMessage = false; 8 | 9 | public CommandExecResult(CommandInstance commandInstance) { 10 | this.commandInstance = commandInstance; 11 | } 12 | 13 | 14 | public CommandInstance getCommandInstance() { 15 | return commandInstance; 16 | } 17 | 18 | public boolean isSuccess() { 19 | return success; 20 | } 21 | 22 | public void setSuccess(boolean success) { 23 | this.success = success; 24 | } 25 | 26 | public String getCustomResultMessage() { 27 | return customResultMessage; 28 | } 29 | 30 | public void setCustomResultMessage(String customResultMessage) { 31 | this.customResultMessage = customResultMessage; 32 | } 33 | 34 | public boolean isForceSendingResultSmsMessage() { 35 | return forceSendingResultSmsMessage; 36 | } 37 | 38 | public void setForceSendingResultSmsMessage(boolean forceSendingResultSmsMessage) { 39 | this.forceSendingResultSmsMessage = forceSendingResultSmsMessage; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandGetBatteryLevel.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import android.content.Context; 4 | import android.support.annotation.Nullable; 5 | 6 | import tranquvis.simplesmsremote.CommandManagement.CommandExecResult; 7 | import tranquvis.simplesmsremote.CommandManagement.CommandInstance; 8 | import tranquvis.simplesmsremote.CommandManagement.Modules.Module; 9 | import tranquvis.simplesmsremote.Data.DataManager; 10 | import tranquvis.simplesmsremote.R; 11 | import tranquvis.simplesmsremote.Utils.Device.BatteryUtils; 12 | import tranquvis.simplesmsremote.Utils.Regex.MatchType; 13 | import tranquvis.simplesmsremote.Utils.Regex.PatternTreeNode; 14 | 15 | /** 16 | * Created by Andreas Kaltenleitner on 27.10.2016. 17 | */ 18 | 19 | public class CommandGetBatteryLevel extends Command { 20 | 21 | private static final String PATTERN_ROOT = AdaptSimplePattern( 22 | "(get|fetch|retrieve) (((battery|charge) (level|value))|(battery charge))"); 23 | 24 | public CommandGetBatteryLevel(@Nullable Module module) { 25 | super(module); 26 | 27 | this.titleRes = R.string.command_title_get_battery_level; 28 | this.syntaxDescList = new String[]{ 29 | "get battery level" 30 | }; 31 | this.patternTree = new PatternTreeNode("root", 32 | PATTERN_ROOT, 33 | MatchType.DO_NOT_MATCH 34 | ); 35 | } 36 | 37 | 38 | @Override 39 | public void execute(Context context, CommandInstance commandInstance, 40 | CommandExecResult result, DataManager dataManager) throws Exception { 41 | float batteryLevel = BatteryUtils.GetBatteryLevel(context); 42 | result.setCustomResultMessage(context.getResources().getString( 43 | R.string.result_msg_battery_level, batteryLevel * 100)); 44 | result.setForceSendingResultSmsMessage(true); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandGetWifiState.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import android.content.Context; 4 | import android.support.annotation.Nullable; 5 | 6 | import tranquvis.simplesmsremote.CommandManagement.CommandExecResult; 7 | import tranquvis.simplesmsremote.CommandManagement.CommandInstance; 8 | import tranquvis.simplesmsremote.CommandManagement.Modules.Module; 9 | import tranquvis.simplesmsremote.Data.DataManager; 10 | import tranquvis.simplesmsremote.R; 11 | import tranquvis.simplesmsremote.Utils.Device.WifiUtils; 12 | import tranquvis.simplesmsremote.Utils.Regex.MatchType; 13 | import tranquvis.simplesmsremote.Utils.Regex.PatternTreeNode; 14 | 15 | /** 16 | * Created by Andreas Kaltenleitner on 26.10.2016. 17 | */ 18 | 19 | public class CommandGetWifiState extends Command { 20 | 21 | private static final String 22 | PATTERN_ROOT = GetPatternFromTemplate(PATTERN_TEMPLATE_GET_STATE_ON_OFF, "wlan|wifi"); 23 | 24 | public CommandGetWifiState(@Nullable Module module) { 25 | super(module); 26 | 27 | this.titleRes = R.string.command_title_get_wifi_state; 28 | this.syntaxDescList = new String[]{ 29 | "is wifi enabled" 30 | }; 31 | this.patternTree = new PatternTreeNode("root", 32 | PATTERN_ROOT, 33 | MatchType.DO_NOT_MATCH 34 | ); 35 | } 36 | 37 | @Override 38 | public void execute(Context context, CommandInstance commandInstance, CommandExecResult result, 39 | DataManager dataManager) 40 | throws Exception { 41 | boolean isWifiEnabled = WifiUtils.IsWifiEnabled(context); 42 | 43 | // create result message 44 | result.setCustomResultMessage(context.getString(isWifiEnabled ? R.string.result_msg_wifi_is_enabled_true 45 | : R.string.result_msg_wifi_is_enabled_false)); 46 | result.setForceSendingResultSmsMessage(true); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandSetBluetoothState.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import android.content.Context; 4 | import android.support.annotation.Nullable; 5 | 6 | import tranquvis.simplesmsremote.CommandManagement.CommandExecResult; 7 | import tranquvis.simplesmsremote.CommandManagement.CommandInstance; 8 | import tranquvis.simplesmsremote.Data.DataManager; 9 | import tranquvis.simplesmsremote.CommandManagement.Modules.Module; 10 | import tranquvis.simplesmsremote.CommandManagement.Params.CommandParamOnOff; 11 | import tranquvis.simplesmsremote.R; 12 | import tranquvis.simplesmsremote.Utils.Device.BluetoothUtils; 13 | import tranquvis.simplesmsremote.Utils.Regex.MatchType; 14 | import tranquvis.simplesmsremote.Utils.Regex.PatternTreeNode; 15 | 16 | /** 17 | * Created by Andreas Kaltenleitner on 28.10.2016. 18 | */ 19 | public class CommandSetBluetoothState extends Command { 20 | final static CommandParamOnOff PARAM_BLUETOOTH_STATE = new CommandParamOnOff("bluetooth_state"); 21 | 22 | 23 | private static final String 24 | PATTERN_ROOT = GetPatternFromTemplate(PATTERN_TEMPLATE_SET_STATE_ON_OFF, "bluetooth"); 25 | 26 | public CommandSetBluetoothState(@Nullable Module module) { 27 | super(module); 28 | 29 | this.titleRes = R.string.command_title_set_bluetooth_state; 30 | this.syntaxDescList = new String[]{ 31 | "enable bluetooth", 32 | "disable bluetooth" 33 | }; 34 | this.patternTree = new PatternTreeNode(PARAM_BLUETOOTH_STATE.getId(), 35 | PATTERN_ROOT, 36 | MatchType.DO_NOT_MATCH 37 | ); 38 | } 39 | 40 | @Override 41 | public void execute(Context context, CommandInstance commandInstance, 42 | CommandExecResult result, DataManager dataManager) throws Exception { 43 | BluetoothUtils.SetBluetoothState(commandInstance.getParam(PARAM_BLUETOOTH_STATE)); 44 | } 45 | } -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandSetHotspotState.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import android.content.Context; 4 | import android.support.annotation.Nullable; 5 | 6 | import tranquvis.simplesmsremote.CommandManagement.CommandExecResult; 7 | import tranquvis.simplesmsremote.CommandManagement.CommandInstance; 8 | import tranquvis.simplesmsremote.Data.DataManager; 9 | import tranquvis.simplesmsremote.CommandManagement.Modules.Module; 10 | import tranquvis.simplesmsremote.CommandManagement.Params.CommandParamOnOff; 11 | import tranquvis.simplesmsremote.R; 12 | import tranquvis.simplesmsremote.Utils.Device.WifiUtils; 13 | import tranquvis.simplesmsremote.Utils.Regex.MatchType; 14 | import tranquvis.simplesmsremote.Utils.Regex.PatternTreeNode; 15 | 16 | /** 17 | * Created by Andreas Kaltenleitner on 27.10.2016. 18 | */ 19 | public class CommandSetHotspotState extends Command { 20 | static final CommandParamOnOff PARAM_HOTSPOT_STATE = new CommandParamOnOff("hotspot_state"); 21 | 22 | 23 | private static final String PATTERN_ROOT = 24 | GetPatternFromTemplate(PATTERN_TEMPLATE_SET_STATE_ON_OFF, "((wifi|wlan)\\s+)?hotspot"); 25 | 26 | public CommandSetHotspotState(@Nullable Module module) { 27 | super(module); 28 | 29 | this.titleRes = R.string.command_title_set_hotspot_state; 30 | this.syntaxDescList = new String[]{ 31 | "enable hotspot", 32 | "disable hotspot" 33 | }; 34 | this.patternTree = new PatternTreeNode(PARAM_HOTSPOT_STATE.getId(), 35 | PATTERN_ROOT, 36 | MatchType.DO_NOT_MATCH 37 | ); 38 | } 39 | 40 | @Override 41 | public void execute(Context context, CommandInstance commandInstance, 42 | CommandExecResult result, DataManager dataManager) throws Exception { 43 | WifiUtils.SetHotspotState(context, commandInstance.getParam(PARAM_HOTSPOT_STATE)); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandSetWifiState.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import android.content.Context; 4 | import android.support.annotation.Nullable; 5 | 6 | import tranquvis.simplesmsremote.CommandManagement.CommandExecResult; 7 | import tranquvis.simplesmsremote.CommandManagement.CommandInstance; 8 | import tranquvis.simplesmsremote.Data.DataManager; 9 | import tranquvis.simplesmsremote.CommandManagement.Modules.Module; 10 | import tranquvis.simplesmsremote.CommandManagement.Params.CommandParamOnOff; 11 | import tranquvis.simplesmsremote.R; 12 | import tranquvis.simplesmsremote.Utils.Device.WifiUtils; 13 | import tranquvis.simplesmsremote.Utils.Regex.MatchType; 14 | import tranquvis.simplesmsremote.Utils.Regex.PatternTreeNode; 15 | 16 | /** 17 | * Created by Andreas Kaltenleitner on 26.10.2016. 18 | */ 19 | 20 | public class CommandSetWifiState extends Command { 21 | static final CommandParamOnOff PARAM_WIFI_STATE = new CommandParamOnOff("wifi_state"); 22 | 23 | 24 | private static final String PATTERN_ROOT = 25 | GetPatternFromTemplate(PATTERN_TEMPLATE_SET_STATE_ON_OFF, "wlan|wifi"); 26 | 27 | public CommandSetWifiState(@Nullable Module module) { 28 | super(module); 29 | 30 | this.titleRes = R.string.command_title_set_wifi_state; 31 | this.syntaxDescList = new String[]{ 32 | "enable wifi", 33 | "disable wifi" 34 | }; 35 | this.patternTree = new PatternTreeNode(PARAM_WIFI_STATE.getId(), 36 | PATTERN_ROOT, 37 | MatchType.DO_NOT_MATCH 38 | ); 39 | } 40 | 41 | @Override 42 | public void execute(Context context, CommandInstance commandInstance, CommandExecResult result, 43 | DataManager dataManager) 44 | throws Exception { 45 | WifiUtils.SetWifiState(context, commandInstance.getParam(PARAM_WIFI_STATE)); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandStartAudioRecording.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import android.content.ComponentName; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | import android.support.annotation.NonNull; 7 | 8 | import tranquvis.simplesmsremote.CommandManagement.CommandExecResult; 9 | import tranquvis.simplesmsremote.CommandManagement.CommandInstance; 10 | import tranquvis.simplesmsremote.Data.DataManager; 11 | import tranquvis.simplesmsremote.CommandManagement.Modules.Module; 12 | import tranquvis.simplesmsremote.R; 13 | import tranquvis.simplesmsremote.Utils.Regex.MatchType; 14 | import tranquvis.simplesmsremote.Utils.Regex.PatternTreeNode; 15 | 16 | /** 17 | * Created by Andreas Kaltenleitner on 22.1.2018. 18 | */ 19 | public class CommandStartAudioRecording extends Command { 20 | private static final String PATTERN_ROOT = AdaptSimplePattern( 21 | "(?:(?:start|begin) (?:audio )?(?:recording))|(?:record audio)"); 22 | 23 | public CommandStartAudioRecording(@NonNull Module module) { 24 | super(module); 25 | 26 | this.titleRes = R.string.command_title_start_audio_recording; 27 | this.syntaxDescList = new String[]{ 28 | "start audio recording" 29 | }; 30 | this.patternTree = new PatternTreeNode("root", 31 | PATTERN_ROOT, 32 | MatchType.DO_NOT_MATCH 33 | ); 34 | } 35 | 36 | @Override 37 | public void execute(Context context, CommandInstance commandInstance, 38 | CommandExecResult result, DataManager dataManager) throws Exception { 39 | Intent startIntent = new Intent(); 40 | startIntent.setComponent(new ComponentName("com.github.axet.audiorecorder", 41 | "com.github.axet.audiorecorder.activities.RecordingActivity")); 42 | context.startActivity(startIntent); 43 | } 44 | } -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandStopAudioRecording.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import android.content.Context; 4 | import android.content.Intent; 5 | import android.support.annotation.NonNull; 6 | 7 | import tranquvis.simplesmsremote.CommandManagement.CommandExecResult; 8 | import tranquvis.simplesmsremote.CommandManagement.CommandInstance; 9 | import tranquvis.simplesmsremote.Data.DataManager; 10 | import tranquvis.simplesmsremote.CommandManagement.Modules.Module; 11 | import tranquvis.simplesmsremote.R; 12 | import tranquvis.simplesmsremote.Utils.Regex.MatchType; 13 | import tranquvis.simplesmsremote.Utils.Regex.PatternTreeNode; 14 | 15 | /** 16 | * Created by Andreas Kaltenleitner on 22.1.2018. 17 | */ 18 | public class CommandStopAudioRecording extends Command { 19 | private static final String PATTERN_ROOT = AdaptSimplePattern( 20 | "(?:(?:stop|end) (?:audio )?(?:recording))"); 21 | 22 | public CommandStopAudioRecording(@NonNull Module module) { 23 | super(module); 24 | 25 | this.titleRes = R.string.command_title_stop_audio_recording; 26 | this.syntaxDescList = new String[]{ 27 | "stop audio recording" 28 | }; 29 | this.patternTree = new PatternTreeNode("root", 30 | PATTERN_ROOT, 31 | MatchType.DO_NOT_MATCH 32 | ); 33 | } 34 | 35 | @Override 36 | public void execute(Context context, CommandInstance commandInstance, 37 | CommandExecResult result, DataManager dataManager) throws Exception { 38 | Intent stopIntent = new Intent("com.github.axet.audiorecorder.STOP_RECORDING"); 39 | context.sendBroadcast(stopIntent); 40 | } 41 | } -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Commands/CommandTurnDisplayOff.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import android.content.Context; 4 | import android.support.annotation.NonNull; 5 | 6 | import tranquvis.simplesmsremote.CommandManagement.CommandExecResult; 7 | import tranquvis.simplesmsremote.CommandManagement.CommandInstance; 8 | import tranquvis.simplesmsremote.Data.DataManager; 9 | import tranquvis.simplesmsremote.CommandManagement.Modules.Module; 10 | import tranquvis.simplesmsremote.R; 11 | import tranquvis.simplesmsremote.Utils.Device.DisplayUtils; 12 | import tranquvis.simplesmsremote.Utils.Regex.MatchType; 13 | import tranquvis.simplesmsremote.Utils.Regex.PatternTreeNode; 14 | 15 | /** 16 | * Created by Andreas Kaltenleitner on 31.10.2016. 17 | */ 18 | public class CommandTurnDisplayOff extends Command { 19 | 20 | private static final String PATTERN_ROOT = AdaptSimplePattern("turn (display|screen) off"); 21 | 22 | public CommandTurnDisplayOff(@NonNull Module module) { 23 | super(module); 24 | 25 | this.titleRes = R.string.command_title_turn_display_off; 26 | this.syntaxDescList = new String[]{ 27 | "turn display off" 28 | }; 29 | this.patternTree = new PatternTreeNode("root", 30 | PATTERN_ROOT, 31 | MatchType.DO_NOT_MATCH 32 | ); 33 | } 34 | 35 | @Override 36 | public void execute(Context context, CommandInstance commandInstance, 37 | CommandExecResult result, DataManager dataManager) throws Exception { 38 | DisplayUtils.TurnScreenOff(context); 39 | Thread.sleep(2000); // otherwise the notification forces the screen to turn on again 40 | } 41 | } -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Commands/PhoneDependentCommand.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Commands; 2 | 3 | import android.content.Context; 4 | import android.support.annotation.NonNull; 5 | 6 | import org.apache.commons.lang3.NotImplementedException; 7 | 8 | import tranquvis.simplesmsremote.CommandManagement.CommandExecResult; 9 | import tranquvis.simplesmsremote.CommandManagement.CommandInstance; 10 | import tranquvis.simplesmsremote.Data.DataManager; 11 | import tranquvis.simplesmsremote.CommandManagement.Modules.Module; 12 | 13 | public abstract class PhoneDependentCommand extends Command { 14 | protected PhoneDependentCommand(@NonNull Module module) { 15 | super(module); 16 | } 17 | 18 | @Override 19 | public void execute(Context context, CommandInstance commandInstance, 20 | CommandExecResult result, DataManager dataManager) throws Exception { 21 | throw new NotImplementedException("Phone dependent command cannot be executed without a phone"); 22 | } 23 | 24 | @Override 25 | abstract public void execute(Context context, CommandInstance commandInstance, 26 | String phone, CommandExecResult result, DataManager dataManager) throws Exception; 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModuleAudio.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | import android.Manifest; 4 | import android.os.Build; 5 | 6 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandGetAudioVolume; 7 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandSetAudioVolume; 8 | import tranquvis.simplesmsremote.R; 9 | 10 | /** 11 | * Created by Andreas Kaltenleitner on 27.10.2016. 12 | */ 13 | 14 | public class ModuleAudio extends Module { 15 | public final CommandSetAudioVolume commandSetAudioVolume = new CommandSetAudioVolume(this); 16 | public final CommandGetAudioVolume commandGetAudioVolume = new CommandGetAudioVolume(this); 17 | 18 | public ModuleAudio() { 19 | this.titleRes = R.string.control_module_title_audio; 20 | this.descriptionRes = R.string.control_module_desc_audio; 21 | this.iconRes = R.drawable.ic_volume_up_grey_700_36dp; 22 | this.paramInfoRes = R.string.control_module_param_desc_audio; 23 | 24 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 25 | this.requiredPermissions = new String[]{ 26 | Manifest.permission.ACCESS_NOTIFICATION_POLICY 27 | }; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModuleAudioRecording.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | import android.content.Context; 4 | 5 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandStartAudioRecording; 6 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandStopAudioRecording; 7 | import tranquvis.simplesmsremote.R; 8 | import tranquvis.simplesmsremote.Utils.AppUtils; 9 | 10 | /** 11 | * Created by Andreas Kaltenleitner on 22.1.2018. 12 | */ 13 | 14 | public class ModuleAudioRecording extends Module { 15 | public final CommandStartAudioRecording commandStartAudioRecording = new CommandStartAudioRecording(this); 16 | public final CommandStopAudioRecording commandStopAudioRecording = new CommandStopAudioRecording(this); 17 | 18 | public ModuleAudioRecording() { 19 | this.titleRes = R.string.control_module_title_audio_recording; 20 | this.descriptionRes = R.string.control_module_desc_audio_recording; 21 | this.iconRes = R.drawable.ic_mic_grey_700_36dp; 22 | } 23 | 24 | @Override 25 | public boolean isCompatible(Context context) { 26 | return super.isCompatible(context) 27 | && AppUtils.isAppInstalled(context,"com.github.axet.audiorecorder"); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModuleBattery.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandGetBatteryLevel; 4 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandGetBatteryStatus; 5 | import tranquvis.simplesmsremote.R; 6 | 7 | /** 8 | * Created by Andreas Kaltenleitner on 27.10.2016. 9 | */ 10 | 11 | public class ModuleBattery extends Module { 12 | public final CommandGetBatteryLevel commandGetBatteryLevel = 13 | new CommandGetBatteryLevel(this); 14 | public final CommandGetBatteryStatus commandGetBatteryStatus = 15 | new CommandGetBatteryStatus(this); 16 | 17 | public ModuleBattery() { 18 | this.titleRes = R.string.control_module_title_battery; 19 | this.descriptionRes = R.string.control_module_desc_battery; 20 | this.iconRes = R.drawable.ic_battery_50_grey_700_36dp; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModuleBluetooth.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | import android.Manifest; 4 | 5 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandGetBluetoothState; 6 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandSetBluetoothState; 7 | import tranquvis.simplesmsremote.R; 8 | 9 | /** 10 | * Created by Andreas Kaltenleitner on 27.10.2016. 11 | */ 12 | 13 | public class ModuleBluetooth extends Module { 14 | public final CommandSetBluetoothState commandSetBluetoothState = 15 | new CommandSetBluetoothState(this); 16 | public final CommandGetBluetoothState commandGetBluetoothState = 17 | new CommandGetBluetoothState(this); 18 | 19 | public ModuleBluetooth() { 20 | this.titleRes = R.string.control_module_title_bluetooth; 21 | this.descriptionRes = R.string.control_module_desc_bluetooth; 22 | this.iconRes = R.drawable.ic_bluetooth_grey_700_36dp; 23 | 24 | this.requiredPermissions = new String[]{ 25 | Manifest.permission.BLUETOOTH, 26 | Manifest.permission.BLUETOOTH_ADMIN 27 | }; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModuleCamera.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | import android.Manifest; 4 | import android.os.Build; 5 | 6 | import tranquvis.simplesmsremote.Activities.ModuleActivities.CameraModuleActivity; 7 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandTakePicture; 8 | import tranquvis.simplesmsremote.R; 9 | 10 | /** 11 | * Created by Andreas Kaltenleitner on 27.10.2016. 12 | */ 13 | 14 | public class ModuleCamera extends Module { 15 | public final CommandTakePicture commandTakePicture = 16 | new CommandTakePicture(this); 17 | 18 | public ModuleCamera() { 19 | this.configurationActivityType = CameraModuleActivity.class; 20 | this.titleRes = R.string.control_module_title_camera; 21 | this.descriptionRes = R.string.control_module_desc_camera; 22 | this.iconRes = R.drawable.ic_camera_grey_700_36dp; 23 | this.paramInfoRes = R.string.control_module_param_desc_camera; 24 | 25 | this.requiredPermissions = new String[]{ 26 | Manifest.permission.CAMERA, 27 | Manifest.permission.WRITE_EXTERNAL_STORAGE, 28 | }; 29 | this.sdkMin = Build.VERSION_CODES.LOLLIPOP; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModuleDisplay.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | import android.Manifest; 4 | 5 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandGetDisplayBrightness; 6 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandGetDisplayOffTimeout; 7 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandSetDisplayBrightness; 8 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandSetDisplayOffTimeout; 9 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandTurnDisplayOff; 10 | import tranquvis.simplesmsremote.R; 11 | 12 | /** 13 | * Created by Andreas Kaltenleitner on 27.10.2016. 14 | */ 15 | 16 | public class ModuleDisplay extends Module { 17 | public final CommandGetDisplayBrightness getDisplayBrightness = 18 | new CommandGetDisplayBrightness(this); 19 | public final CommandSetDisplayBrightness setDisplayBrightness = 20 | new CommandSetDisplayBrightness(this); 21 | public final CommandSetDisplayOffTimeout setDisplayOffTimeout = 22 | new CommandSetDisplayOffTimeout(this); 23 | public final CommandGetDisplayOffTimeout getDisplayOffTimeout = 24 | new CommandGetDisplayOffTimeout(this); 25 | public final CommandTurnDisplayOff turnDisplayOff = 26 | new CommandTurnDisplayOff(this); 27 | 28 | public ModuleDisplay() { 29 | this.titleRes = R.string.control_module_title_display; 30 | this.descriptionRes = R.string.control_module_desc_display; 31 | this.iconRes = R.drawable.ic_settings_brightness_grey_700_36dp; 32 | this.paramInfoRes = R.string.control_module_param_desc_display; 33 | 34 | this.requiredPermissions = new String[]{ 35 | Manifest.permission.WRITE_SETTINGS 36 | }; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModuleGrantPhoneRemotely.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | import tranquvis.simplesmsremote.Activities.ModuleActivities.GrantPhoneRemotelyModuleActivity; 4 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandGrantPhoneRemotely; 5 | import tranquvis.simplesmsremote.R; 6 | 7 | public class ModuleGrantPhoneRemotely extends Module { 8 | public final CommandGrantPhoneRemotely commandGrantPhoneRemotely = new CommandGrantPhoneRemotely(this); 9 | 10 | public ModuleGrantPhoneRemotely() { 11 | this.titleRes = R.string.control_module_title_grant_phone_remotely; 12 | this.descriptionRes = R.string.control_module_desc_grant_phone_remotely; 13 | this.iconRes = R.drawable.ic_baseline_lock_36; 14 | this.paramInfoRes = R.string.control_module_param_desc_grant_phone_remotely; 15 | this.configurationActivityType = GrantPhoneRemotelyModuleActivity.class; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModuleLocation.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | import android.Manifest; 4 | 5 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandGetLocationCoordinates; 6 | import tranquvis.simplesmsremote.R; 7 | 8 | /** 9 | * Created by Andreas Kaltenleitner on 27.10.2016. 10 | */ 11 | 12 | public class ModuleLocation extends Module { 13 | public final CommandGetLocationCoordinates commandGetLocationCoordinates = 14 | new CommandGetLocationCoordinates(this); 15 | 16 | public ModuleLocation() { 17 | this.titleRes = R.string.control_module_title_location; 18 | this.descriptionRes = R.string.control_module_desc_location; 19 | this.iconRes = R.drawable.ic_location_on_grey_700_36dp; 20 | 21 | this.requiredPermissions = new String[]{ 22 | Manifest.permission.ACCESS_FINE_LOCATION 23 | }; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModuleMobileData.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | import android.Manifest; 4 | import android.os.Build; 5 | 6 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandGetMobileDataState; 7 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandSetMobileDataState; 8 | import tranquvis.simplesmsremote.R; 9 | 10 | /** 11 | * Created by Andreas Kaltenleitner on 27.10.2016. 12 | */ 13 | 14 | public class ModuleMobileData extends Module { 15 | public final CommandSetMobileDataState commandSetMobileDataState = 16 | new CommandSetMobileDataState(this); 17 | public final CommandGetMobileDataState commandGetMobileDataState = 18 | new CommandGetMobileDataState(this); 19 | 20 | public ModuleMobileData() { 21 | this.sdkMax = Build.VERSION_CODES.LOLLIPOP; 22 | this.requiredPermissions = new String[]{ 23 | Manifest.permission.CHANGE_NETWORK_STATE, 24 | Manifest.permission.ACCESS_NETWORK_STATE 25 | }; 26 | this.titleRes = R.string.control_module_title_mobile_data; 27 | this.descriptionRes = R.string.control_module_desc_mobile_data; 28 | this.iconRes = R.drawable.ic_network_cell_grey_700_36dp; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModulePlaySound.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | import android.Manifest; 4 | import android.os.Build; 5 | 6 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandPlaySound; 7 | import tranquvis.simplesmsremote.R; 8 | 9 | public class ModulePlaySound 10 | extends Module { 11 | public final CommandPlaySound commandPlaySound = new CommandPlaySound(this); 12 | 13 | public ModulePlaySound() { 14 | this.titleRes = R.string.control_module_title_play_sound; 15 | this.descriptionRes = R.string.control_module_desc_play_sound; 16 | this.iconRes = R.drawable.baseline_play_circle_outline_grey_700_36dp; 17 | this.paramInfoRes = R.string.control_module_param_desc_play_sound; 18 | 19 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 20 | this.requiredPermissions = new String[]{ 21 | Manifest.permission.ACCESS_NOTIFICATION_POLICY 22 | }; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModuleWifi.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | import android.Manifest; 4 | 5 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandGetWifiState; 6 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandSetWifiState; 7 | import tranquvis.simplesmsremote.R; 8 | 9 | /** 10 | * Created by Andreas Kaltenleitner on 27.10.2016. 11 | */ 12 | 13 | public class ModuleWifi extends Module { 14 | public final CommandSetWifiState commandSetWifiState = new CommandSetWifiState(this); 15 | public final CommandGetWifiState commandGetWifiState = new CommandGetWifiState(this); 16 | 17 | public ModuleWifi() { 18 | this.titleRes = R.string.control_module_title_wifi; 19 | this.descriptionRes = R.string.control_module_desc_wifi; 20 | this.iconRes = R.drawable.ic_signal_wifi_2_bar_grey_700_36dp; 21 | 22 | this.requiredPermissions = new String[]{ 23 | Manifest.permission.CHANGE_WIFI_STATE, 24 | Manifest.permission.ACCESS_WIFI_STATE, 25 | Manifest.permission.WRITE_SETTINGS 26 | }; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Modules/ModuleWifiHotspot.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Modules; 2 | 3 | import android.Manifest; 4 | 5 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandGetHotspotState; 6 | import tranquvis.simplesmsremote.CommandManagement.Commands.CommandSetHotspotState; 7 | import tranquvis.simplesmsremote.R; 8 | 9 | /** 10 | * Created by Andreas Kaltenleitner on 27.10.2016. 11 | */ 12 | 13 | public class ModuleWifiHotspot extends Module { 14 | public final CommandSetHotspotState commandSetHotspotState = new CommandSetHotspotState(this); 15 | public final CommandGetHotspotState commandGetHotspotState = new CommandGetHotspotState(this); 16 | 17 | public ModuleWifiHotspot() { 18 | this.titleRes = R.string.control_module_title_wifi_hotspot; 19 | this.descriptionRes = R.string.control_module_desc_wifi_hotspot; 20 | this.iconRes = R.drawable.ic_wifi_tethering_grey_700_36dp; 21 | 22 | this.requiredPermissions = new String[]{ 23 | Manifest.permission.CHANGE_WIFI_STATE, 24 | Manifest.permission.ACCESS_WIFI_STATE, 25 | Manifest.permission.WRITE_SETTINGS 26 | }; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Params/CommandParam.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Params; 2 | 3 | public abstract class CommandParam { 4 | private String id; 5 | 6 | public CommandParam(String id) { 7 | this.id = id; 8 | } 9 | 10 | public String getId() { 11 | return id; 12 | } 13 | 14 | public abstract T getValueFromInput(String input) throws Exception; 15 | 16 | public boolean isAssigned(String input) { 17 | return input != null && !input.equals(""); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Params/CommandParamEmpty.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Params; 2 | 3 | /** 4 | * Created by Andreas Kaltenleitner on 08.11.2016. 5 | */ 6 | 7 | public class CommandParamEmpty extends CommandParam { 8 | public CommandParamEmpty(String id) { 9 | super(id); 10 | } 11 | 12 | @Override 13 | public Void getValueFromInput(String input) throws Exception { 14 | return null; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Params/CommandParamNumber.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Params; 2 | 3 | import java.text.DecimalFormat; 4 | import java.text.ParseException; 5 | import java.util.Locale; 6 | 7 | /** 8 | * Created by Kaltenleitner Andreas on 30.10.2016. 9 | */ 10 | 11 | public class CommandParamNumber extends CommandParam { 12 | public CommandParamNumber(String id) { 13 | super(id); 14 | } 15 | 16 | @Override 17 | public Double getValueFromInput(String input) throws ParseException { 18 | return DecimalFormat.getInstance(Locale.getDefault()).parse(input).doubleValue(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Params/CommandParamOnOff.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Params; 2 | 3 | /** 4 | * Created by Andreas Kaltenleitner on 26.10.2016. 5 | */ 6 | 7 | public class CommandParamOnOff extends CommandParam { 8 | public CommandParamOnOff(String id) { 9 | super(id); 10 | } 11 | 12 | @Override 13 | public Boolean getValueFromInput(String input) { 14 | return !input.matches("(?i)^(.*?(^|\\s+)(no|(disable(d)?)|off)($|\\s+)).*?"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Params/CommandParamString.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Params; 2 | 3 | /** 4 | * Created by Andreas Kaltenleitner on 26.10.2016. 5 | */ 6 | 7 | public class CommandParamString extends CommandParam { 8 | public CommandParamString(String id) { 9 | super(id); 10 | } 11 | 12 | @Override 13 | public String getValueFromInput(String input) { 14 | return input; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/CommandManagement/Params/CommandParamUnit.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.CommandManagement.Params; 2 | 3 | 4 | import tranquvis.simplesmsremote.Utils.UnitTools.Unit; 5 | 6 | /** 7 | * Created by Kaltenleitner Andreas on 01.11.2016. 8 | */ 9 | 10 | public class CommandParamUnit extends CommandParam { 11 | public CommandParamUnit(String id) { 12 | super(id); 13 | } 14 | 15 | /** 16 | * Get unit from input. 17 | * 18 | * @param input unit string 19 | * @throws Exception 20 | */ 21 | @Override 22 | public Unit getValueFromInput(String input) throws Exception { 23 | for (Unit unit : Unit.values()) { 24 | if (input.matches(unit.getPattern())) 25 | return unit; 26 | } 27 | throw new IllegalArgumentException("unsupported unit"); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Data/DataManager.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Data; 2 | 3 | import android.content.Context; 4 | 5 | import java.io.IOException; 6 | import java.util.ArrayList; 7 | import java.util.Collection; 8 | import java.util.List; 9 | 10 | import tranquvis.simplesmsremote.CommandManagement.Modules.Instances; 11 | import tranquvis.simplesmsremote.CommandManagement.Modules.Module; 12 | 13 | public interface DataManager { 14 | UserData getUserData(); 15 | 16 | List getLog(); 17 | 18 | void LoadUserData(Context context) throws IOException; 19 | void SaveUserData(Context context) throws IOException; 20 | void LoadLog(Context context) throws IOException; 21 | void addLogEntry(LogEntry logEntry, Context context) throws IOException; 22 | 23 | default void tryAddLogEntry(LogEntry logEntry, Context context) { 24 | try { 25 | addLogEntry(logEntry, context); 26 | } catch (IOException e) { 27 | e.printStackTrace(); 28 | } 29 | } 30 | 31 | default ModuleUserData getModuleUserData(Module module) { 32 | if(getUserData() == null) return null; 33 | for (ModuleUserData moduleUserData : getUserData().getModules()) { 34 | if (moduleUserData.getModuleId().equals(module.getId())) 35 | return moduleUserData; 36 | } 37 | return null; 38 | } 39 | 40 | default boolean isModuleEnabled(Module module) { 41 | return getModuleUserData(module) != null; 42 | } 43 | 44 | default List getEnabledPhoneAllowlistModules() { 45 | ArrayList enabledModules = new ArrayList<>(); 46 | Collection modules = Instances.GetAll(null); 47 | 48 | for (Module module : modules) { 49 | if (!isModuleEnabled(module)) continue; 50 | if (!(getModuleUserData(module) instanceof PhoneAllowlistModuleUserData)) continue; 51 | enabledModules.add(module); 52 | } 53 | 54 | return enabledModules; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Data/GrantModuleSettingsData.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Data; 2 | 3 | import java.security.SecureRandom; 4 | 5 | public class GrantModuleSettingsData extends ModuleSettingsData { 6 | private String password; 7 | 8 | // Uppercase latin characters (excluding "O") and digits (excluding "0") 9 | private static final String RANDOM_PASSWORD_CHARACTERS = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789"; 10 | private static final int RANDOM_PASSWORD_LENGTH = 6; 11 | 12 | public GrantModuleSettingsData() { 13 | this(generatePassword()); 14 | } 15 | 16 | public GrantModuleSettingsData(String password) { 17 | this.password = password; 18 | } 19 | 20 | public String getPassword() { 21 | return password; 22 | } 23 | 24 | public void setPassword(String password) { 25 | this.password = password; 26 | } 27 | 28 | public static String generatePassword() { 29 | SecureRandom rng = new SecureRandom(); 30 | char[] passwordChars = new char[RANDOM_PASSWORD_LENGTH]; 31 | for (int i = 0; i < passwordChars.length; i++) { 32 | int randomCharIndex = rng.nextInt(RANDOM_PASSWORD_CHARACTERS.length()); 33 | passwordChars[i] = RANDOM_PASSWORD_CHARACTERS.charAt(randomCharIndex); 34 | } 35 | return new String(passwordChars); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Data/ModuleSettingsData.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Data; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * Created by Andreas Kaltenleitner on 18.10.2016. 7 | */ 8 | 9 | public abstract class ModuleSettingsData implements Serializable { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Data/ModuleUserData.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Data; 2 | 3 | import android.support.annotation.Nullable; 4 | 5 | import java.io.Serializable; 6 | 7 | public class ModuleUserData implements Serializable { 8 | private final String controlModuleId; 9 | private final ModuleSettingsData settings; 10 | 11 | public ModuleUserData(String controlModuleId, @Nullable ModuleSettingsData settings) { 12 | this.controlModuleId = controlModuleId; 13 | this.settings = settings; 14 | } 15 | 16 | public String getModuleId() { 17 | return controlModuleId; 18 | } 19 | 20 | public ModuleSettingsData getSettings() { 21 | return settings; 22 | } 23 | 24 | public ModuleUserData withSettings(ModuleSettingsData settings) { 25 | return new ModuleUserData(getModuleId(), settings); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Data/UserSettings.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Data; 2 | 3 | import android.os.Build; 4 | 5 | import java.io.Serializable; 6 | 7 | /** 8 | * Created by Andreas Kaltenleitner on 30.08.2016. 9 | */ 10 | public class UserSettings implements Serializable { 11 | private boolean startReceiverOnSystemStart; 12 | private boolean notifyCommandsExecuted = true; //unused 13 | private boolean replyWithResult; 14 | private boolean receiverStartForeground = Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP; 15 | 16 | public UserSettings() { 17 | } 18 | 19 | public boolean isStartReceiverOnSystemStart() { 20 | return startReceiverOnSystemStart; 21 | } 22 | 23 | public void setStartReceiverOnSystemStart(boolean startReceiverOnSystemStart) { 24 | this.startReceiverOnSystemStart = startReceiverOnSystemStart; 25 | } 26 | 27 | public boolean isNotifyCommandsExecuted() { 28 | return notifyCommandsExecuted; 29 | } 30 | 31 | public void setNotifyCommandsExecuted(boolean notifyCommandsExecuted) { 32 | this.notifyCommandsExecuted = notifyCommandsExecuted; 33 | } 34 | 35 | 36 | public boolean isReplyWithResult() { 37 | return replyWithResult; 38 | } 39 | 40 | public void setReplyWithResult(boolean replyWithResult) { 41 | this.replyWithResult = replyWithResult; 42 | } 43 | 44 | public boolean isReceiverStartForeground() { 45 | return receiverStartForeground; 46 | } 47 | 48 | public void setReceiverStartForeground(boolean receiverStartForeground) { 49 | this.receiverStartForeground = receiverStartForeground; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Helper/AudioTypeHelper.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Helper; 2 | 3 | import tranquvis.simplesmsremote.R; 4 | import tranquvis.simplesmsremote.Utils.Device.AudioUtils; 5 | 6 | /** 7 | * Created by Andreas Kaltenleitner on 31.10.2016. 8 | */ 9 | 10 | public class AudioTypeHelper { 11 | public static int GetNameResFromAudioType(AudioUtils.AudioType audioType) { 12 | switch (audioType) { 13 | case RING: 14 | return R.string.audio_type_name_ring; 15 | case MUSIC: 16 | return R.string.audio_type_name_music; 17 | case ALARM: 18 | return R.string.audio_type_name_alarm; 19 | case NOTIFICATION: 20 | return R.string.audio_type_name_notification; 21 | case SYSTEM: 22 | return R.string.audio_type_name_system; 23 | case VOICECALL: 24 | return R.string.audio_type_name_voicecall; 25 | case DTMF: 26 | return R.string.audio_type_name_dtmf; 27 | default: 28 | throw new IllegalArgumentException("unexpected audio type"); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Helper/HelpOverlay.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Helper; 2 | 3 | import tranquvis.simplesmsremote.R; 4 | 5 | public class HelpOverlay { 6 | private View[] helpViews; 7 | 8 | private HelpOverlay(View[] helpViews) { 9 | this.helpViews = helpViews; 10 | } 11 | 12 | public static HelpOverlay GetMainActivityOverlay() { 13 | return new HelpOverlay(new View[]{ 14 | new View(R.string.help_start_title, R.string.help_start_content, -1), 15 | new View(R.string.help_receiver_title, R.string.help_receiver_content, 16 | R.id.layout_help_receiver), 17 | new View(R.string.help_module_title, R.string.help_module_content, 18 | R.id.layout_help_module), 19 | new View(R.string.help_other_title, R.string.help_other_content, -1) 20 | }); 21 | } 22 | 23 | public View getView(int position) { 24 | if (position >= helpViews.length) 25 | return null; 26 | return helpViews[position]; 27 | } 28 | 29 | public int getHelpViewCount() { 30 | return helpViews.length; 31 | } 32 | 33 | public static class View { 34 | private int titleRes; 35 | private int descRes; 36 | private int hintContainerResId; 37 | 38 | public View(int titleRes, int descRes, int hintContainerResId) { 39 | this.titleRes = titleRes; 40 | this.descRes = descRes; 41 | this.hintContainerResId = hintContainerResId; 42 | } 43 | 44 | public int getTitleRes() { 45 | return titleRes; 46 | } 47 | 48 | public int getDescRes() { 49 | return descRes; 50 | } 51 | 52 | public int getHintContainerResId() { 53 | return hintContainerResId; 54 | } 55 | } 56 | } -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Listeners/OnSwipeTouchListener.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Listeners; 2 | 3 | import android.content.Context; 4 | import android.view.GestureDetector; 5 | import android.view.MotionEvent; 6 | import android.view.View; 7 | 8 | /** 9 | * Detects left and right swipes across a view. 10 | */ 11 | public class OnSwipeTouchListener implements View.OnTouchListener { 12 | private final GestureDetector gestureDetector; 13 | 14 | public OnSwipeTouchListener(Context context) { 15 | gestureDetector = new GestureDetector(context, new GestureListener()); 16 | } 17 | 18 | public void onSwipeLeft() { 19 | } 20 | 21 | public void onSwipeRight() { 22 | } 23 | 24 | public boolean onTouch(View v, MotionEvent event) { 25 | return gestureDetector.onTouchEvent(event); 26 | } 27 | 28 | private final class GestureListener extends GestureDetector.SimpleOnGestureListener { 29 | 30 | private static final int SWIPE_DISTANCE_THRESHOLD = 100; 31 | private static final int SWIPE_VELOCITY_THRESHOLD = 100; 32 | 33 | @Override 34 | public boolean onDown(MotionEvent e) { 35 | return true; 36 | } 37 | 38 | @Override 39 | public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 40 | float distanceX = e2.getX() - e1.getX(); 41 | float distanceY = e2.getY() - e1.getY(); 42 | if (Math.abs(distanceX) > Math.abs(distanceY) 43 | && Math.abs(distanceX) > SWIPE_DISTANCE_THRESHOLD 44 | && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) { 45 | if (distanceX > 0) 46 | onSwipeRight(); 47 | else 48 | onSwipeLeft(); 49 | return true; 50 | } 51 | return false; 52 | } 53 | } 54 | } -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Receiver/BootCompletedReceiver.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Receiver; 2 | 3 | import android.content.BroadcastReceiver; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | import android.util.Log; 7 | 8 | import java.io.IOException; 9 | 10 | import tranquvis.simplesmsremote.Data.AppDataManager; 11 | import tranquvis.simplesmsremote.Data.DataManager; 12 | import tranquvis.simplesmsremote.Data.LogEntry; 13 | import tranquvis.simplesmsremote.Helper.MyNotificationManager; 14 | import tranquvis.simplesmsremote.Services.SMSReceiverService; 15 | 16 | /** 17 | * Created by Andi on 01.09.2016. 18 | */ 19 | public class BootCompletedReceiver extends BroadcastReceiver { 20 | @Override 21 | public void onReceive(Context context, Intent intent) { 22 | AppDataManager dataManager = AppDataManager.getDefault(); 23 | try { 24 | dataManager.LoadUserData(context); 25 | if (dataManager.getUserData().getUserSettings().isStartReceiverOnSystemStart()) { 26 | SMSReceiverService.start(context, 27 | dataManager.getUserData().getUserSettings().isReceiverStartForeground()); 28 | Log.i("receiver", "service started successful"); 29 | } 30 | } catch (Exception e) { 31 | Log.e("bootCompletedReceiver", "failed to start service"); 32 | e.printStackTrace(); 33 | dataManager.tryAddLogEntry(LogEntry.Predefined.AfterBootReceiverStartFailedUnexpected( 34 | context), context); 35 | MyNotificationManager.getInstance(context).notifyStartReceiverAfterBootFailed(); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Receiver/SMSReceiver.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Receiver; 2 | 3 | import android.content.BroadcastReceiver; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | 7 | import tranquvis.simplesmsremote.Services.SMSCommandHandlerService; 8 | import tranquvis.simplesmsremote.Services.SMSReceiverService; 9 | 10 | public class SMSReceiver extends BroadcastReceiver { 11 | private SMSReceiverService smsReceiverService; 12 | 13 | public SMSReceiver(SMSReceiverService smsReceiverService) { 14 | this.smsReceiverService = smsReceiverService; 15 | } 16 | 17 | @Override 18 | public void onReceive(final Context context, Intent intent) { 19 | if(intent.getAction() == null || !intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) 20 | return; 21 | 22 | SMSCommandHandlerService.start(context, intent); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Services/TestService.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Services; 2 | 3 | import android.app.Service; 4 | import android.content.Intent; 5 | import android.os.Binder; 6 | import android.os.IBinder; 7 | 8 | public class TestService extends Service { 9 | private final IBinder binder = new LocalBinder(); 10 | 11 | @Override 12 | public IBinder onBind(Intent intent) { 13 | return binder; 14 | } 15 | 16 | /** 17 | * Class used for the client Binder. Because we know this service always 18 | * runs in the same process as its clients, we don't need to deal with IPC. 19 | */ 20 | public class LocalBinder extends Binder { 21 | public TestService getService() { 22 | // Return this instance of LocalService so clients can call public methods 23 | return TestService.this; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Sms/MyMessage.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Sms; 2 | 3 | /** 4 | * Created by Andreas Kaltenleitner on 24.08.2016. 5 | */ 6 | public interface MyMessage { 7 | String getPhoneNumber(); 8 | 9 | String getMessage(); 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Sms/SmsServiceListener.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Sms; 2 | 3 | /** 4 | * Created by Andreas Kaltenleitner on 24.08.2016. 5 | */ 6 | public interface SmsServiceListener { 7 | void OnSmsSent(MyMessage sms, int resultCode); 8 | 9 | void OnSmsDelivered(MyMessage sms, int resultCode); 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/TestActivity.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote; 2 | 3 | import android.content.Context; 4 | import android.location.Criteria; 5 | import android.location.Location; 6 | import android.location.LocationListener; 7 | import android.location.LocationManager; 8 | import android.os.Bundle; 9 | import android.support.v7.app.AppCompatActivity; 10 | import android.util.Log; 11 | 12 | public class TestActivity extends AppCompatActivity implements LocationListener { 13 | private final String TAG = getClass().getName(); 14 | 15 | private long startTime; 16 | 17 | @Override 18 | protected void onCreate(Bundle savedInstanceState) { 19 | super.onCreate(savedInstanceState); 20 | setContentView(R.layout.activity_test); 21 | 22 | Criteria criteria = new Criteria(); 23 | criteria.setAccuracy(Criteria.ACCURACY_COARSE); 24 | 25 | LocationManager locationManager = (LocationManager) 26 | this.getSystemService(Context.LOCATION_SERVICE); 27 | 28 | startTime = System.currentTimeMillis(); 29 | try { 30 | locationManager.requestSingleUpdate(criteria, this, null); 31 | } catch (SecurityException e) { 32 | Log.e(TAG, "permission not granted"); 33 | } 34 | } 35 | 36 | @Override 37 | public void onLocationChanged(Location location) { 38 | Log.i(TAG, location.toString()); 39 | Log.i(TAG, String.format("ellapsed time: %d", System.currentTimeMillis() - startTime)); 40 | } 41 | 42 | @Override 43 | public void onStatusChanged(String s, int i, Bundle bundle) { 44 | Log.w(TAG, s); 45 | } 46 | 47 | @Override 48 | public void onProviderEnabled(String s) { 49 | Log.w(TAG, s); 50 | } 51 | 52 | @Override 53 | public void onProviderDisabled(String s) { 54 | Log.w(TAG, s); 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Utils/AppUtils.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Utils; 2 | 3 | import android.content.Context; 4 | import android.content.pm.PackageManager; 5 | 6 | /** 7 | * Created by Andreas Kaltenleitner on 22.01.2018. 8 | */ 9 | 10 | public class AppUtils { 11 | 12 | public static boolean isAppInstalled(Context context, String packageName) { 13 | try { 14 | context.getPackageManager().getApplicationInfo(packageName, 0); 15 | return true; 16 | } 17 | catch (PackageManager.NameNotFoundException e) { 18 | return false; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Utils/Device/BluetoothUtils.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Utils.Device; 2 | 3 | import android.bluetooth.BluetoothAdapter; 4 | 5 | /** 6 | * Created by Andreas Kaltenleitner on 05.10.2016. 7 | */ 8 | 9 | public class BluetoothUtils { 10 | private static BluetoothAdapter getDefaultBluetoothHandle() throws Exception { 11 | BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 12 | if (bluetoothAdapter == null) 13 | throw new Exception("bluetooth not supported on this device"); 14 | return bluetoothAdapter; 15 | } 16 | 17 | /** 18 | * set bluetooth state 19 | * 20 | * @param enabled bluetooth state 21 | * @throws Exception 22 | */ 23 | public static void SetBluetoothState(boolean enabled) throws Exception { 24 | BluetoothAdapter bluetoothAdapter = getDefaultBluetoothHandle(); 25 | 26 | boolean isEnabled = bluetoothAdapter.isEnabled(); 27 | if (enabled && !isEnabled) { 28 | if (!bluetoothAdapter.enable()) 29 | throw new Exception("enabling bluetooth failed"); 30 | } else if (!enabled && isEnabled) { 31 | if (!bluetoothAdapter.disable()) 32 | throw new Exception("disabling bluetooth failed"); 33 | } 34 | } 35 | 36 | /** 37 | * check if bluetooth is enabled 38 | * 39 | * @return true if bluetooth is enabled 40 | * @throws Exception 41 | */ 42 | public static boolean IsBluetoothEnabled() throws Exception { 43 | BluetoothAdapter bluetoothAdapter = getDefaultBluetoothHandle(); 44 | return bluetoothAdapter.isEnabled(); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Utils/Graphic/ImageUtils.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Utils.Graphic; 2 | 3 | import android.graphics.Bitmap; 4 | import android.media.Image; 5 | import android.media.ImageReader; 6 | import android.os.Build; 7 | import android.support.annotation.RequiresApi; 8 | 9 | import java.nio.ByteBuffer; 10 | 11 | /** 12 | * Created by Andi on 15.10.2016. 13 | */ 14 | 15 | public class ImageUtils { 16 | 17 | /** 18 | * Retrieve Bitmap with specific format from ImageReader. 19 | * 20 | * @param imageReader the image reader 21 | * @return bitmap 22 | */ 23 | @RequiresApi(api = Build.VERSION_CODES.KITKAT) 24 | public static Bitmap GetBitmapFromImageReader(ImageReader imageReader) { 25 | Bitmap bitmap; 26 | 27 | //get image buffer 28 | Image image = imageReader.acquireLatestImage(); 29 | final Image.Plane[] planes = image.getPlanes(); 30 | final ByteBuffer buffer = planes[0].getBuffer(); 31 | 32 | int pixelStride = planes[0].getPixelStride(); 33 | int rowStride = planes[0].getRowStride(); 34 | int rowPadding = rowStride - pixelStride * image.getWidth(); 35 | // create bitmap 36 | bitmap = Bitmap.createBitmap(image.getWidth() + rowPadding / pixelStride, image.getHeight(), Bitmap.Config.ARGB_8888); 37 | bitmap.copyPixelsFromBuffer(buffer); 38 | image.close(); 39 | return bitmap; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Utils/Regex/MatchResult.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Utils.Regex; 2 | 3 | public class MatchResult { 4 | boolean success; 5 | String failDetail; 6 | 7 | public MatchResult(boolean success, String failDetail) { 8 | this.success = success; 9 | this.failDetail = failDetail; 10 | } 11 | 12 | public String getFailDetail() { 13 | return failDetail; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Utils/Regex/MatchType.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Utils.Regex; 2 | 3 | public enum MatchType { 4 | DO_NOT_MATCH, 5 | 6 | /** 7 | * If no child is found on the position, a new child will be added. 8 | */ 9 | BY_INDEX, 10 | 11 | /** 12 | * If no child matches the given string, a new child will be added. 13 | */ 14 | BY_CHILD_PATTERN, 15 | 16 | /** 17 | * Match fails if no child is found on the position. 18 | */ 19 | BY_INDEX_STRICT, 20 | 21 | /** 22 | * Match fails if no child is found, which matches the given string. 23 | */ 24 | BY_CHILD_PATTERN_STRICT, 25 | 26 | /** 27 | * Match only if input is not empty. 28 | * If no child is found on the position, a new child will be added. 29 | */ 30 | BY_INDEX_IF_NOT_EMPTY 31 | } -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Utils/Regex/PatternParam.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Utils.Regex; 2 | 3 | /** 4 | * Created by Andreas Kaltenleitner on 25.10.2016. 5 | */ 6 | 7 | public class PatternParam { 8 | private String id; 9 | 10 | public PatternParam(String id) { 11 | this.id = id; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Utils/Regex/RegexUtils.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Utils.Regex; 2 | 3 | /** 4 | * Created by Andreas Kaltenleitner on 25.10.2016. 5 | */ 6 | 7 | public class RegexUtils { 8 | 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Utils/StringUtils.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Utils; 2 | 3 | /** 4 | * Created by Andreas Kaltenleitner on 08.11.2016. 5 | */ 6 | 7 | public class StringUtils { 8 | /** 9 | * Convert whitespace of string to corresponding chars. 10 | * For example: accuracies of NEWLINE are converted to \n. 11 | * 12 | * @return adapted string 13 | */ 14 | public static String ConvertWhitespace(String string) { 15 | return string.replace("\n", "\\n").replace("\r", "\\r"); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Utils/UI/UIUtils.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Utils.UI; 2 | 3 | import android.view.View; 4 | import android.view.ViewGroup; 5 | import android.widget.ListAdapter; 6 | import android.widget.ListView; 7 | 8 | public class UIUtils { 9 | 10 | /** 11 | * Set ListView height dynamically based on the height of the items. 12 | * 13 | * @param listView to be resized 14 | * @see stackoverflow answer 15 | */ 16 | public static void SetListViewHeightBasedOnItems(ListView listView) { 17 | 18 | ListAdapter listAdapter = listView.getAdapter(); 19 | if (listAdapter == null) 20 | throw new RuntimeException("an adapter must be set before list view can be resized"); 21 | 22 | int numberOfItems = listAdapter.getCount(); 23 | 24 | // Get total height of all items. 25 | int totalItemsHeight = 0; 26 | for (int itemPos = 0; itemPos < numberOfItems; itemPos++) { 27 | View item = listAdapter.getView(itemPos, null, listView); 28 | item.measure(0, 0); 29 | totalItemsHeight += item.getMeasuredHeight(); 30 | } 31 | 32 | // Get total height of all item dividers. 33 | int totalDividersHeight = listView.getDividerHeight() * (numberOfItems - 1); 34 | 35 | //get vertical padding 36 | int paddingVertical = listView.getPaddingTop() + listView.getPaddingBottom(); 37 | 38 | // Set list height. 39 | ViewGroup.LayoutParams params = listView.getLayoutParams(); 40 | params.height = totalItemsHeight + totalDividersHeight + paddingVertical; 41 | listView.setLayoutParams(params); 42 | listView.requestLayout(); 43 | } 44 | } -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Utils/UnitTools/Unit.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Utils.UnitTools; 2 | 3 | 4 | public enum Unit { 5 | MILLISECONDS("ms", 1000f, UnitType.TIME), SECONDS("s", 1f, UnitType.TIME), 6 | MINUTES("min", 1f / 60f, UnitType.TIME), HOURS("h", 1f / 3600f, UnitType.TIME); 7 | 8 | 9 | private String pattern; 10 | private Float factor; 11 | private UnitType unitType; 12 | 13 | Unit(String pattern, Float factor, UnitType unitType) { 14 | this.pattern = pattern; 15 | this.factor = factor; 16 | this.unitType = unitType; 17 | } 18 | 19 | /** 20 | * Get pattern, which matches all units of the given unit type. 21 | * 22 | * @param unitType unit type 23 | * @return the full pattern 24 | */ 25 | 26 | public static String GetFullPattern(UnitType unitType) { 27 | 28 | String pattern = "(?i)"; 29 | 30 | boolean first = true; 31 | for (Unit unit : values()) { 32 | if (unit.unitType == unitType) { 33 | if (!first) pattern += "|"; 34 | else first = false; 35 | 36 | pattern += unit.getPattern(); 37 | } 38 | } 39 | return pattern; 40 | } 41 | 42 | public String getPattern() { 43 | return "(?i)" + pattern; 44 | } 45 | 46 | /** 47 | * @return factor based on basic unit (s) 48 | */ 49 | public Float getFactor() { 50 | return factor; 51 | } 52 | } -------------------------------------------------------------------------------- /app/src/main/java/tranquvis/simplesmsremote/Utils/UnitTools/UnitType.java: -------------------------------------------------------------------------------- 1 | package tranquvis.simplesmsremote.Utils.UnitTools; 2 | 3 | public enum UnitType { 4 | TIME 5 | } -------------------------------------------------------------------------------- /app/src/main/res/color/color_state_list_primary.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/baseline_play_circle_outline_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/baseline_play_circle_outline_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_add_circle_indigo_400_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_add_circle_indigo_400_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_add_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_add_white.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_battery_50_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_battery_50_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_bluetooth_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_bluetooth_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_camera_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_camera_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_check_circle_green_400_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_check_circle_green_400_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_check_circle_green_400_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_check_circle_green_400_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_delete_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_delete_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_error_red_400_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_error_red_400_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_folder_grey_700_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_folder_grey_700_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_info_indigo_400_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_info_indigo_400_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_info_outline_grey_700_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_info_outline_grey_700_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_local_phone_grey_700_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_local_phone_grey_700_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_location_on_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_location_on_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_menu_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_menu_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_mic_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_mic_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_more_horiz_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_more_horiz_black_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_more_horiz_grey_700_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_more_horiz_grey_700_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_network_cell_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_network_cell_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_play_arrow_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_play_arrow_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_remove_circle_red_400_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_remove_circle_red_400_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_settings_brightness_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_settings_brightness_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_signal_wifi_2_bar_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_signal_wifi_2_bar_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_stop_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_stop_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_volume_up_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_volume_up_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_wifi_tethering_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/ic_wifi_tethering_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/outline_cancel_black_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-hdpi/outline_cancel_black_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/baseline_play_circle_outline_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/baseline_play_circle_outline_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_add_circle_indigo_400_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_add_circle_indigo_400_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_add_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_add_white.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_battery_50_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_battery_50_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_bluetooth_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_bluetooth_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_camera_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_camera_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_check_circle_green_400_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_check_circle_green_400_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_check_circle_green_400_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_check_circle_green_400_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_delete_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_delete_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_error_red_400_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_error_red_400_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_folder_grey_700_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_folder_grey_700_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_info_indigo_400_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_info_indigo_400_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_info_outline_grey_700_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_info_outline_grey_700_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_local_phone_grey_700_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_local_phone_grey_700_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_location_on_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_location_on_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_menu_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_menu_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_mic_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_mic_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_more_horiz_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_more_horiz_black_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_more_horiz_grey_700_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_more_horiz_grey_700_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_network_cell_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_network_cell_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_play_arrow_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_play_arrow_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_remove_circle_red_400_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_remove_circle_red_400_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_settings_brightness_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_settings_brightness_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_signal_wifi_2_bar_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_signal_wifi_2_bar_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_stop_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_stop_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_volume_up_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_volume_up_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_wifi_tethering_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/ic_wifi_tethering_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/outline_cancel_black_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-mdpi/outline_cancel_black_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/baseline_play_circle_outline_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/baseline_play_circle_outline_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_add_circle_indigo_400_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_add_circle_indigo_400_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_add_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_add_white.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_battery_50_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_battery_50_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_bluetooth_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_bluetooth_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_camera_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_camera_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_check_circle_green_400_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_check_circle_green_400_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_check_circle_green_400_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_check_circle_green_400_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_delete_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_delete_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_error_red_400_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_error_red_400_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_folder_grey_700_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_folder_grey_700_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_info_indigo_400_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_info_indigo_400_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_info_outline_grey_700_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_info_outline_grey_700_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_local_phone_grey_700_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_local_phone_grey_700_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_location_on_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_location_on_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_menu_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_menu_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_mic_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_mic_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_more_horiz_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_more_horiz_black_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_more_horiz_grey_700_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_more_horiz_grey_700_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_network_cell_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_network_cell_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_play_arrow_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_play_arrow_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_remove_circle_red_400_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_remove_circle_red_400_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_settings_brightness_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_settings_brightness_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_signal_wifi_2_bar_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_signal_wifi_2_bar_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_stop_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_stop_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_volume_up_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_volume_up_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_wifi_tethering_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/ic_wifi_tethering_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/outline_cancel_black_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xhdpi/outline_cancel_black_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/baseline_play_circle_outline_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/baseline_play_circle_outline_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_add_circle_indigo_400_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_add_circle_indigo_400_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_add_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_add_white.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_battery_50_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_battery_50_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_bluetooth_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_bluetooth_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_camera_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_camera_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_check_circle_green_400_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_check_circle_green_400_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_check_circle_green_400_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_check_circle_green_400_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_delete_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_delete_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_error_red_400_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_error_red_400_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_folder_grey_700_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_folder_grey_700_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_info_indigo_400_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_info_indigo_400_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_info_outline_grey_700_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_info_outline_grey_700_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_local_phone_grey_700_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_local_phone_grey_700_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_location_on_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_location_on_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_menu_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_menu_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_mic_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_mic_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_more_horiz_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_more_horiz_black_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_more_horiz_grey_700_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_more_horiz_grey_700_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_network_cell_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_network_cell_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_play_arrow_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_play_arrow_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_remove_circle_red_400_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_remove_circle_red_400_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_settings_brightness_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_settings_brightness_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_signal_wifi_2_bar_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_signal_wifi_2_bar_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_stop_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_stop_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_volume_up_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_volume_up_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_wifi_tethering_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/ic_wifi_tethering_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/outline_cancel_black_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxhdpi/outline_cancel_black_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/baseline_play_circle_outline_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/baseline_play_circle_outline_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_add_circle_indigo_400_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_add_circle_indigo_400_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_add_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_add_white.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_battery_50_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_battery_50_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_bluetooth_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_bluetooth_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_camera_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_camera_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_check_circle_green_400_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_check_circle_green_400_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_check_circle_green_400_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_check_circle_green_400_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_delete_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_delete_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_error_red_400_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_error_red_400_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_folder_grey_700_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_folder_grey_700_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_info_indigo_400_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_info_indigo_400_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_info_outline_grey_700_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_info_outline_grey_700_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_local_phone_grey_700_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_local_phone_grey_700_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_location_on_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_location_on_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_menu_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_menu_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_mic_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_mic_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_more_horiz_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_more_horiz_black_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_more_horiz_grey_700_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_more_horiz_grey_700_18dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_network_cell_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_network_cell_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_play_arrow_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_play_arrow_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_remove_circle_red_400_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_remove_circle_red_400_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_settings_brightness_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_settings_brightness_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_signal_wifi_2_bar_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_signal_wifi_2_bar_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_stop_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_stop_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_volume_up_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_volume_up_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_wifi_tethering_grey_700_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/ic_wifi_tethering_grey_700_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/outline_cancel_black_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/drawable-xxxhdpi/outline_cancel_black_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_border_bottom_grey.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_border_top_grey.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_help_frame.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_round_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/button_selector_primary.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/code_box.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_lock_36.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 6 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/list_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_configure_control_module.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 14 | 15 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_help_how_to_control.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_log.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 20 | 21 | 22 | 23 | 24 | 25 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 14 | 15 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 14 | 15 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_test.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/content_log.xml: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 25 | 26 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /app/src/main/res/layout/content_settings.xml: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dropdown_item_phone.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/layout/listview_item_commands.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/listview_item_granted_phones_editable.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 15 | 16 | 25 | 26 | 40 | 41 | -------------------------------------------------------------------------------- /app/src/main/res/layout/listview_item_manage_control_modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 17 | 18 | 31 | 32 | 40 | 41 | -------------------------------------------------------------------------------- /app/src/main/res/layout/spinner_item_camera_device.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_main.xml: -------------------------------------------------------------------------------- 1 | 5 | 10 | 15 | 20 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #CE93D8 4 | #BA68C8 5 | #9C27B0 6 | #8E24AA 7 | #6A1B9A 8 | #EA80FC 9 | #d500f9 10 | #aa00ff 11 | 12 | #3D5AFE 13 | #304FFE 14 | 15 | @color/materialPurple600 16 | @color/materialPurple800 17 | @color/materialPurple300 18 | @color/materialIndigoA400 19 | #616161 20 | 21 | #EF5350 22 | #66BB6A 23 | #5C6BC0 24 | #616161 25 | 26 | #ddd 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10dp 4 | 10dp 5 | 16dp 6 | 16dp 7 | 5dp 8 | 1px 9 | 10 | 5dp 11 | 8dp 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #8E24AA 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/string_arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | auto 5 | on 6 | off 7 | 8 | 9 | 10 | JPEG 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings_audio_types.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ring 4 | music 5 | alarm 6 | notification 7 | system 8 | voicecall 9 | dtmf 10 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings_commands.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | set hotspot state 4 | get hotspot state 5 | 6 | set mobile data state 7 | get mobile data state 8 | 9 | set wifi state 10 | get wifi state 11 | 12 | set bluetooth state 13 | get bluetooth state 14 | 15 | get battery level 16 | get battery status 17 | 18 | get location 19 | 20 | set audio volume 21 | get audio volume 22 | 23 | start audio recording 24 | stop audio recording 25 | 26 | set display brightness 27 | get display brightness 28 | set display off timeout 29 | get display off timeout 30 | turn display off 31 | 32 | take picture 33 | 34 | play sound 35 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings_log.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Failed to execute command (%1$s) 4 | Successfully executed command (%1$s) 5 | Failed to process incoming sms 6 | Sms receiver started 7 | Sms receiver stopped 8 | Failed to start sms receiver after boot 9 | Failed to send command execution reply to sender 10 | Try to send result message to phone (%1$s) 11 | Result message has been sent to phone (%1$s) 12 | 13 | 14 | android permissions denied 15 | 16 | 17 | module (%1$s) is disabled 18 | 19 | 20 | module (%1$s) is phone number dependent 21 | 22 | 23 | phone (%1$s) is not allowed to use the module (%2$s) 24 | 25 | 26 | module (%1$s) is not compatible 27 | 28 | 29 | an unexpected error occurred 30 | 31 | 32 | an unexpected error occurred 33 | 34 | 35 | an unexpected error occurred 36 | 37 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings_notifications.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | sms command received 4 | Failed to start sms receiver 5 | No sms commands can be received at the moment. 6 | Sms Receiver is running 7 | Commands can be sent 8 | Playing sound 9 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings_pref.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Autostart receiver 4 | 5 | Start sms receiver on system startup 6 | 7 | 8 | Commands executed notification 9 | 10 | Show notification after remote commands have been executed 11 | 12 | 13 | Reply to sender with result message 14 | 15 | Send a result message back to sender-phone after commands were executed. 16 | 17 | 18 | Show permanent notification 19 | 20 | Show a permanent notification while the receiver service is running. 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings_result_messages.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | battery level: %1$.0f%% 4 | battery is not charging 5 | battery is charging 6 | 7 | location: %1$s\ndate: %2$s\naccuracy: %3$s 8 | 9 | hotspot is not enabled 10 | hotspot is enabled 11 | 12 | mobile data is not enabled 13 | mobile data is enabled 14 | 15 | wifi is not enabled 16 | wifi is enabled 17 | 18 | bluetooth is not enabled 19 | bluetooth is enabled 20 | 21 | %1$s volume is %2$s (max: %3$s) 22 | 23 | display brightness is %1$.0f%% 24 | (mode %2$s) 25 | display off timeout is %1$s 26 | -------------------------------------------------------------------------------- /app/src/main/res/xml/pref_general.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 14 | 15 | 20 | 21 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | mavenCentral() 7 | google() 8 | } 9 | dependencies { 10 | classpath 'com.android.tools.build:gradle:4.2.2' 11 | classpath 'org.aspectj:aspectjtools:1.8.9' 12 | 13 | // NOTE: Do not place your application dependencies here; they belong 14 | // in the individual module build.gradle files 15 | } 16 | } 17 | 18 | allprojects { 19 | repositories { 20 | jcenter() 21 | mavenCentral() 22 | google() 23 | } 24 | } 25 | 26 | task clean(type: Delete) { 27 | delete rootProject.buildDir 28 | } 29 | -------------------------------------------------------------------------------- /google-play-privacy-policy.md: -------------------------------------------------------------------------------- 1 | # Privacy Policy of Simple Sms Remote 2 | 3 | The collected data is saved on the user's client device only. 4 | No data is sended to a server or any other applications except of SMS messages. 5 | 6 | ## Camera 7 | The application can take pictures. 8 | A Picture is only taken when it is requested through a command message from a granted phone. 9 | The pictures are stored on the client device as long as no one deletes them. 10 | 11 | ## Location 12 | Location is only fetched when it is requested through a command message from a granted phone. 13 | The location is only responded to the phone, which sent the command. -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | # IDE (e.g. Android Studio) users: 3 | # Gradle settings configured through the IDE *will override* 4 | # any settings specified in this file. 5 | # For more details on how to configure your build environment visit 6 | # http://www.gradle.org/docs/current/userguide/build_environment.html 7 | # Specifies the JVM arguments used for the daemon process. 8 | # The setting is particularly useful for tweaking memory settings. 9 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 10 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 11 | # When configured, Gradle will run in incubating parallel mode. 12 | # This option should only be used with decoupled projects. More details, visit 13 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 14 | # org.gradle.parallel=true -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /res/SimpleSmsRemoteLogo.ai: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/res/SimpleSmsRemoteLogo.ai -------------------------------------------------------------------------------- /res/SimpleSmsRemoteLogo_colorful.ai: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/res/SimpleSmsRemoteLogo_colorful.ai -------------------------------------------------------------------------------- /res/SimpleSmsRemote_notification_icon.ai: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/res/SimpleSmsRemote_notification_icon.ai -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':tranquvis.directorypicker' 2 | -------------------------------------------------------------------------------- /tranquvis.directorypicker/app-debug.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tranquvis/SimpleSmsRemote/fdfa1f2d3b8304e572fd15ab2ca264452f10b156/tranquvis.directorypicker/app-debug.aar -------------------------------------------------------------------------------- /tranquvis.directorypicker/build.gradle: -------------------------------------------------------------------------------- 1 | configurations.maybeCreate("default") 2 | artifacts.add("default", file('app-debug.aar')) --------------------------------------------------------------------------------