谷歌全景API停止在Android 11上工作



我的应用程序中有一个谷歌全景API的工作实现。不幸的是,该实现在Android 11上停止了工作。

实现如下所示:

Uri uri = Uri.fromFile(file);
Panorama.PanoramaApi.loadPanoramaInfoAndGrantAccess(mClient, uri).setResultCallback(
new ResultCallback<PanoramaResult>() {
@Override
public void onResult(PanoramaResult result) {
if (result.getStatus().isSuccess()) {
Intent viewerIntent = result.getViewerIntent();
Log.i(TAG, "found viewerIntent: " + viewerIntent);
if (viewerIntent != null) {
startActivity(viewerIntent);
finish();
}
} else {
Log.e(TAG, "error: " + result);
}
}
});

以下情况:

  • 当我在智能手机上制作全景图像并将其加载到给定的实现中时,它就可以工作了。从/storage/emulated/0/DCIM/Camera/*.jpg加载图像get,并且显示全景视图没有问题
  • 当我在服务器上上传相同的图像并通过应用程序下载时,图像会存储在/storage/emulated/0/Android/data/<applicationId>/files/*.jpg上。不幸的是,全景视图无法加载图像,并且viewerIntent始终是null

对我来说,这看起来像是安卓11上的权限问题,但我不知道如何解决。我不想将图像下载到手机的公共区域。有人知道怎么修吗?

我怀疑这与Android 11中引入Scoped Storage有关,但我不确定。

我已经设法使用VR工具包为Panorama API提供了一个替代方案,我在博客文章中记录了一些代码片段。

TLDR是这样的:

  1. 将原始ImageView替换为VrPanoramaView
  2. 使用VrPanoramaView的API隐藏某些选项(可选(
  3. VrPanoramaView上叠加一个图像按钮,并使用它在陀螺仪和触摸模式之间切换
  4. 使用触摸拦截来支持缩放(这将在单独的博客文章中(
  5. 将您的图像加载到VrPanoramaView

最新更新