Android Studio如何创建VR项目。

本文介绍了在Android Studio中创建VR项目的方法,包括通过快捷键设置module,修改build.gradle文件添加protobuf依赖,以及在AndroidManifest.xml中配置。在XML布局中使用VrPanoramaView,并利用异步线程如AsyncTask或EventBus来处理VR资源的加载,以避免阻塞主线程。
 所需要的VR运行库可在 https://github.com/googlevr/gvr-android-sdk/下载

      进入正题: 


 
      1. 在项目main文件夹下新建资产目录 assets并把图片放入该文件下:
tips:文件夹命名必须是assets,否者会出现空指针错误。



 

    2.以module的形式导入VR项目依赖的library库,分别是必要的库common,commonwidge,和可选择的,例如  panowidget(全景)。




  1.   快捷键(ctrl+shift+alt+s),实现module相关联。



     


  1. 在项目里的build.gradle文件里添加: compile 'com.google.protobuf.nano:protobuf-javanano:3.0.0-alpha-7



  1.     在AnroidManifest.xml文件下添加:
   android :largeHeap= "true"
       防止资源过大,出现out of memory错误。

  1.    完成xml布局,VrPanoramaView。



  1.  由于Vr资源量大,所以加载到子线程中进行主线程来显示图片。使用一个异步线程AsyncTask或EventBus技术进行
代码如下:
public class MainActivity extends AppCompatActivity {
  private VrPanoramaView vrp;
    private ImageLoader img;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        vrp= (VrPanoramaView) findViewById(R.id.vr_button);
//        隐藏掉VR效果左下角信息按钮显示
           vrp.setInfoButtonEnabled(false);
        // 隐藏掉VR效果右下角信全屏按钮显示、
       vrp.setFullscreenButtonEnabled(false);
        //切换VR模式 (手机横放模式)
        vrp.setDisplayMode(VrWidgetView.DisplayMode.FULLSCREEN_STEREO);
        //设置时间监听
       vrp.setEventListener(new MyListener());


        img new ImageLoader();
        img.execute();
 // 设置VR运行状态监听

    }
    //因为读取VR资源是耗时操作,VR图片资源较大,所以不能在主线程做读取操,但是在主线成才能做UI更新,我们使用AsyncTask
    private  class ImageLoader extends AsyncTask<Void ,Void,Bitmap>{
       //该方法子啊子线程运行,从本地文件将资源加载到内存中
       @Override

        protected Bitmap doInBackground(Void... params) {
            //从资源目录拿到资源,返回结果是字节流
           try {
                InputStream open = getAssets().open("andes.jpg");
                //把字节流转化为bitmap对象
                Bitmap bitmap = BitmapFactory.decodeStream(open);
                return bitmap;
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Bitmap bitmap) {
            //创建VrPanoramaView.Options,决定显示VR是立体效果,还是普通效果
            VrPanoramaView.Options options = new VrPanoramaView.Options();
            //TYPE_STEREO_OVER_UNDER立体效果, TYPE_MONO普通效果
            options.inputType=VrPanoramaView.Options.TYPE_STEREO_OVER_UNDER;
            //使用VR控件显示效果 参数1btmap对象 参数2VrPanoramaView.Options对象,决定显示效果;
           vrp.loadImageFromBitmap(bitmap,options);
            super.onPostExecute(bitmap);
        }
    }

8. 以下为优化()
    @Override
    protected void onPause() {
        //暂停渲染和显示
       vrp.pauseRendering();
        super.onPause();
    }

    @Override
    protected void onResume() {
        //继续渲染和显示
       vrp.resumeRendering();
        super.onResume();
    }
    //activity销毁时,回调

   @Override
    protected void onDestroy() {
        super.onDestroy();
        //关闭渲染效果
       vrp.shutdown();
        if(img!=null){
            //在退出activity时,如果异步任务没有取消,就取消
           if(!img.isCancelled()){
                img.cancel(true);
            }
        }
    }
    //vr运行状态监听类
   private class MyListener extends VrPanoramaEventListener{
        //VR视图加载失败回调

       @Override
        public void onLoadError(String errorMessage) {
            Toast.makeText(MainActivity.this,"shibai",Toast.LENGTH_SHORT).show();
        }
        //VR视图加载成功回调

       @Override
        public void onLoadSuccess() {
            Toast.makeText(MainActivity.this,"chenggong",Toast.LENGTH_SHORT).show();
        }
    }
}


以上就是Android建立的VR项目,如有不当之处,请见谅。
需在真机上测试。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值