virtual reality(虚拟现实)
概念:虚拟实境(英语:virtual reality,缩写为VR),简称虚拟技术 , 是利用电脑模拟产生一个三维空间的虚拟世界,提供用户关于视觉等感官的模拟,让用户感觉仿佛身历其境,可以及时、没有限制地观察三维空间内的事物。
功能:增加虚拟现实
1.0 搭建VR开发环境,添加资源,修改Gradle,清单文件等
在main 文件下新建一个asstes 文件夹,中存放VR全景图
因为使用VR的资源很消耗内存,为了避免OOM(OutOfMemory)的问题,要把警报权限提高,从192提到512
故 要在清单文件下加一段下列代码:
android:largeHeap="true"
修改Gradle文件:该项目中做的是全景图,故在全景图的文件中修改相对应的grandle文件
在自己的项目中grandle文件中添加:下面一段代码
compile 'com.google.protobuf.nano:protobuf-javanano:3.0.0-alpha-7'
导入库文件:目的是使用VR里的方法和控件
选择你需要的库文件,不要都导进去,否则会导致APK的容量过大;
复制其路径,以moudle的形式导进项目中 如下:
注意此项目的API版本为19 如不是则修改成19或19以上 如下
关联库文件 shift+ctrl+alt+s
三个全选中:
验证 库文件是否导入成功:出现如下,就成功了
2.0 完成项目XML布局
<com.google.vr.sdk.widgets.pano.VrPanoramaViewandroid:layout_width="match_parent"android:layout_height="match_parent"></com.google.vr.sdk.widgets.pano.VrPanoramaView>
3.0在MainActivity中添加主要代码
public class MainActivity extends AppCompatActivity {private VrPanoramaView vrPanoramaView;private ImagerLoaderTask imagerLoaderTask;//导入三个文件库,common(基本库文件) commonwidget(基本的控件文件) panowidget(全景图 自己可选择)// 直接把文件的路径复制进去@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 1 控件初始化vrPanoramaView = (VrPanoramaView) findViewById(R.id.vrp_view);// ctrl +alt+f 自动生成成员变量// 隐藏掉VR效果左下角的信息按钮显示vrPanoramaView.setInfoButtonEnabled(false);// 隐藏掉VR效果右下角的全屏显示效果vrPanoramaView.setFullscreenButtonEnabled(false);//切换VR的模式 参数 VrPanoramaView.DisplayMode.FULLSCREEN_MONO设备模式(横着放)vrPanoramaView.setDisplayMode(VrPanoramaView.DisplayMode.FULLSCREEN_STEREO);// 使用自定义运行状态的监听,播放VR效果vrPanoramaView.setEventListener(new MyVREentListener());//使用自定义的AsyncTask,播放VR效果imagerLoaderTask = new ImagerLoaderTask();imagerLoaderTask.execute();}//因为读取VR的资源是一个耗时操作(VR的资源非常大,读取需要时间),所以我们不能够在主线程去读取,但是只有在主线程才能做UI的更新,故我们使用//AsyTaskprivate class ImagerLoaderTask extends AsyncTask<Void,Void,Bitmap>{//以后用EvebtBus去代替//2.该方法在子线程运行,从本地文件把资源加载到内存中@Overrideprotected Bitmap doInBackground(Void... params) {try {// 从资源目录拿到文件,返回结果是字节流InputStream inputStream = getAssets().open("andes.jpg");//把字节流转换成Bitmap对象Bitmap bitmap = BitmapFactory.decodeStream(inputStream);return bitmap;} catch (IOException e) {e.printStackTrace();}return null;}//用来接收 doInBackground方法返回的bitmap@Overrideprotected void onPostExecute(Bitmap bitmap) {//创建VrPanoramaView.Options,去决定显示VR是普通效果,还是立体效果VrPanoramaView.Options options = new VrPanoramaView.Options();//ctrl+alt+v 自动生成对象的类名//TYPE_STEREO_OVER_UNDER立体效果:图片的上半部分是在左眼显示,下半部分是在右眼显示,TYPE_MONO:普通效果options.inputType=VrPanoramaView.Options.TYPE_STEREO_OVER_UNDER;//使用VR控件对象,显示效果, 参数:1,Bitmap对象 2.VrPPanoramaView.OPtions对象,决定显示的效果vrPanoramaView.loadImageFromBitmap(bitmap,options);super.onPostExecute(bitmap);}}//进行VR视图的优化// 因为VR很占用内存,所以当界面进入onPause状态,暂停VR视图显示,进入onResum状态,继续VR视图显示,进入onDestroy,杀死VR,关闭异步任务// 当失去焦点是回调@Overrideprotected void onPause() {//暂停渲染和显示 随着屏幕的暂停,也要暂停VR视图vrPanoramaView.pauseRendering();super.onPause();}
//当重新获取焦点时,回调@Overrideprotected void onResume() {super.onResume();//继续渲染和显示vrPanoramaView.resumeRendering();}//当activity 销毁时回调@Overrideprotected void onDestroy() {//关闭渲染视图vrPanoramaView.shutdown();if(imagerLoaderTask !=null){if(!imagerLoaderTask.isCancelled()){//在退出activity时,如果异步任务没有取消,就取消imagerLoaderTask.cancel(true);}}super.onDestroy();}// VR运行状态监听类,自定义一个类继承private class MyVREentListener extends VrPanoramaEventListener{//当VR视图加载成功时回调public void onLoadSuccess(){super.onLoadSuccess();Toast.makeText(MainActivity.this,"加载成功",Toast.LENGTH_SHORT).show();}//当VR视图加载失败时回调public void onLoadError(String errorMessage){super.onLoadError(errorMessage);Toast.makeText(MainActivity.this,"加载失败",Toast.LENGTH_SHORT).show();}}
}
程序运行效果图:
virtual reality(虚拟现实)相关推荐
- matlab虚拟现实工具箱,matlab的Virtual Reality(虚拟现实)工具箱的应用简介
这几天在mathtools里,发现讨论区和精华区里都没有这个工具箱的讨论,所以我想尽我所能介绍一下虚拟现实工具箱在matlab中的应用,也算是上任板斧来带给大家的第一个好东东. 先介绍一下虚拟现实,从 ...
- 14版计算机专业英语,Chapter 14 Virtual Reality 《计算机专业英语》电子教案.ppt
Chapter 14 Virtual Reality <计算机专业英语>电子教案 Computer English Chapter 14 Virtual Reality *计算机专业英语 ...
- VRML(Virtual Reality Modeling Language)即虚拟现实建模语言
什么是VRML VRML(Virtual Reality Modeling Language)即虚拟现实建模语言.是一种用于建立真实世界的场景模型或人们虚构的三维世界的场景建模语言,也具有平台无关性. ...
- VRML(Virtual Reality Modeling Language)虚拟现实建模语言
文章来源:http://www.douban.com/group/topic/1121838/ 1.VRML发展的简史 VRML最初出现在1994年的瑞士日内瓦的W3会议上,Tim Berners-L ...
- 暨南大学计算机科学研究生,计算机科学系硕士研究生在IEEE Virtual Reality (VR) 2020上发表两篇论文...
近日,信息科学技术学院计算机科学系龙锦益教授团队在IEEE Virtual Reality (VR) 2020(http://ieeevr.org/2020/about/)上发表论文2篇,并通过线上视 ...
- Virtual Reality 那些事
2021年12月17日(美西时间下午5点,美东时间晚上8点),北京时间12月18日早上9点.由普世佳音.海外校园.天路事工.神奇传播.远东电台.远东福音会联合主办第13届网络宣教论坛 IMF2021, ...
- 论文笔记(七):ROS Reality: A Virtual Reality Framework Using Consumer-Grade Hardware for ROS-Enabled Robot
ROS Reality: A Virtual Reality Framework Using Consumer-Grade Hardware for ROS-Enabled Robots 文章概括 摘 ...
- 论文阅读:Cutting the Cord in Virtual Reality
论文名字 Cutting the Cord in Virtual Reality 来源 会议 年份 2016.11 作者 Omid Abari, Dinesh Bharadia, Austin Duf ...
- untiy virtual reality supported勾选
在打包设置里勾选Virtual Reality Supported后2DUI会看不到
- 《Precise and realistic grasping and manipulation in Virtual Reality without force feedback》论文解读
一.相关介绍 <Precise and realistic grasping and manipulation in Virtual Reality without force feedback ...
最新文章
- QEMU — I/O 设备操作
- UVa1153 Keep The Customer Satisfied(贪心)
- nodejs创建rtmp-streamer服务器
- 部署redis mysql_【服务器部署Redis、Mysql等】-解决方式
- 关闭数据执行保护(DEP)
- 机器学习 K-means算法_0(Matlab实现)
- 离线实时与api对应的关系+未来流行度
- C++ 实现分块查找(顺序存储结构)(完整代码)
- maven仓库理解、下载及设置
- python 帮助教师_花10分钟写一个Python脚本,搞定了初中老师一下午的工作
- docker harbor 域名_docker 安装Harbor
- (转)软件工程 英文缩写
- 宋图图的工学安装环境
- colorbox去除close关闭按钮,附上colorbox的基本使用方法
- 推荐一个巨好用的查看gihub源码的插件-Octotree
- 【文献阅读01】Eco-Vehicular Edge Networks for Connected Transportation: A Distributed Multi-Agent Reinfor
- 网易猛犸:数据质量漫谈
- wndDL课程学习笔记
- 第二十九章 OOTV杯超级模式大赛-模式总结(读书笔记)
- 对计算机社团未来发展的看法,对社团发展的一些看法
热门文章
- python 网站 批量 投票_python requests 简单实现易班自动登录,批量_文章发布,投票发布,评论,点赞,v2.0...
- R语言中,用多组散点图加折线,展现不同地区美女数量变化趋势?
- 台式计算机无线网络,台式电脑怎么设置无线网络?
- 慕课秒杀项目seckill
- ES6模板字符串中使用循环并取值
- 用动画做出一个正方体并且3d旋转,详解
- 学计算机要选什么科目,实行新高考后 想学计算机专业怎么选科
- vue 接入天地图并且在地图上画基站扇形覆盖物
- 中国二十五首必听的网络原创歌曲
- 使用Excel 2007绘制甘特图