kylecorry31 / Trail-Sense

An Android app that uses your phone's sensors to assist with wilderness treks or survival situations.
https://kylecorry.com/Trail-Sense/
MIT License
1.15k stars 72 forks source link

Plugins #1540

Open kylecorry31 opened 1 year ago

kylecorry31 commented 1 year ago

These would all be standalone apps, optional app download that requires Trail Sense be installed. The provider plugins can probably be merged into a single package. The goal of the standalone apps would be to provide functionality that Trail Sense itself can't do - things like Internet, texting, and packaging large amounts of data (to keep Trail Sense's core APK size small). All plugins can be accessed from within Trail Sense (not sure how exactly - maybe they'll start a new activity or communicate via Intents - more research is needed)

Some may show up as additional tools rather than extending existing tools. Not sure if they could be opened in TS (maybe the UI lives in TS and communication is done via services).

Research Google Play policies on cross app communication where different permissions are allowed.

Potential plugins

Providers

Adds additional data sources to tools in Trail Sense, can use the Internet.

Comms

Local communication can happen via bluetooth, wifi direct, audio?, or QR (may be part of TS itself). There will be the ability to add and connect to trusted devices.

Health

Experiments / research

michaelblyons commented 1 year ago

Sync a common packing list with file share? πŸ˜…

kylecorry31 commented 1 year ago

@michaelblyons can you clarify what you mean?

Do you mean just the ability to import/export a packing list? In that case, that is something I could implement without a plugin - and then the plugin could be used to share the exported file while offline

michaelblyons commented 1 year ago

That's pretty close. I think I saw that you're planning export/import to CSV for packing lists. The file could be synced with Bluetooth, yes.

I coordinate with my partner: "Did we already pack enough X?" to prepare a vehicle for 1-day, 3-day, or 7-day trips together. When we get there and set up, every adult manages their own list for excursions, which is more like the normal packing list behavior. If TS is not the right tool for shared packing, we can surely find something else.

If people use packing lists to track stocks of consumables on distance hikes as well, having a merge algorithm for intelligent incr/decr might be helpful. But I am not personally doing that in the backcountry.

kylecorry31 commented 1 year ago

Thanks! I'll consider adding that along with the offline file share plugin

kylecorry31 commented 8 months ago

More ideas for the comms plugin (shared navigation): https://github.com/kylecorry31/Trail-Sense/issues/1911#issuecomment-1851705781

MikaelaLovett commented 5 months ago

That walkie-talkie feature would be so useful for me πŸ™ˆ Sorry for "spamming" with comments, but I found your app yesterday and I'm very excited about it, haha

I'm disabled and we use Zello with my dad (when I need help getting out of the shower, can't get up, my heart rate is too high etc.) and he can't hear me through the closed door. But Zello is WiFi only, so if the internet goes out (happens frequently) he needs to pick up my call first without hearing my message immediately and he can miss it if his phone's on mute (media sound is always on) ✨ Edit: I also struggle to talk loudly or at all in certain situations due to trauma, so that'd be great during medical emergencies or even when we're out and about geocaching πŸ—ΊοΈ

kylecorry31 commented 5 months ago

That walkie-talkie feature would be so useful for me πŸ™ˆ Sorry for "spamming" with comments, but I found your app yesterday and I'm very excited about it, haha

I'm disabled and we use Zello with my dad (when I need help getting out of the shower, can't get up, my heart rate is too high etc.) and he can't hear me through the closed door. But Zello is WiFi only, so if the internet goes out (happens frequently) he needs to pick up my call first without hearing my message immediately and he can miss it if his phone's on mute (media sound is always on) ✨ Edit: I also struggle to talk loudly or at all in certain situations due to trauma, so that'd be great during medical emergencies or even when we're out and about geocaching πŸ—ΊοΈ

I'll have to take a look at Zello - my hope is that the walkie talkie will support both wifi (direct connection) and bluetooth (maybe even at the same time, using whichever has the best signal). It could even have the option of sending a message and having it read out load on the receiving device (using text to speech).

MikaelaLovett commented 5 months ago

That walkie-talkie feature would be so useful for me πŸ™ˆ Sorry for "spamming" with comments, but I found your app yesterday and I'm very excited about it, haha

I'm disabled and we use Zello with my dad (when I need help getting out of the shower, can't get up, my heart rate is too high etc.) and he can't hear me through the closed door. But Zello is WiFi only, so if the internet goes out (happens frequently) he needs to pick up my call first without hearing my message immediately and he can miss it if his phone's on mute (media sound is always on) ✨ Edit: I also struggle to talk loudly or at all in certain situations due to trauma, so that'd be great during medical emergencies or even when we're out and about geocaching πŸ—ΊοΈ

I'll have to take a look at Zello - my hope is that the walkie talkie will support both wifi (direct connection) and bluetooth (maybe even at the same time, using whichever has the best signal). It could even have the option of sending a message and having it read out load on the receiving device (using text to speech).

Oh my, thank you for considering it, the text to speech feature would be life changing! πŸ’—

kylecorry31 commented 3 months ago

Initial experimentation with the comms plugin can be found here (extremely work in progress - basically an experimentation project at this point): https://github.com/kylecorry31/Trail-Sense-Comms

Still have not determined what the plugin architecture will look like / what is allowed on Google Play Store

MikaelaLovett commented 3 months ago

Initial experimentation with the comms plugin can be found here (extremely work in progress - basically an experimentation project at this point): https://github.com/kylecorry31/Trail-Sense-Comms

Still have not determined what the plugin architecture will look like / what is allowed on Google Play Store

Thank you for working on it! πŸ€

kylecorry31 commented 3 months ago

Possible architecture:

image

Under this model, the tool would live in Trail Sense and the comms plugin just adds the ability to talk with nearby devices.

Example flow of the walkie talkie:

  1. User installs comms plugin, "Local Talk" tool shows up in TS
  2. User opens the tool and is prompted to connect to a device
  3. User clicks connect button which launches the comms plugin activity to select a device
  4. The comms plugin requests bluetooth permission
  5. User selects the device they want to connect to and a foreground service is started
  6. User is returned to Trail Sense where they interact with the tool - TS uses AIDL to communicate with the comms plugin
  7. User stops communication -> TS uses AIDL to stop the comms plugin
  8. User returns to app and selects an existing connection -> TS starts comms activity with pre-selected device -> process repeats

This will also allow other tools to leverage the plugin, such as the ability to see nearby devices on the navigation/photo map tools or to send notes/files.

leavenode commented 1 month ago

METAR/TAF functionality would be useful as far as weather plugins go. Perhaps the ability to translate raw data as well? How about a database of all known airports? A METAR/TAF widget perhaps?

kylecorry31 commented 1 month ago

METAR/TAF functionality would be useful as far as weather plugins go. Perhaps the ability to translate raw data as well? How about a database of all known airports? A METAR/TAF widget perhaps?

Thank you for the suggestion, I will consider that as part of the Provider plugin