In Android, using Google Maps API v2 Intent, is it possible return to my app after the user arrives at his destination using navigation?
Thanks!
Not sure why you would want to do that. But one possible solution could be:
Get location updates in background using some Service.
Use GeoFencing.
As soon as you detect you are at your destination using GeoFencing, either a) You launch your Activity from the Service (which is not a good UX at all as the user will be disrupted from his Maps experience), or b) You show a notification to the user and user can launch your app from that.
Beware that starting Android O, the frequency of location updates you get while on background is very limited. One possible solution would be to know how long it will take the user to reach the destination and plan your location updates accordingly.
Related
I want to get location update few times an hour from android device.
I think the following paragraph implies I can achieve what I want..
https://developer.android.com/about/versions/oreo/background-location-limits#tuning-behavior
Consider whether your app's use cases for running in the background
cannot succeed at all if your app receives infrequent location
updates. If this is the case, you can retrieve location updates more
frequently by performing one of the following actions:
Bring your app to the foreground
I understand it as app can receive infrequent location updates without bring your app to the foreground (is my english bad ? :()
Google Map does track where you go without notifying you that "it is tracking you" when the map app is in the background , even when it's killed.
How can I achieve that ?
I've looked at
https://github.com/mauron85/react-native-background-geolocation.
https://github.com/transistorsoft/react-native-background-geolocation
and there seems to no way to not display the notification.
How can I achieve what google Map does?
tracking device location without showing the notification?
Is google having an unfair advantage at this?
Note: I haven't coded anything but looking for a structure/keywords or ideas how it can be achieved.
Use Case:
I have an activity which basically shows some display/data/or does some operation etc when opened manually from button click, notification click etc. Now I want to display the same stuff when a particular condition is satisfied [like my geo location matches that I force to be my home or user home].
1. without user clicking any notification,
2. without opening the activity,
3. without clicking buttons, and
4. without opening the app.
So in short, I want my app to be launched when I am home or reach a geo fence, is it achievable?
I am aware of Pending Intents, but seems they need the activity to be opened once and register the intent, let me know if this is the only way to go.
Kindly help!
when a particular condition is satisfied
This is not possible in general. For example, Android has nothing built-in with the ability to do something automatically based upon when your neighbor's cousin's daughter posts something on Stack Overflow. Even though that is a particular condition that could be satisfied, Android does not know your neighbor, nor your neighbor's relatives, nor the neighbor's cousin's children, nor the online actions of your neighbor's cousin's daughter.
There are specific things that Android can handle that offer the ability to give you control for related conditions, such as AlarmManager for getting control at certain points in time, or JobScheduler for getting control periodically when the environment is proper (e.g., we have connectivity and are on a charger).
Your question uses a geofence as an example. The Play Services SDK offers geofence APIs that you can use, that can give you control when the user enters a particular region.
I want my app to be launched when I am home or reach a geo fence, is it achievable?
You are welcome to call those geofence APIs, providing a PendingIntent that points to a WakefulBroadcastReceiver, which in turn points to an IntentService, where you can go do something.
If by "my app is launched", you mean bring up one of your activities, while that is technically possible using an activity PendingIntent, you may make your users very unhappy for interrupting what they are doing (e.g., collecting Pokémon). Please consider using a Notification instead.
I am aware of Pending Intents, but seems they need the activity to be opened once and register the intent
Nothing of your app will ever run until the user manually runs your app (e.g., taps on your home screen launcher icon) or until something else uses an explicit Intent to start one of your components. At that point, you can call the geofence APIs, assuming that you somehow know where the user's home is.
Most likely, you need the user to spend time in the activity simply to collect the data from the user about where they want the geofences to be established.
I am developing an android application which captures the location of every turn the user made while navigating from a source to a destination. My application would launch gmaps automatically and will run in the background, until the user has completed navigation. I would like to know what broadcasts gmaps would be sending to the android system during navigation?
For example, during navigation we would be getting voice instructions such as "in 100ft turn left etc". This happens with the help of some broadcasts. I would like to utilize them.
Also, please guide me if what my thinking is wrong and is there any other easy way to find out the turns. Kindly, note that my application requires to know about the location of turns at least a 100ft before the actual turn but not after the turn.
Please note that I am not interested in using gmaps API as they have a service charge beyond certain threshold and I am trying to build a free application.
Thanks.
I am opening google maps application from my app using implicit intent for navigation.
I want to know that if there is a way to send back a flag to my application from google maps when destination is reached.
How to get a callback from google maps in Android application, when navigation is complete
I did get an answer on this from above question but again its by checking onLocationChanged function that I do not want to use. Reason I think for that is that I will duplicating most of the task that is already being done by google maps resulting in consuming more battery and resources.
Is there any action called at destination reached which I can implement in my app to initiate an activity or any other way to get a flag back to my app..?
Thanks in advance! :)
You can create a geofence and add it to location services. It will notify you (callback) when a user enters or exits in a particular geofence.
Geofencing combines awareness of the user's current location with awareness of the user's proximity to locations that may be of interest. To mark a location of interest, you specify its latitude and longitude.
Try to read this documentation: Creating and Monitoring Geofences
I am building an Android app that needs to run in the background and act when user uses Google map. Specifically, when use sets a a direction and navigation starts, I want to retrieve the target address and act on it.
The question: is it possible for third party app to retrieve the target address?
I was thinking that this can be done by retrieving the list of markers as discussed here.
Is this the right approach?
An secondary issue will be if there is way to have an intent that can wake up my app when the navigation starts.
I reckon quite simply the intents launched by Google Maps are not exposed to other applications (or in other words, when you create a nagivation task in Google Maps, there's no actual callback launched that can be hooked to by another app.)
However, assuming the navigation task will create a notification, you could perhaps abuse that notification and it's content to recognize navigation is currently running.
Though more importantly, what's the functionality you aim at with this? Likely you'd be better off implementing the Maps-API in your own app and handling everything from there.