VR全景图片显示(本地)
1.搭建VR图片开发的环境
- 1.1.导入从github搜索下载的google vr sdk 里面的引用库 common,commonwidget,panowidget(全景图片控件库)
- 1.2.当前这三个库里面缺少序列相关的api,容易引用类找不到,未定义异常
- 1.3.依赖三个库
compile 'com.google.protobuf.nano:protobuf-javanano:3.0.0-alpha-7'
compile project(':common')
compile project(':commonwidget')
compile project(':panowidget')
- 1.4.准备全景图片用来测试代码 放在assets目录下面,例assets/a.jpg
- 1.5.对当前应用进行内存设置,希望应用可使用最大内存 避免OOM
<application android:largeHeap="true"
2.加载全景图片到内存中成为Bitmap(bitmap是图片在内存中的表示对象),展示在全景图片控件
public class MainActivity extends AppCompatActivity {
private VrPanoramaView vrPanoramaView;
private ImageTask imageTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vrPanoramaView = (VrPanoramaView) findViewById(R.id.vr_pano);
imageTask = new ImageTask();
imageTask.execute("a.jpg");
}
private class ImageTask extends AsyncTask<String,Void,Bitmap>
{
@Override
protected Bitmap doInBackground(String... params) {
try {
InputStream inputStream = getAssets().open(params[0]);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
return bitmap;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
if(bitmap!=null)
{
VrPanoramaView.Options options=new VrPanoramaView.Options() ;
options.inputType= VrPanoramaView.Options.TYPE_STEREO_OVER_UNDER;
VrPanoramaEventListener listener=new VrPanoramaEventListener(){
@Override
public void onLoadError(String errorMessage) {
super.onLoadError(errorMessage);
Toast.makeText(MainActivity.this, errorMessage, Toast.LENGTH_SHORT).show();
}
@Override
public void onLoadSuccess() {
super.onLoadSuccess();
Toast.makeText(MainActivity.this, "进入VR图片显示...", Toast.LENGTH_SHORT).show();
}
};
vrPanoramaView.setEventListener(listener);
vrPanoramaView.loadImageFromBitmap(bitmap,options);
}
}
}
3.处理全景控件展示细节
@Override
protected void onPause() {
super.onPause();
if (vrPanoramaView != null) {
vrPanoramaView.pauseRendering();
}
}
@Override
protected void onResume() {
super.onResume();
if (vrPanoramaView !=