如何解决Google PanoramaAPI停止在Android 11上运行
我的应用程序中有Googles PanoramaAPI的有效实现。不幸的是,该实施停止在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
加载了图像,并且显示了全景视图。 - 当我在服务器上上传相同的图像并通过应用程序下载时,图像将存储在
/storage/emulated/0/Android/data/<applicationId>/files/*.jpg
上。不幸的是,全景视图无法加载图像,并且viewerIntent
始终为null
。
对我来说,这看起来像是Android 11上的权限问题,但我不知道如何解决。我不想将图像下载到手机的公共区域。有谁知道如何解决它?
解决方法
我怀疑这与 Android 11 中 Scoped Storage 的引入有关,但我不确定。
我已经设法使用 VR 套件组合了 Panorama API 的替代方案,我在我的 blog post 中记录了一些代码片段。
TLDR 是这样的:
- 用
ImageView
替换原来的VrPanoramaView
- 使用
VrPanoramaView
的 API 隐藏一些选项(可选) - 在
VrPanoramaView
上叠加一个图像按钮,并使用它在陀螺仪和触摸模式之间切换 - 使用触摸拦截来支持双指缩放(这将在单独的博客文章中)
- 将您的图片加载到
VrPanoramaView
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。