在 Android 和 iOS 本地使用 krpano 的问题
Posted
技术标签:
【中文标题】在 Android 和 iOS 本地使用 krpano 的问题【英文标题】:Problems using krpano locally in Android and iOS 【发布时间】:2014-02-07 15:40:54 【问题描述】:我用 krpano 创建了几张全景图,我正在开发一个显示它们的移动应用程序 (ios + android)。
如果我从服务器在线访问 krpano 文件,一切正常,但是当我将文件包含为应用程序资源并尝试在本地访问它们时,我无法使其正常工作。我发现的错误如下:
iOS 应用:黑屏。
Android 应用:黑屏和错误消息:“FATAL ERROR: my_pano.xml - loading failed (network error: a network error occurred).
我做了很多测试:只有 krpano 文件加载失败;其他本地html+js文件在本地加载没有问题。
什么会阻止 krpano 文件在本地加载?
在 Android 中,我使用 WebView 对象来加载全景图,并且从在线 url 可以正常工作,但不能在本地工作。
这是我在 Android 上的代码:
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView myWebView = (WebView) findViewById(R.id.webview);
//para no salir de mi webview al pinchar
//y cargar una pantalla SPLASH mientras carga la web
myWebView.setWebViewClient(new WebViewClient()
);
WebSettings webSettings = myWebView.getSettings();
webSettings.setjavascriptEnabled(true); //activa javascript
webSettings.setBlockNetworkLoads(false); //para que no de bloqueos de red
webSettings.setDomStorageEnabled(true); //recomiendan poner tb esto
//no está funcionando la carga de la web desde local
myWebView.loadUrl("file:///android_asset/asuncion.html");
// myWebView.loadUrl("http://coolab.umh.es/360/alcudia/alcudia.html");
我收到以下错误:
但是我可以从 Eclipse 中看到全景:
非常欢迎任何建议!
【问题讨论】:
对于安卓你可以尝试MozillaView而不是WebView
来克服WebView的限制。
这有什么结果吗?
【参考方案1】:
沉迷于 ilovebali 所说的,您可以尝试 CrossWalk(Android 默认 webview 的替代方案),在我看来,这本身就是一个很好的解决方案对于这种事情。 以下是显示您所询问内容的代码示例:
xWalkView = (XWalkView) this.findViewById(R.id.your_xwalk_webview);
xWalkView.load(filePath, null);
XWalkPreferences.setValue(XWalkPreferences.REMOTE_DEBUGGING, true);
XWalkPreferences.setValue(XWalkPreferences.ALLOW_UNIVERSAL_ACCESS_FROM_FILE, true);
XWalkPreferences.setValue(XWalkPreferences.JAVASCRIPT_CAN_OPEN_WINDOW, true);
如果需要更多信息,请查看此链接:https://diego.org/2015/01/07/embedding-crosswalk-in-android-studio/
【讨论】:
【参考方案2】:我怀疑问题出在 WebView 可能使用的原生 android 浏览器上。 原生 android 浏览器和 chrome 都不会让网站在本地访问 xml 文件。
我没有尝试将 krpano 封装到 WebView 中。但只是将文件复制到设备上并尝试使用本机浏览器打开它。我找到了这个错误。
我能够在 Android 设备上查看 krpano 全景图的唯一方法是安装 Firefox 或 Dolphin 浏览器并在该浏览器中查看本地页面。
希望这至少会有所帮助。
【讨论】:
【参考方案3】:尝试将此代码添加到您的活动中,我使用下面的代码来处理 CORS(跨源请求)
myWebView.getSettings().setAllowFileAccess(true);
myWebView.getSettings().setAllowContentAccess(true);
myWebView.getSettings().setAllowFileAccessFromFileURLs(true);
myWebView.getSettings().setAllowUniversalAccessFromFileURLs(true);
希望对您有所帮助...
【讨论】:
【参考方案4】:您可以使用 KRPano 或 PanaromaGl 库来实现相同的目的。
以下链接结帐:
http://krpano.com/
https://github.com/anispy211/PanaromaGL
【讨论】:
请避免仅链接的答案。有关详细信息,请参阅帮助部分。以上是关于在 Android 和 iOS 本地使用 krpano 的问题的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin - 无法通过 Android(和 iOS)访问本地 api
2020 年使用 cordova 的本地数据库 [Android/IOS]
科尔多瓦本地通知声音在 ios 和 Android 中不起作用