Как запустить приложение Google Maps в фоновом режиме из моего приложения

Прежде всего, я использую Xamarin для Android, поэтому есть небольшие различия в синтаксисе для Android Java. Я запускаю приложение Google Maps из активности в своем собственном приложении для Android. Я выяснил, как запустить его по очереди в режиме поворота, давая направление голосовой навигации, пропуская обычную активность, на которую он обычно по умолчанию. Однако активность карты по умолчанию возникает очень кратко, прежде чем переходить в свою очередь по очереди. Я могу жить с этим.

Задача состоит в том, что пользователю нужно несколько раз щелкнуть кнопку "Назад", чтобы вернуться в мое приложение, а не один раз, когда оно идет от поворота к повороту, прямо обратно в мое приложение, и это то, что я бы предпочел. Я знаю, почему это так и естественно. Есть ли способ для моего приложения запустить карту в режиме голосовой навигации, но запустить ее в фоновом режиме, сохраняя мое приложение на переднем плане?

Я видел, что если я использую свою кнопку "назад", чтобы вернуться в мое приложение, то очередь поворота по очереди прекратится. Если я использую значок окна на дне телефона, чтобы увидеть все мои последние приложения и перенести мой на передний план после запуска приложения карт, направления голоса продолжают работать, и это то, что я хочу, и даже дает мне наложения уведомлений поверх моих приложение, которое отлично. Я не хочу, чтобы пользователь должен был использовать этот значок Windows, когда он хочет перенести мое приложение на передний план, и я не хочу, чтобы он использовал кнопку "Назад", потому что он остановит направление голоса. Так что это крутое место, и я не удивлюсь, если это всего лишь одно из тех поведений с поведением в телефоне, с которыми вам нужно жить, но я надеюсь, что кто-нибудь может предложить какие-либо предложения. Может быть, даже сделать его частью приложения для фрагментов? Но могли бы я просто получить их карты с этим, или я получу полную функцию голосовых указаний? Я думал, что могу получить это только из своего установленного приложения, а не из их библиотеки. Спасибо за прочтение.

Здесь мой текущий код

public void StartNavigation(string lat, string lng)
{
    String strUri = "google.navigation:q=" + lat + "," + lng;
    Intent Intent = new Intent(Android.Content.Intent.ActionView, Android.Net.Uri.Parse(strUri));
    //Intent.SetClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
    Intent.SetPackage("com.google.android.apps.maps");
    Application.Context.StartActivity(Intent);
}

Ответ 1

Возможно, вы можете решить это, используя флаги Intent, чтобы изменить режим запуска Google Maps Activity.

Попробуйте использовать флаг FLAG_ACTIVITY_NEW_TASK. например:

String strUri = "google.navigation:q=" + lat + "," + lng;
Intent intent = new Intent(Android.Content.Intent.ActionView, Android.Net.Uri.Parse(strUri));
//Intent.SetClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
Intent.SetPackage("com.google.android.apps.maps");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Application.Context.StartActivity(Intent);

Ответ 2

Через несколько секунд после запуска Карт Google запустите программу запуска вашего собственного приложения, чтобы вернуть его на передний план. Для этого вам может понадобиться будильник.