├── .gitignore ├── .gitmodules ├── AUTHORS ├── COPYING ├── HACKING ├── Makefile ├── NEWS ├── README ├── build-logic ├── .gitignore ├── build.gradle ├── settings.gradle └── src │ └── main │ └── groovy │ ├── org.projectmaxs.common-conventions.gradle │ └── org.projectmaxs.module-conventions.gradle ├── build ├── .gitignore ├── common.mk ├── lint.xml └── module-makefile ├── documentation ├── .gitignore ├── developer_quickstart.org ├── images ├── introduction.org ├── quickstart.org ├── systemapp.org └── user_faq.org ├── homepage ├── .gitignore ├── Makefile ├── assets.db ├── emacs.el ├── index.org ├── privacy_policy.org └── report_issue.org ├── main ├── .gitignore ├── AUTHORS ├── AndroidManifest.xml ├── Makefile ├── NEWS ├── build-logic ├── build.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ ├── importexportsettings.xml │ │ ├── main.xml │ │ ├── modules.xml │ │ ├── modules_listview_row.xml │ │ └── transports_listview_row.xml │ ├── values-qq │ │ └── strings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ └── advancedsettings.xml └── src │ └── org │ └── projectmaxs │ ├── main │ ├── CommandInformation.java │ ├── MAXSContentProvider.java │ ├── MAXSIntentService.java │ ├── MAXSIntentServiceWithMAXSService.java │ ├── MAXSModuleIntentService.java │ ├── MAXSService.java │ ├── MAXSTransportIntentService.java │ ├── ModuleRegistry.java │ ├── PurgeOldCommandsService.java │ ├── Settings.java │ ├── StatusRegistry.java │ ├── TransportRegistry.java │ ├── activities │ │ ├── AdvancedSettings.java │ │ ├── ImportExportSettings.java │ │ ├── MainActivity.java │ │ └── Modules.java │ ├── database │ │ ├── CommandHelpTable.java │ │ ├── CommandTable.java │ │ ├── MAXSDatabase.java │ │ ├── ModuleRegistryTable.java │ │ ├── StatusTable.java │ │ └── TransportRegistryTable.java │ ├── misc │ │ ├── ComposeHelp.java │ │ ├── MAXSAmbientTemperatureManager.java │ │ ├── MAXSBatteryManager.java │ │ └── StartStopIntentBroadcast.java │ ├── receivers │ │ ├── BootCompletedReceiver.java │ │ └── PackageReceiver.java │ └── util │ │ ├── Constants.java │ │ ├── FileManager.java │ │ └── PermCheck.java │ └── shared │ ├── global │ ├── CrossProcessCursorWrapper.java │ ├── FilereadUtil.java │ ├── GlobalConstants.java │ ├── Message.aidl │ ├── Message.java │ ├── StatusInformation.java │ ├── aidl │ │ ├── IFileReadModuleService.aidl │ │ ├── IFileWriteModuleService.aidl │ │ ├── IMAXSIncomingFileTransferService.aidl │ │ └── IMAXSOutgoingFileTransferService.aidl │ ├── jul │ │ └── JULHandler.java │ ├── messagecontent │ │ ├── AbstractElement.aidl │ │ ├── AbstractElement.java │ │ ├── CommandHelp.aidl │ │ ├── CommandHelp.java │ │ ├── Contact.aidl │ │ ├── Contact.java │ │ ├── ContactNumber.aidl │ │ ├── ContactNumber.java │ │ ├── Element.aidl │ │ ├── Element.java │ │ ├── FormatedText.aidl │ │ ├── FormatedText.java │ │ ├── NewLine.aidl │ │ ├── NewLine.java │ │ ├── Sms.aidl │ │ ├── Sms.java │ │ ├── Text.aidl │ │ └── Text.java │ └── util │ │ ├── ActivityUtil.java │ │ ├── AsyncServiceTask.java │ │ ├── DateTimeUtil.java │ │ ├── DialogUtil.java │ │ ├── FileUtil.java │ │ ├── Log.java │ │ ├── PackageManagerUtil.java │ │ ├── ParcelFileDescriptorUtil.java │ │ ├── ParcelUtil.java │ │ ├── ParcelableUtil.java │ │ ├── PermissionUtil.java │ │ ├── RTool.java │ │ ├── ServiceTask.java │ │ ├── SharedStringUtil.java │ │ ├── SpannedUtil.java │ │ ├── SyncServiceTask.java │ │ └── Unicode.java │ ├── mainmodule │ ├── Command.aidl │ ├── Command.java │ ├── MAXSContentProviderContract.java │ ├── MAXSStatusUtil.java │ ├── MainModuleConstants.java │ ├── ModuleInformation.aidl │ ├── ModuleInformation.java │ ├── RecentContact.java │ └── StatusInformation.aidl │ └── maintransport │ ├── CommandOrigin.aidl │ ├── CommandOrigin.java │ ├── CurrentStatus.java │ ├── TransportConstants.java │ ├── TransportInformation.aidl │ └── TransportInformation.java ├── module-alarmset ├── AUTHORS ├── AndroidManifest.xml ├── NEWS ├── build-logic ├── build.gradle ├── documentation │ └── user_guide.org ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ └── infoandsettings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ └── settings.xml └── src │ └── org │ └── projectmaxs │ ├── .gitignore │ └── module │ └── alarmset │ ├── ModuleReceiver.java │ ├── ModuleService.java │ ├── Settings.java │ ├── activities │ ├── InfoAndSettings.java │ └── Settings.java │ └── commands │ ├── AlarmSet.java │ └── TimerSet.java ├── module-bluetooth ├── AUTHORS ├── AndroidManifest.xml ├── NEWS ├── build-logic ├── build.gradle ├── documentation │ └── user_guide.org ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ └── infoandsettings.xml │ ├── values-qq │ │ └── strings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ └── settings.xml └── src │ └── org │ └── projectmaxs │ ├── .gitignore │ └── module │ └── bluetooth │ ├── ModuleReceiver.java │ ├── ModuleService.java │ ├── Settings.java │ ├── activities │ ├── InfoAndSettings.java │ └── Settings.java │ └── commands │ └── BluetoothStatus.java ├── module-bluetoothadmin ├── AUTHORS ├── AndroidManifest.xml ├── NEWS ├── build-logic ├── build.gradle ├── documentation │ └── user_guide.org ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ └── infoandsettings.xml │ ├── values-qq │ │ └── strings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ └── settings.xml └── src │ └── org │ └── projectmaxs │ ├── .gitignore │ └── module │ └── bluetoothadmin │ ├── ModuleReceiver.java │ ├── ModuleService.java │ ├── Settings.java │ ├── activities │ ├── InfoAndSettings.java │ └── Settings.java │ └── commands │ ├── AbstractBluetoothCommand.java │ ├── BluetoothDisable.java │ └── BluetoothEnable.java ├── module-clipboard ├── AUTHORS ├── AndroidManifest.xml ├── NEWS ├── build-logic ├── build.gradle ├── documentation │ └── user_guide.org ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ └── infoandsettings.xml │ ├── values-qq │ │ └── strings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ └── settings.xml └── src │ └── org │ └── projectmaxs │ ├── .gitignore │ └── module │ └── clipboard │ ├── ModuleReceiver.java │ ├── ModuleService.java │ ├── Settings.java │ ├── activities │ ├── InfoAndSettings.java │ └── Settings.java │ └── commands │ ├── AbstractClipboardCommand.java │ ├── ClipboardGet.java │ └── ClipboardSet.java ├── module-contactsread ├── AUTHORS ├── AndroidManifest.xml ├── NEWS ├── build-logic ├── build.gradle ├── documentation │ └── user_guide.org ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ └── infoandsettings.xml │ ├── values-qq │ │ └── strings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ └── settings.xml └── src │ └── org │ └── projectmaxs │ ├── .gitignore │ └── module │ └── contactsread │ ├── MAXSContactProvider.java │ ├── ModuleReceiver.java │ ├── ModuleService.java │ ├── Settings.java │ ├── activities │ ├── InfoAndSettings.java │ └── Settings.java │ └── commands │ ├── AbstractContactCommand.java │ ├── ContactLookup.java │ ├── ContactMobile.java │ ├── ContactName.java │ ├── ContactNick.java │ └── ContactNum.java ├── module-fileread ├── AUTHORS ├── AndroidManifest.xml ├── NEWS ├── build-logic ├── build.gradle ├── documentation │ └── user_guide.org ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ └── infoandsettings.xml │ ├── values-qq │ │ └── strings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ └── settings.xml └── src │ └── org │ └── projectmaxs │ ├── .gitignore │ └── module │ └── fileread │ ├── FileReadService.java │ ├── MAXSFilereadProvider.java │ ├── ModuleReceiver.java │ ├── ModuleService.java │ ├── SetCWDService.java │ ├── Settings.java │ ├── activities │ ├── InfoAndSettings.java │ └── Settings.java │ └── commands │ ├── AbstractCdCommand.java │ ├── AbstractFilereadCommand.java │ ├── AbstractLsCommand.java │ ├── CdPath.java │ ├── CdTilde.java │ ├── LsPath.java │ ├── LsTilde.java │ └── SendPath.java ├── module-filewrite ├── AUTHORS ├── AndroidManifest.xml ├── NEWS ├── build-logic ├── build.gradle ├── documentation │ └── user_guide.org ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ └── infoandsettings.xml │ ├── values-qq │ │ └── strings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ └── settings.xml └── src │ └── org │ └── projectmaxs │ ├── .gitignore │ └── module │ └── filewrite │ ├── FileManager.java │ ├── FileWriteService.java │ ├── IncomingFileTransferService.java │ ├── ModuleReceiver.java │ ├── ModuleService.java │ ├── Settings.java │ ├── activities │ ├── InfoAndSettings.java │ └── Settings.java │ └── commands │ └── RmPath.java ├── module-locationfine ├── AUTHORS ├── AndroidManifest.xml ├── NEWS ├── build-logic ├── build.gradle ├── documentation │ └── user_guide.org ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ └── infoandsettings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ └── settings.xml └── src │ └── org │ └── projectmaxs │ ├── .gitignore │ └── module │ └── locationfine │ ├── LocationUtil.java │ ├── ModuleReceiver.java │ ├── ModuleService.java │ ├── Settings.java │ ├── activities │ ├── InfoAndSettings.java │ └── Settings.java │ ├── commands │ ├── AbstractLocate.java │ ├── LocateOnce.java │ ├── LocateStart.java │ ├── LocateStop.java │ └── LocationLastKnown.java │ └── service │ ├── LocationService.java │ └── gpsenabler │ ├── GpsEnablerDisabler.java │ └── PowerWidgetFlaw.java ├── module-misc ├── AUTHORS ├── AndroidManifest.xml ├── NEWS ├── build-logic ├── build.gradle ├── documentation │ └── user_guide.org ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ └── infoandsettings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ └── settings.xml └── src │ └── org │ └── projectmaxs │ ├── .gitignore │ └── module │ └── misc │ ├── ModuleReceiver.java │ ├── ModuleService.java │ ├── Settings.java │ ├── activities │ ├── InfoAndSettings.java │ ├── SendIntent.java │ └── Settings.java │ └── commands │ ├── ExceptionThrow.java │ ├── LocationProviders.java │ ├── Ping.java │ ├── RecentcontactShow.java │ ├── SensorList.java │ ├── SysinfoMaxs.java │ └── SysinfoShow.java ├── module-nfc ├── AUTHORS ├── AndroidManifest.xml ├── NEWS ├── build-logic ├── build.gradle ├── documentation │ └── user_guide.org ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ └── infoandsettings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ ├── nfc_tech_filter.xml │ │ └── settings.xml └── src │ └── org │ └── projectmaxs │ ├── .gitignore │ └── module │ └── nfc │ ├── ModuleReceiver.java │ ├── ModuleService.java │ ├── NfcDiscoveredService.java │ ├── Settings.java │ ├── activities │ ├── InfoAndSettings.java │ ├── NfcDiscoveredActivity.java │ └── Settings.java │ ├── commands │ └── NfcStatus.java │ └── tech │ ├── NfcAHandler.java │ └── TechHandler.java ├── module-notification ├── AUTHORS ├── AndroidManifest.xml ├── NEWS ├── build-logic ├── build.gradle ├── documentation │ └── user_guide.org ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ └── infoandsettings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ └── settings.xml └── src │ └── org │ └── projectmaxs │ ├── .gitignore │ └── module │ └── notification │ ├── MAXSNotificationListenerService.java │ ├── ModuleReceiver.java │ ├── ModuleService.java │ ├── Settings.java │ └── activities │ ├── InfoAndSettings.java │ └── Settings.java ├── module-notificationpolicyaccess ├── AUTHORS ├── AndroidManifest.xml ├── NEWS ├── build-logic ├── build.gradle ├── documentation │ └── user_guide.org ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ └── infoandsettings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ └── settings.xml └── src │ └── org │ └── projectmaxs │ ├── .gitignore │ └── module │ └── notificationpolicyaccess │ ├── ModuleReceiver.java │ ├── ModuleService.java │ ├── Settings.java │ ├── activities │ ├── InfoAndSettings.java │ └── Settings.java │ └── commands │ ├── AbstractNotificationInterruptionFilterCommand.java │ ├── AbstractNotificationInterruptionFilterSetCommand.java │ ├── AbstractNotificationManagerCommand.java │ ├── AbstractVolumeSetCommand.java │ ├── NotificationInterruptionFilterAlarms.java │ ├── NotificationInterruptionFilterAll.java │ ├── NotificationInterruptionFilterNone.java │ ├── NotificationInterruptionFilterPriority.java │ ├── NotificationInterruptionFilterShow.java │ ├── NotificationPolicyRequest.java │ ├── NotificationPolicyShow.java │ ├── VolumeSetAlarm.java │ ├── VolumeSetDtmf.java │ ├── VolumeSetMusic.java │ ├── VolumeSetNotification.java │ ├── VolumeSetRing.java │ ├── VolumeSetSystem.java │ └── VolumeSetVoiceCall.java ├── module-phonestatemodify ├── AUTHORS ├── AndroidManifest.xml ├── NEWS ├── build-logic ├── build.gradle ├── documentation │ └── user_guide.org ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ └── infoandsettings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ └── settings.xml └── src │ ├── com │ └── android │ │ └── internal │ │ └── telephony │ │ ├── ITelephony.aidl │ │ ├── PhoneConstants.java │ │ └── RILConstants.java │ └── org │ └── projectmaxs │ ├── .gitignore │ └── module │ └── phonestatemodify │ ├── ModuleReceiver.java │ ├── ModuleService.java │ ├── Settings.java │ ├── activities │ ├── InfoAndSettings.java │ └── Settings.java │ └── commands │ ├── AbstractDataCommand.java │ ├── AbstractPhonestateModifyCommand.java │ ├── AbstractRadioCommand.java │ ├── DataDisable.java │ ├── DataEnable.java │ ├── PhoneReject.java │ ├── PinSupply.java │ ├── RadioOff.java │ └── RadioOn.java ├── module-phonestateread ├── AUTHORS ├── AndroidManifest.xml ├── NEWS ├── build-logic ├── build.gradle ├── documentation │ └── user_guide.org ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ └── infoandsettings.xml │ ├── values-qq │ │ └── strings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ └── settings.xml └── src │ └── org │ └── projectmaxs │ ├── .gitignore │ └── module │ └── phonestateread │ ├── Constants.java │ ├── ModuleReceiver.java │ ├── ModuleService.java │ ├── PhoneStateReadService.java │ ├── PhoneStateService.java │ ├── Settings.java │ ├── StartStopReceiver.java │ └── activities │ ├── InfoAndSettings.java │ └── Settings.java ├── module-ringermode ├── AUTHORS ├── AndroidManifest.xml ├── NEWS ├── build-logic ├── build.gradle ├── documentation │ └── user_guide.org ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ └── infoandsettings.xml │ ├── values-qq │ │ └── strings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ └── settings.xml └── src │ └── org │ └── projectmaxs │ ├── .gitignore │ └── module │ └── ringermode │ ├── ModuleReceiver.java │ ├── ModuleService.java │ ├── Settings.java │ ├── activities │ ├── InfoAndSettings.java │ └── Settings.java │ └── commands │ ├── AbstractRingermodeCommand.java │ ├── RingermodeNormal.java │ ├── RingermodeShow.java │ ├── RingermodeSilent.java │ └── RingermodeVibrate.java ├── module-shell ├── AUTHORS ├── AndroidManifest.xml ├── NEWS ├── build-logic ├── build.gradle ├── documentation │ └── user_guide.org ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ └── infoandsettings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ └── settings.xml └── src │ └── org │ ├── projectmaxs │ ├── .gitignore │ └── module │ │ └── shell │ │ ├── ModuleReceiver.java │ │ ├── ModuleService.java │ │ ├── Settings.java │ │ ├── activities │ │ ├── InfoAndSettings.java │ │ └── Settings.java │ │ └── commands │ │ ├── AbstractShell.java │ │ ├── RootShellExecute.java │ │ └── ShellExecute.java │ └── sufficentlysecure ├── module-smsnotify ├── AUTHORS ├── AndroidManifest.xml ├── NEWS ├── build-logic ├── build.gradle ├── documentation │ └── user_guide.org ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ └── infoandsettings.xml │ ├── values-qq │ │ └── strings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ └── settings.xml └── src │ └── org │ └── projectmaxs │ ├── .gitignore │ └── module │ └── smsnotify │ ├── ModuleReceiver.java │ ├── SMSReceiver.java │ ├── Settings.java │ └── activities │ ├── InfoAndSettings.java │ └── Settings.java ├── module-smsread ├── AUTHORS ├── AndroidManifest.xml ├── NEWS ├── build-logic ├── build.gradle ├── documentation │ └── user_guide.org ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ └── infoandsettings.xml │ ├── values-qq │ │ └── strings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ └── settings.xml └── src │ └── org │ └── projectmaxs │ ├── .gitignore │ └── module │ └── smsread │ ├── ModuleReceiver.java │ ├── ModuleService.java │ ├── Settings.java │ ├── SmsUtil.java │ ├── activities │ ├── InfoAndSettings.java │ └── Settings.java │ └── commands │ └── SmsShow.java ├── module-smssend ├── AUTHORS ├── AndroidManifest.xml ├── NEWS ├── build-logic ├── build.gradle ├── documentation │ └── user_guide.org ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ └── infoandsettings.xml │ ├── values-qq │ │ └── strings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ └── settings.xml └── src │ └── org │ └── projectmaxs │ ├── .gitignore │ └── module │ └── smssend │ ├── ModuleReceiver.java │ ├── ModuleService.java │ ├── PurgeOldCommandsReceiver.java │ ├── SMSPendingIntentReceiver.java │ ├── Settings.java │ ├── activities │ ├── InfoAndSettings.java │ └── Settings.java │ ├── commands │ ├── AbstractSmsSendCommand.java │ ├── ReplyTo.java │ └── SmsSend.java │ └── database │ ├── SMSSendDatabase.java │ └── SMSTable.java ├── module-smswrite ├── AUTHORS ├── AndroidManifest.xml ├── NEWS ├── build-logic ├── build.gradle ├── documentation │ └── user_guide.org ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ └── infoandsettings.xml │ ├── values-qq │ │ └── strings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ └── settings.xml └── src │ └── org │ └── projectmaxs │ ├── .gitignore │ └── module │ └── smswrite │ ├── ModuleReceiver.java │ ├── ModuleService.java │ ├── SMSWriteService.java │ ├── SMSWriteUtil.java │ ├── Settings.java │ ├── activities │ ├── InfoAndSettings.java │ └── Settings.java │ └── commands │ └── SmsWrite.java ├── module-wifiaccess ├── AUTHORS ├── AndroidManifest.xml ├── NEWS ├── build-logic ├── build.gradle ├── documentation │ └── user_guide.org ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ └── infoandsettings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ └── settings.xml └── src │ └── org │ └── projectmaxs │ ├── .gitignore │ └── module │ └── wifiaccess │ ├── ModuleReceiver.java │ ├── ModuleService.java │ ├── Settings.java │ ├── activities │ ├── InfoAndSettings.java │ └── Settings.java │ └── commands │ ├── AbstractWifi.java │ ├── WifiList.java │ └── WifiState.java ├── module-wifichange ├── AUTHORS ├── AndroidManifest.xml ├── NEWS ├── build-logic ├── build.gradle ├── documentation │ └── user_guide.org ├── proguard-project.txt ├── project.properties ├── res │ ├── .gitignore │ ├── layout │ │ └── infoandsettings.xml │ ├── values │ │ ├── nonNLSStrings.xml │ │ └── strings.xml │ └── xml │ │ └── settings.xml └── src │ └── org │ └── projectmaxs │ ├── .gitignore │ └── module │ └── wifichange │ ├── ModuleReceiver.java │ ├── ModuleService.java │ ├── Settings.java │ ├── activities │ ├── InfoAndSettings.java │ └── Settings.java │ └── commands │ ├── AbstractWifi.java │ ├── WifiDisable.java │ └── WifiEnable.java ├── repos ├── .gitignore └── repos.db ├── scripts ├── config.example ├── createNewModule.sh ├── createReleaseAPKs.sh ├── createSymlinks.sh ├── createVersionXML.sh ├── createfdroidmodules.sh ├── functions.sh ├── getAssets.sh ├── installNightlies.sh ├── newRelease.sh ├── proguard.sh ├── publish_projectmaxs_homepage.sh ├── removemodules.sh ├── removephonemodules.sh ├── setTargetSDK.sh ├── setup.sh ├── setupResourceLinks.sh └── syncRepos.sh ├── settings.gradle ├── shared ├── module-gitignore ├── module │ ├── ContactUtil.java │ ├── ILocationFineModuleLocationService.aidl │ ├── IPhoneStateReadModuleService.aidl │ ├── MAXSBroadcastReceiver.java │ ├── MAXSModuleIntentService.java │ ├── MAXSModuleReceiver.java │ ├── MAXSPurgeOldCommandsReceiver.java │ ├── MAXSStatusBroadcastReceiver.java │ ├── MainUtil.java │ ├── ModuleActivitiesUtil.java │ ├── ModuleConstants.java │ ├── RecentContactUtil.java │ ├── SharedLocationUtil.java │ ├── SmsWriteUtil.java │ ├── SubCommand.java │ ├── SupraCommand.java │ ├── UnknownCommandException.java │ ├── UnknownSubcommandException.java │ ├── commands │ │ ├── AbstractLocation.java │ │ └── package-info.java │ └── messagecontent │ │ ├── BooleanElement.java │ │ └── TextElement.java ├── res-global │ ├── values-qq │ │ └── sharedglobalstrings.xml │ └── values │ │ └── sharedglobalstrings.xml ├── res-module │ └── values │ │ └── sharedmodulestrings.xml ├── res-src-global │ ├── Makefile │ └── drawable-mdpi │ │ └── ic_maxs.svg ├── res-transport │ └── values │ │ └── sharedtransportstrings.xml └── transport │ ├── AndroidDozeUtil.java │ ├── MAXSTransportReceiver.java │ ├── MAXSTransportService.java │ └── transform │ ├── FormatedTextTransformator.java │ ├── HumanReadableString.java │ ├── TransformMessageContent.java │ ├── TypeTransformator.java │ └── XML.java └── transport-xmpp ├── .gitignore ├── AUTHORS ├── AndroidManifest.xml ├── Makefile ├── build-logic ├── build.gradle ├── documentation ├── supported_xmpp_features.org └── user_guide.org ├── libs-sources └── .keep_libs_sources ├── libs └── .keep_libs ├── proguard-project.txt ├── project.properties ├── res ├── .gitignore ├── layout │ ├── enter_master_address.xml │ ├── enter_xmpp_credentials.xml │ ├── excludedresources.xml │ ├── infoandsettings.xml │ └── master_address.xml ├── values-qq │ └── strings.xml ├── values │ ├── arrays.xml │ ├── nonNLSStrings.xml │ └── strings.xml └── xml │ └── settings.xml └── src └── org └── projectmaxs ├── .gitignore └── transport └── xmpp ├── Settings.java ├── TransportReceiver.java ├── TransportService.java ├── XmppIntentService.java ├── activities ├── AdvancedSettings.java ├── EditTextWatcher.java ├── EnterMasterAddress.java ├── EnterXmppCredentials.java ├── EntityBareJidTextWatcher.java ├── ExcludedResources.java ├── InfoAndSettings.java └── MasterAddressView.java ├── database ├── MessagesTable.java ├── SendUnackedStanzasTable.java ├── XMPPDatabase.java └── XMPPEntityCapsTable.java ├── receivers └── NetworkConnectivityReceiver.java ├── smack ├── provider │ └── MAXSElementProvider.java └── stanza │ └── MAXSElement.java ├── util ├── ConnectivityManagerUtil.java ├── Constants.java └── XHTMLIMUtil.java └── xmppservice ├── HandleChatPacketListener.java ├── HandleConnectionListener.java ├── HandleMessagesListener.java ├── HandleTransportStatus.java ├── HandleXHTML.java ├── SendStanzaDatabaseHandler.java ├── StateChangeListener.java ├── XMPPBundleAndDefer.java ├── XMPPEntityCapsCache.java ├── XMPPFileTransfer.java ├── XMPPPingManager.java ├── XMPPPrivacyList.java ├── XMPPRoster.java ├── XMPPService.java ├── XMPPSocketFactory.java ├── XMPPStatus.java └── XMPPVersion.java /.gitignore: -------------------------------------------------------------------------------- 1 | /releases/ 2 | /maxs-binary/ 3 | /config 4 | /.idea/ 5 | /.gradle/ 6 | 7 | .d 8 | 9 | lint.xml 10 | lint-results.html 11 | lint-report_files/ 12 | lint-report-full.html 13 | lint-report-full_files/ 14 | 15 | libs-sources/ 16 | 17 | local.properties 18 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "transport-xmpp/libraryProjects/memorizingTrustManager"] 2 | path = transport-xmpp/libraryProjects/memorizingTrustManager 3 | url = https://github.com/Flowdalic/MemorizingTrustManager.git 4 | [submodule "module-shell/libraryProjects/root-commands"] 5 | path = module-shell/libraryProjects/root-commands 6 | url = https://github.com/Flowdalic/root-commands.git 7 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | See AUTHORS in the module directories 2 | -------------------------------------------------------------------------------- /HACKING: -------------------------------------------------------------------------------- 1 | Inital HACKING file 2 | -------------------------------------------------------------------------------- /NEWS: -------------------------------------------------------------------------------- 1 | See NEWS in the module directories 2 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | Project MAXS 2 | ============ 3 | 4 | MAXS (Modular Android XMPP Suite) allows you to control your Android 5 | device (Ringermode, Send SMS, Query contacts, …) and receive 6 | notifications from that device (Incoming SMS, Battery Status, …). 7 | 8 | For more information visit the project's homepage: 9 | http://projectmaxs.org 10 | 11 | Resources 12 | ========= 13 | 14 | - Source: http://projectmaxs.org/source 15 | - Issues: http://projectmaxs.org/issues 16 | - Forums: http://projectmaxs.org/forums 17 | - Docs: http://projectmaxs.org/docs 18 | - CI: http://projectmaxs.org/ci 19 | 20 | Bug reports and feature requests 21 | ================================ 22 | 23 | Please use the offical forum (http://projectmaxs.org/forums) to submit 24 | bug reports and feature requests. New issues in the bug tracker can 25 | only be created by team members. 26 | -------------------------------------------------------------------------------- /build-logic/.gitignore: -------------------------------------------------------------------------------- 1 | /build/ 2 | /.gradle/ 3 | -------------------------------------------------------------------------------- /build-logic/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'groovy-gradle-plugin' 3 | } 4 | 5 | repositories { 6 | google() 7 | gradlePluginPortal() 8 | } 9 | 10 | dependencies { 11 | implementation 'com.android.tools.build:gradle:8.6.1' 12 | } 13 | -------------------------------------------------------------------------------- /build-logic/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = "maxs-build-logic" 2 | -------------------------------------------------------------------------------- /build-logic/src/main/groovy/org.projectmaxs.module-conventions.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'org.projectmaxs.common-conventions' 3 | } 4 | -------------------------------------------------------------------------------- /build/.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle/ 2 | /build/ 3 | /build.gradle 4 | 5 | .classpath 6 | .project 7 | .settings 8 | local.properties 9 | Makefile 10 | bin/ 11 | gen/ 12 | libs/ 13 | build.xml 14 | res-src/ 15 | -------------------------------------------------------------------------------- /build/common.mk: -------------------------------------------------------------------------------- 1 | ifeq ($(CONTRIB), true) 2 | GIT_DIR := $(BASE)/.. 3 | else 4 | GIT_DIR := $(BASE) 5 | endif 6 | 7 | VERSION_XML := res/values/version.xml 8 | GIT_LOG_HEAD := $(GIT_DIR)/.git/logs/HEAD 9 | 10 | GRADLE ?= ./gradlew 11 | 12 | .IGNORE : $(GIT_LOG_HEAD) 13 | 14 | .PHONY: android-studio lintClean 15 | 16 | android-studio: prebuild 17 | 18 | res/values/version.xml: $(GIT_LOG_HEAD) AndroidManifest.xml 19 | $(BASE)/scripts/createVersionXML.sh -c . 20 | 21 | LINT_BINARY := $(ANDROID_HOME)/tools/lint 22 | 23 | lint-results.html: lint.xml $(wildcard src/**/*) $(wildcard res/**/*) 24 | $(GRADLE) lint 25 | cp --reflink=auto build/reports/lint-results-debug.html $@ 26 | 27 | lint.xml: 28 | ln -rs $(BASE)/build/lint.xml 29 | 30 | lintClean: 31 | rm -f lint-results.html 32 | 33 | PHONY: deploy 34 | deploy: $(DEBUG_APK) 35 | adb $(ADB_ARGS) install -g -r $(DEBUG_APK) 36 | 37 | # Symlink the gradle wrapper from all modules and transports to the 38 | # one from MAXS' main component. 39 | .PHONY: gradlew-symlinks 40 | gradlew-symlinks: gradle gradlew gradlew.bat 41 | 42 | gradle gradlew gradlew.bat: 43 | ln -rs $(MAIN)/$@ 44 | -------------------------------------------------------------------------------- /build/lint.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /documentation/.gitignore: -------------------------------------------------------------------------------- 1 | index.org* 2 | main 3 | transport-* 4 | module-* 5 | -------------------------------------------------------------------------------- /documentation/images: -------------------------------------------------------------------------------- 1 | ../repos/maxs-binary/documentation_images -------------------------------------------------------------------------------- /documentation/systemapp.org: -------------------------------------------------------------------------------- 1 | #+TITLE: How-to convert an App to a System App 2 | #+AUTHOR: Florian Schmaus 3 | #+EMAIL: flo@geekplace.eu 4 | #+OPTIONS: author:nil 5 | #+STARTUP: noindent 6 | 7 | Prequisites: 8 | - root access 9 | - =adb= ready to use (i.e., the Android SDK installed) 10 | 11 | 12 | 1. Obtain the =.apk= file of the app you want to make a system app 13 | 2. Push the =.apk= file to the device: =adb push my-app.apk /sdcard/= 14 | 3. Mount =/system/= read-write 15 | 16 | #+BEGIN_SRC 17 | adb shell 18 | su 19 | mount -o rw,remount /system 20 | #+END_SRC 21 | 22 | 4. Place the =.apk= file in the correct directory. This is =/system/app/= for Android 4.2 and lower, and =/system/priv-app/= for Android 4.3 and higher. The further steps will asume we are on Android 4.4 and therefore use =priv-app= 23 | 24 | #+BEGIN_SRC 25 | adb shell 26 | su 27 | cd /sdcard 28 | mv my-app.apk /system/priv-app 29 | chmod 644 /system/priv-app/my-app.apk 30 | #+END_SRC 31 | 32 | 5. Reboot the device: =adb reboot= 33 | -------------------------------------------------------------------------------- /documentation/user_faq.org: -------------------------------------------------------------------------------- 1 | #+TITLE: MAXS User FAQ 2 | #+AUTHOR: Florian Schmaus 3 | #+EMAIL: flo@geekplace.eu 4 | #+OPTIONS: H:2 num:nil author:nil 5 | #+OPTIONS: timestamp:nil 6 | #+STARTUP: noindent 7 | 8 | * MAXS main does not show any modules or transport, although they are installed 9 | 10 | Try to re-install the modules and transports. This seems to be caused 11 | by Android accepting permissions only if an App defining this 12 | permission is already installed. 13 | 14 | * MAXS does take a long time (~minutes) to react on a command 15 | 16 | In order to save energy, Android devices enter a sleep mode after some 17 | idle time. If a device is in this mode, the processing of commands may 18 | be delayed a bit. We could prevent that with MAXS, but the effects on battery 19 | lifetime would likely be catastrophic. 20 | 21 | -------------------------------------------------------------------------------- /homepage/.gitignore: -------------------------------------------------------------------------------- 1 | org-info.js* 2 | zenburn.min.css* 3 | favicon.png 4 | maxs.png -------------------------------------------------------------------------------- /homepage/Makefile: -------------------------------------------------------------------------------- 1 | MAXS_SVG := ../main/res-src/drawable-mdpi/ic_maxs.svg 2 | 3 | .PHONEY: all assets images maxs-binary publish symlinks 4 | 5 | all: publish 6 | 7 | publish: assets images symlinks maxs-binary 8 | ../scripts/publish_projectmaxs_homepage.sh 9 | 10 | assets: 11 | ../scripts/getAssets.sh -f assets.db 12 | 13 | images: maxs.png favicon.png 14 | 15 | maxs-binary: 16 | ../scripts/syncRepos.sh -r $@ 17 | $(MAKE) -C ../documentation/images 18 | 19 | symlinks: 20 | ../scripts/createSymlinks.sh 21 | 22 | maxs.png: $(MAXS_SVG) 23 | convert -background none $< $@ 24 | 25 | favicon.png: $(MAXS_SVG) 26 | convert -background none -resize 32x32 $< $@ 27 | 28 | -------------------------------------------------------------------------------- /homepage/assets.db: -------------------------------------------------------------------------------- 1 | https://gitlab.com/Flow/zenburn-for-org-css/raw/f33fb66e2f5c5c44da089df268d06b9228060f0e/css/zenburn.min.css;.;430393a558c1b0cc6d82a10a5a772eb3b50330fa55004c96031aef31acf1d089 2 | https://orgmode.org/worg/code/org-info-js/org-info.js;.;b2df11fc26bb5aac8e15790f75e424658c3b0dd2cc32c65a59d87eb9602830d4 3 | -------------------------------------------------------------------------------- /main/.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle/ 2 | /build/ 3 | /build.gradle 4 | /keystore.properties 5 | /.idea/ 6 | /*.iml 7 | 8 | .classpath 9 | .project 10 | .settings 11 | local.properties 12 | Makefile 13 | bin/ 14 | gen/ 15 | libs/ 16 | build.xml 17 | res-src/ 18 | -------------------------------------------------------------------------------- /main/AUTHORS: -------------------------------------------------------------------------------- 1 | Florian Schmaus 2 | -------------------------------------------------------------------------------- /main/Makefile: -------------------------------------------------------------------------------- 1 | BASE := $(shell readlink -f ../) 2 | 3 | DEBUG_APK := build/outputs/apk/debug/main-debug.apk 4 | 5 | BUILD_TARGET ?= debug 6 | 7 | .PHONY: all clean distclean prebuild release resources setupResourceLinks $(DEBUG_APK) 8 | 9 | all: main 10 | 11 | include $(BASE)/build/common.mk 12 | 13 | # Android lint needs to be run *after* the project has been build 14 | main: prebuild 15 | # Ugly hack to capitalize first letter included. See https://stackoverflow.com/a/50114483/194894 16 | $(GRADLE) $(GRADLE_EXTRA_ARGS) assemble$(shell BUILD_TARGET=$(BUILD_TARGET); echo $${BUILD_TARGET^}) 17 | 18 | prebuild: lint.xml resources $(VERSION_XML) 19 | 20 | resources: setupResourceLinks 21 | cd res-src && $(MAKE) 22 | 23 | release: 24 | make main BUILD_TARGET=release 25 | 26 | $(DEBUG_APK): 27 | $(MAKE) main BUILD_TARGET=debug 28 | 29 | setupResourceLinks: 30 | $(BASE)/scripts/setupResourceLinks.sh -c $(CURDIR) 31 | 32 | clean: 33 | $(GRADLE) clean 34 | 35 | distclean: clean lintClean 36 | [ ! -f res-src/Makefile ] || cd res-src && $(MAKE) clean 37 | rm -f $(VERSION_XML) 38 | -------------------------------------------------------------------------------- /main/NEWS: -------------------------------------------------------------------------------- 1 | Waiting for public release 2 | -------------------------------------------------------------------------------- /main/build-logic: -------------------------------------------------------------------------------- 1 | ../build/build-logic -------------------------------------------------------------------------------- /main/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'org.projectmaxs.common-conventions' 3 | } 4 | 5 | android { 6 | namespace "org.projectmaxs.main" 7 | } 8 | -------------------------------------------------------------------------------- /main/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ProjectMAXS/maxs/7663bb8af7a55cac93c724cd7e41e649f8972b55/main/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /main/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /main/proguard-project.txt: -------------------------------------------------------------------------------- 1 | # To enable ProGuard in your project, edit project.properties 2 | # to define the proguard.config property as described in that file. 3 | # 4 | # Add project specific ProGuard rules here. 5 | # By default, the flags in this file are appended to flags specified 6 | # in ${sdk.dir}/tools/proguard/proguard-android.txt 7 | # You can edit the include path and order by changing the ProGuard 8 | # include property in project.properties. 9 | # 10 | # For more details, see 11 | # http://developer.android.com/guide/developing/tools/proguard.html 12 | 13 | # Add any project specific keep options here: 14 | 15 | # If your project uses WebView with JS, uncomment the following 16 | # and specify the fully qualified class name to the JavaScript interface 17 | # class: 18 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 19 | # public *; 20 | #} 21 | -------------------------------------------------------------------------------- /main/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system edit 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | # 10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 12 | 13 | # Project target. 14 | target=android-23 15 | -------------------------------------------------------------------------------- /main/res/.gitignore: -------------------------------------------------------------------------------- 1 | values/shared*.xml 2 | drawable-mdpi/ 3 | values-*/ 4 | values/version.xml 5 | -------------------------------------------------------------------------------- /main/res/layout/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /main/res/layout/modules_listview_row.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /main/res/values/nonNLSStrings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | MAXS Main 4 | DEBUG_LOG 5 | CONNECT_ON_MAIN_SCREEN 6 | CONNECT_ON_BOOT_COMPLETED 7 | -------------------------------------------------------------------------------- /main/src/org/projectmaxs/shared/global/Message.aidl: -------------------------------------------------------------------------------- 1 | package org.projectmaxs.shared.global; 2 | 3 | parcelable Message; -------------------------------------------------------------------------------- /main/src/org/projectmaxs/shared/global/aidl/IFileReadModuleService.aidl: -------------------------------------------------------------------------------- 1 | package org.projectmaxs.shared.global.aidl; 2 | 3 | interface IFileReadModuleService { 4 | 5 | byte[] readFileBytes(String file); 6 | boolean isFile(String file); 7 | 8 | } 9 | -------------------------------------------------------------------------------- /main/src/org/projectmaxs/shared/global/aidl/IFileWriteModuleService.aidl: -------------------------------------------------------------------------------- 1 | package org.projectmaxs.shared.global.aidl; 2 | 3 | interface IFileWriteModuleService { 4 | 5 | String writeFileBytes(String file, in byte[] bytes); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /main/src/org/projectmaxs/shared/global/aidl/IMAXSIncomingFileTransferService.aidl: -------------------------------------------------------------------------------- 1 | package org.projectmaxs.shared.global.aidl; 2 | 3 | interface IMAXSIncomingFileTransferService { 4 | 5 | ParcelFileDescriptor incomingFileTransfer(String filename, long size, String description); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /main/src/org/projectmaxs/shared/global/aidl/IMAXSOutgoingFileTransferService.aidl: -------------------------------------------------------------------------------- 1 | package org.projectmaxs.shared.global.aidl; 2 | 3 | interface IMAXSOutgoingFileTransferService { 4 | 5 | ParcelFileDescriptor outgoingFileTransfer(String filename, long size, String description, String toJID); 6 | 7 | } 8 | 9 | -------------------------------------------------------------------------------- /main/src/org/projectmaxs/shared/global/messagecontent/AbstractElement.aidl: -------------------------------------------------------------------------------- 1 | package org.projectmaxs.shared.global.messagecontent; 2 | 3 | parcelable AbstractElement; -------------------------------------------------------------------------------- /main/src/org/projectmaxs/shared/global/messagecontent/CommandHelp.aidl: -------------------------------------------------------------------------------- 1 | package org.projectmaxs.shared.global.messagecontent; 2 | 3 | parcelable CommandHelp; -------------------------------------------------------------------------------- /main/src/org/projectmaxs/shared/global/messagecontent/Contact.aidl: -------------------------------------------------------------------------------- 1 | package org.projectmaxs.shared.global.messagecontent; 2 | 3 | parcelable Contact; -------------------------------------------------------------------------------- /main/src/org/projectmaxs/shared/global/messagecontent/ContactNumber.aidl: -------------------------------------------------------------------------------- 1 | package org.projectmaxs.shared.global.messagecontent; 2 | 3 | parcelable ContactNumber; -------------------------------------------------------------------------------- /main/src/org/projectmaxs/shared/global/messagecontent/Element.aidl: -------------------------------------------------------------------------------- 1 | package org.projectmaxs.shared.global.messagecontent; 2 | 3 | parcelable Element; -------------------------------------------------------------------------------- /main/src/org/projectmaxs/shared/global/messagecontent/FormatedText.aidl: -------------------------------------------------------------------------------- 1 | package org.projectmaxs.shared.global.messagecontent; 2 | 3 | parcelable FormatedText; -------------------------------------------------------------------------------- /main/src/org/projectmaxs/shared/global/messagecontent/NewLine.aidl: -------------------------------------------------------------------------------- 1 | package org.projectmaxs.shared.global.messagecontent; 2 | 3 | parcelable NewLine; -------------------------------------------------------------------------------- /main/src/org/projectmaxs/shared/global/messagecontent/Sms.aidl: -------------------------------------------------------------------------------- 1 | package org.projectmaxs.shared.global.messagecontent; 2 | 3 | parcelable Sms; -------------------------------------------------------------------------------- /main/src/org/projectmaxs/shared/global/messagecontent/Text.aidl: -------------------------------------------------------------------------------- 1 | package org.projectmaxs.shared.global.messagecontent; 2 | 3 | parcelable Text; -------------------------------------------------------------------------------- /main/src/org/projectmaxs/shared/global/util/ParcelUtil.java: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Project MAXS. 3 | 4 | MAXS and its modules is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | MAXS is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with MAXS. If not, see . 16 | */ 17 | 18 | package org.projectmaxs.shared.global.util; 19 | 20 | import android.os.Parcel; 21 | 22 | public class ParcelUtil { 23 | 24 | public static boolean readBool(Parcel in) { 25 | return in.readByte() != 0; 26 | } 27 | 28 | public static void writeBool(Parcel dest, boolean bool) { 29 | dest.writeByte((byte) (bool ? 1 : 0)); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /main/src/org/projectmaxs/shared/global/util/Unicode.java: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Project MAXS. 3 | 4 | MAXS and its modules is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | MAXS is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with MAXS. If not, see . 16 | */ 17 | 18 | package org.projectmaxs.shared.global.util; 19 | 20 | public class Unicode { 21 | 22 | public static final String BATTERY = "\uD83D\uDD0B"; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /main/src/org/projectmaxs/shared/mainmodule/Command.aidl: -------------------------------------------------------------------------------- 1 | package org.projectmaxs.shared.mainmodule; 2 | 3 | parcelable Command; -------------------------------------------------------------------------------- /main/src/org/projectmaxs/shared/mainmodule/ModuleInformation.aidl: -------------------------------------------------------------------------------- 1 | package org.projectmaxs.shared.mainmodule; 2 | 3 | parcelable ModuleInformation; 4 | parcelable ModuleInformation.Command; 5 | -------------------------------------------------------------------------------- /main/src/org/projectmaxs/shared/mainmodule/StatusInformation.aidl: -------------------------------------------------------------------------------- 1 | package org.projectmaxs.shared.mainmodule; 2 | 3 | parcelable StatusInformation; 4 | -------------------------------------------------------------------------------- /main/src/org/projectmaxs/shared/maintransport/CommandOrigin.aidl: -------------------------------------------------------------------------------- 1 | package org.projectmaxs.shared.maintransport; 2 | 3 | parcelable CommandOrigin; -------------------------------------------------------------------------------- /main/src/org/projectmaxs/shared/maintransport/TransportInformation.aidl: -------------------------------------------------------------------------------- 1 | package org.projectmaxs.shared.maintransport; 2 | 3 | parcelable TransportInformation; 4 | parcelable TransportInformation.TransportComponent; 5 | 6 | -------------------------------------------------------------------------------- /module-alarmset/AUTHORS: -------------------------------------------------------------------------------- 1 | Florian Schmaus 2 | -------------------------------------------------------------------------------- /module-alarmset/NEWS: -------------------------------------------------------------------------------- 1 | Waiting for public release 2 | -------------------------------------------------------------------------------- /module-alarmset/build-logic: -------------------------------------------------------------------------------- 1 | ../build/build-logic -------------------------------------------------------------------------------- /module-alarmset/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'org.projectmaxs.module-conventions' 3 | } 4 | 5 | android { 6 | namespace 'org.projectmaxs.module.alarmset' 7 | } 8 | -------------------------------------------------------------------------------- /module-alarmset/proguard-project.txt: -------------------------------------------------------------------------------- 1 | # To enable ProGuard in your project, edit project.properties 2 | # to define the proguard.config property as described in that file. 3 | # 4 | # Add project specific ProGuard rules here. 5 | # By default, the flags in this file are appended to flags specified 6 | # in ${sdk.dir}/tools/proguard/proguard-android.txt 7 | # You can edit the include path and order by changing the ProGuard 8 | # include property in project.properties. 9 | # 10 | # For more details, see 11 | # http://developer.android.com/guide/developing/tools/proguard.html 12 | 13 | # Add any project specific keep options here: 14 | 15 | # If your project uses WebView with JS, uncomment the following 16 | # and specify the fully qualified class name to the JavaScript interface 17 | # class: 18 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 19 | # public *; 20 | #} 21 | -------------------------------------------------------------------------------- /module-alarmset/project.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system edit 7 | # "ant.properties", and override values to adapt the script to your 8 | # project structure. 9 | # 10 | # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): 11 | #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 12 | 13 | # Project target. 14 | target=android-23 15 | -------------------------------------------------------------------------------- /module-alarmset/res/.gitignore: -------------------------------------------------------------------------------- 1 | values/shared*.xml 2 | drawable-mdpi/ 3 | values-* 4 | values/version.xml 5 | 6 | -------------------------------------------------------------------------------- /module-alarmset/res/layout/infoandsettings.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 |