This is a tool for using Android with open-source mesh radios.
 
 
 
Go to file
James Rich d78bea2365
feat: Show ALERT_APP notifications and override DND (#1515)
* feat: Show alert notifications and override silent mode

This commit adds support for showing alert notifications with high priority and the ability to override silent mode to ensure they are delivered to the user.

The changes include:
- Adding `showAlertNotification` function which overrides silent mode and configures a custom volume, shows a notification with high priority.
- Creating a new notification channel for alerts.
- Adding the alert app port number to the list of remembered data types.
- Modifying `rememberDataPacket` to check for alert app messages and show alert notification.

* Add notification policy access permission and DND override for alerts

This commit adds the `ACCESS_NOTIFICATION_POLICY` permission to the manifest and requests this permission from the user. It also adds a check for notification policy access in the MainActivity, and if it's not granted, shows a rationale dialog.

Additionally, the commit adds a notification override to the `showAlertNotification` function in `MeshServiceNotifications` to temporarily disable DND for alert notifications and restore the original ringer settings afterwards.

* Refactor: Enhance Android Notification and DND Handling

-   **Notification Channel Improvements:**
    -   Added `notificationLightColor` for better customization.
    -   Set `enableLights` and `enableVibration` in the alert channel.
    -   Use `alert.mp3` sound for alert channel.
-   **DND Permission Request:**
    -   Introduced a new permission request flow for Do Not Disturb (DND) access.
    -   Show a rationale dialog before requesting permission.
    -   Persist if rationale was shown to avoid re-prompting.
    - Added a `notificationPolicyAccessLauncher` to handle the permission request result.
-   **Critical Alert Text**
    - Added critical alert text in strings.
    - Used critical alert text if the alert message is empty.
-   **Other Changes**
    - Removed unused imports and constants.
    - Updated snackbar to support action.

* Refactor alert notification logic

- Change `notificationLightColor` to be lazy initialized.
- Update alert notification to use `CATEGORY_ALARM`.
- Use `dataPacket.alert` instead of `dataPacket.text` for alert content.
- Add `alert` property to `DataPacket` to handle alert messages.

* Set notification light color back to blue.

* Request notification permissions on grant

The app now checks for notification policy access after notification permissions are granted.

* make detekt happy

* updates dnd dialog text

* Refactor notification channel creation and critical alerts

- Initialize notification channels on service creation.
- Remove `ACCESS_NOTIFICATION_POLICY` permission.
- Modify the logic for requesting "Do Not Disturb" override permission to align with channel settings.
- Add new string resources for Alerts Channel Settings.
- Update wording for critical alert DND override.
- Update DND override request flow.
- Create notification channels on the service creation using `initChannels`.
- Adjust logic to check for "Do Not Disturb" override permission to align with notification channel settings.
- Ensure notification channels are created only if they do not already exist.

* refactor: Update DnD dialog with instructions for Samsung

- Renamed "Alerts Channel Settings" to "Channel Settings".
- Added Samsung-specific instructions and a link to Samsung's support page for Do Not Disturb mode in the alerts dialog.
- Updated the dialog to display Samsung-specific instructions when on a Samsung device.

* Refactor critical alerts instructions

- Updated the critical alerts instructions to include a link to Samsung's support page directly within the alert dialog.
- Removed the separate "Samsung Instructions" string and incorporated the information into the main instruction text, improving clarity and reducing redundancy.
- Made improvements to the UI.
2025-03-05 07:28:52 -06:00
.github feat: PR screenshot template(#1606) 2025-02-22 14:55:53 -06:00
.idea chore(devex): Update project name and icon (#1601) 2025-02-22 09:17:50 -06:00
app feat: Show ALERT_APP notifications and override DND (#1515) 2025-03-05 07:28:52 -06:00
config/detekt chore: Unused code cleanup (#1612) 2025-02-27 16:18:42 -06:00
design@6d9d5966b7 chore: update design submodule 2024-01-10 05:48:48 -03:00
gradle chore(deps): update com.android.tools.build:gradle to v8.9.0 (#1639) 2025-03-04 14:41:23 -06:00
.gitignore chore(devex): Update project name and icon (#1601) 2025-02-22 09:17:50 -06:00
.gitmodules update submodule names 2022-11-02 14:49:38 -03:00
LICENSE Add license and copyright 2020-03-01 16:39:53 -08:00
README.md chore: update license header 2025-01-02 07:00:51 -03:00
build.gradle feat: Introduce Version Catalog for Dependency Management (#1607) 2025-02-24 18:42:37 -06:00
debugging-android.md add instructions on how to capture logcat logs 2020-03-07 17:19:36 -08:00
gradle.properties refactor: migrate BuildConfig to Gradle build files 2024-01-10 18:52:05 -03:00
gradlew chore(deps): update gradle to v8.13 (#1614) 2025-02-27 16:19:09 -06:00
gradlew.bat chore(deps): update gradle to v8.9 2024-07-13 07:09:41 -03:00
renovate.json Add 'dependencies' label to Renovate PRs 2025-02-15 10:47:22 -06:00
settings.gradle chore(devex): Update project name and icon (#1601) 2025-02-22 09:17:50 -06:00

README.md

Meshtastic-Android

GitHub all releases Android CI Crowdin CLA assistant Fiscal Contributors Vercel

This is a tool for using Android with open-source mesh radios. For more information see our webpage: meshtastic.org. If you are looking for the the device side code, see here.

This project is currently beta testing, if you have questions or feedback please Join our discussion forum. We would love to hear from you!

Get it on F-Droid Get it on IzzyOnDroid Download at https://play.google.com/store/apps/details?id=com.geeksville.mesh]

If you want to join the Play Store testing program go to this URL and opt-in to become a tester. If you encounter any problems or have questions, post in the forum and we'll help.

However, if you must use 'raw' APKs you can get them from our github releases. This is not recommended because if you manually install an APK it will not automatically update.

Translations

You can help translate the app into your native language using Crowdin.

Building the Android App

https://meshtastic.org/docs/development/android/

Copyright 2025, Meshtastic LLC. GPL-3.0 license