├── .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 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
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 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
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 extends Service> 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 |
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'))
--------------------------------------------------------------------------------