Открытие StreetView из моего приложения в определенном месте - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь открыть режим Google StreetView on Panorama из моего приложения для Android.

Я действительно хочу открыть Google StreetView, а не Google Maps, потому что я хочу использовать его с приложением виртуальной реальности, которое использует VR Glass, которое использует стерео вид и режим панорамы. Режим панорамы, который я хочу, такой: https://youtu.be/3mQKGEnWxIw

Следующий код открывает приложение StreetView:

PackageManager pm = this.getPackageManager();
Intent intent = pm.getLaunchIntentForPackage("com.google.android.street");
startActivity(intent);

Но он открывается на экране по умолчанию.

РЕДАКТ. 1:

Я обнаружил, как открыть панораму Активность просмотра улиц. Сначала я перечислил доступные действия из приложения:

void listAppActivities(String packagename) {
    PackageManager pManager = getPackageManager();
    Intent startIntent = new Intent();
    startIntent.setPackage(packagename);

    List<ResolveInfo> activities = pManager.queryIntentActivities(startIntent, 0);
    for (ResolveInfo ri : activities) {
        System.out.println("getAppActivities::nome::" + ri.activityInfo.name);
    }

}

Затем я использовал Activity com.google.vr.app.StreetViewApp.StreetViewApp. Я могу запустить StreetView Panorama Activity напрямую, используя этот код:

void openStreetView() {
    String packagename = "com.google.android.street";
    PackageManager pm = this.getPackageManager();
    Intent intent = pm.getLaunchIntentForPackage(packagename);
    intent.setComponent(new ComponentName(packagename, "com.google.vr.app.StreetViewApp.StreetViewApp"));
    startActivity(intent);
}

Но я все еще не знаю, как передать параметры местоположений в StreetView. Как я могу это сделать?

Я тестировал с использованием URI:

Uri gmmIntentUri;
//gmmIntentUri = Uri.parse("geo:"+lat+","+lng); // Test1
gmmIntentUri = Uri.parse("google.streetview:cbll="+lat+","+lng); // Test2
//gmmIntentUri = Uri.parse("http://maps.google.com/maps?ll="+lat+","+lng); // Test3
intent.setData(gmmIntentUri);

И используя Intent.putExtra:

intent.putExtra("cbll", lat+","+lng);
intent.putExtra("args", "cbll="+lat+","+lng);
intent.putExtra("lat", new Double(lat));
intent.putExtra("long", new Double(lng));
intent.putExtra("lng", new Double(lng));

Но безуспешно. Кто-нибудь знает, как передать параметры местоположения в приложение StreetView в режиме «Панорама»?

РЕДАКТИРОВАТЬ 2:

Я обнаружил, что если я использую выделенную ссылку Street View или выделенное местоположение, можно открыть Street View в режиме Panorama, передав URI Intent. Я проверил следующие ссылки:

https://www.google.com/streetview/#christmas-island/ethel-beach-2 https://www.google.com/streetview/#russian-landmarks/terskol-1 https://www.google.com/streetview/#day-of-the-dead-in-mexico/ofrenda-dia-de-muertos-zocalo

Больше можно найти здесь: https://www.google.com/streetview/

Но все еще не знаю, как передать общее местоположение.

1 Ответ

0 голосов
/ 04 июля 2018

Вот как вы можете открыть Google Street View с вашими переданными координатами:

(я только что проверил, и он работает, как ожидалось)

private void openStreetView (double latitude, double longitude) {
    Uri gmmIntentUri = Uri.parse ("google.streetview:cbll=" + latitude + "," + longitude);

    Intent mapIntent = new Intent (Intent.ACTION_VIEW, gmmIntentUri);
    mapIntent.setPackage ("com.google.android.apps.maps");

    startActivity (mapIntent);
}

Вы были близки! ошибка, которую вы допустили, заключалась в том, что вы заменили Uri на неверный в третьем фрагменте кода:)

Вот более подробная информация: https://developers.google.com/maps/documentation/urls/android-intents

...