我正在尝试从我的Android应用程序打开全景模式的谷歌街景。
我真的想打开谷歌街景,而不是谷歌地图,因为我想用它与虚拟现实应用程序,使用虚拟现实玻璃,使用立体视图和全景模式。我想要的全景模式是这样的: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);
    }

}

然后我使用了活动com.google.vr.app.streetviewapp.streetviewapp。我可以直接使用以下代码启动街景全景活动:
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.puttera:
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));

但没有成功。有人知道如何在全景模式下将位置参数传递给街景应用程序吗?
编辑2:
我发现,如果使用街景突出显示的链接或特色位置,则可以在全景模式下打开街景,传递uri意图。我测试了以下链接:
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/
但仍然不知道如何传递通用位置。

最佳答案

以下是如何使用传递的坐标打开谷歌街景:
(我刚刚测试了一下,效果和预期一样)

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

10-04 19:58