我正在尝试使用panoramagl-android库来显示全景图像。我的场景需要从互联网上加载全景,不能保存在android的本地res文件夹中,因为我将有数百张图片。
我已经能够从res文件夹成功加载全景jpeg,但无法对位于互联网上的文件执行相同的操作。
我正在尝试使用JSON加载全景图像,因为我已经提到我将拥有数百张图片并且通过代码设置他们的热点根本不可能。
这是我从res文件夹加载JSON的活动:
/**
* This event is fired when root content view is created
* @param contentView current root content view
* @return root content view that Activity will use
*/
@Override
protected View onContentViewCreated(View contentView)
{
//Load layout
ViewGroup mainView = (ViewGroup)this.getLayoutInflater().inflate(R.layout.activity_main, null);
//Add 360 view
mainView.addView(contentView, 0);
loadSpherical2FromJson();
//Return root content view
return super.onContentViewCreated(mainView);
}
private void loadSpherical2FromJson() {
try
{
PLILoader loader;
loader = new PLJSONLoader("res://raw/json_spherical2");
this.load(loader, true, new PLTransitionBlend(2.0f));
}
catch(Throwable e)
{
Toast.makeText(this.getApplicationContext(), "Error: " + e, Toast.LENGTH_SHORT).show();
}
}
我的JSON是这样的:
{
// "urlBase": "res://",
"urlBase": "http://",
"type": "spherical2",
"keep": "all",
"images":
{
// "preview": "raw/casabella_hall_preview",
// "image": "raw/casabella_hall_2048"
"preview": "statichost.herokuapp.com/panoramagl/casabella_hall_preview.jpg",
"image": "statichost.herokuapp.com/panoramagl/casabella_hall_2048.jpg"
},
"camera":
{
"keep": "all|~atvRange|~rotation|~fov",
"atvMin": -90.0,
"atvMax": 90.0,
"vLookAt": 0.0,
"hLookAt": 170.0
},
"hotspots":
[
{
"id": 1,
"atv": 0.0,
"ath": 170.0,
"width": 0.05,
"height": 0.05,
// "image": "raw/hotspot",
"image": "statichost.herokuapp.com/panoramagl/hotspot.png",
"alpha": 0.8,
"overAlpha": 1.0,
"onClick": "lookAt(0.0, 90.0, true);"
}
]
}
res://的注释掉的代码正在运行,但http://无效。我还需要从互联网上获取这个JSON数据(但一次只能有一件事)。
这是整个应用程序的github仓库:https://github.com/ishanatmuz/PanoramaGL-Test/tree/Spherical2Json
请帮助。
更新:
之前我收到Rejecting re-init on previously-failed class ....
作为信息,但没有在LogCat中出错,所以我没有怀疑它可能是问题。 Anyhoo我在libs文件夹中添加了commons-httpclient-3.1.jar,以消除它,假设可能是问题。但是,现在当我运行应用程序时,我看到一个循环加载器动画,表明正在加载,但后来我仍然看到黑屏。在网络监视器中,我仍然看不到任何网络请求被触发。
我已经更新了github repo中的代码。
答案 0 :(得分:0)
我找出问题所在。我把清单中的INTERNET权限放在了错误的位置。它现在正在运作。
代码的工作版本在GitHub仓库中更新。 但是,我正在为其他任何有类似问题的人将代码版本链接到Android中的PanoramaGl集成。
我想提一下,我必须移动一些库文件和一些lib粘合文件以删除文件重复,从而减少APK大小。
在我的文件中移动。我发现使用jar文件(上面提到的方法1)作为库给了我2.8 M.B.的APK。并使用源代码(上面提到的方法2)给我一个2.6 M.B的APK。
用户可能会考虑的另一件事是方法计数,因为Android有upper limit on method count of 65536。