首页 > 代码库 > Daydream从入门到精通——快速入门开发基础教程二:Android端开发环境配置二
Daydream从入门到精通——快速入门开发基础教程二:Android端开发环境配置二
开始部署
上篇介绍了开发Daydream Android VR需要的基本环境,这篇我们来看看如何部署和运用官方示例。
--------------------------------------------------------------------------------------------------------------------
Daydream快速入门开发基础教程一:Android端开发环境配置一
http://blog.csdn.net/jaikydota163/article/details/52647876
--------------------------------------------------------------------------------------------------------------------
打开Android Studio。在Android Studio的欢迎界面,选择打开现有的Android Studio项目,“Open an existing Android Studio project”,或者在运行界面,选中File —— Open,然后选择示例源码gvr-android-sdk解压目录。 导入后Android Studio将在左侧的“项目”选项卡上显示各个gradle模块,并在顶部工具栏上显示各个运行目标,如图2所显示。
可以看到有4个可运行的sample项目,和7个依赖库,7个依赖库是创建Android VR的核心,他们分别是:
● com.google.vr.sdk.base : Google VR API的核心代码。
● com.google.vr.sdk.common : Google VR API的公共代码。
● com.google.vr.sdk.audio : 3D空间化声音的代码。
● com.google.vr.sdk.controller : 用于在VR应用程序中使用Daydream控制器的代码。
● com.google.vr.sdk.widgets.common : 用于嵌入VR视图内容的共享代码。
● com.google.vr.sdk.widgets.pano : VR全景视图代码。
● com.google.vr.sdk.widgets.video : VR视图视频小部件的代码。
● com.google.vr.sdk.audio : 3D空间化声音的代码。
● com.google.vr.sdk.controller : 用于在VR应用程序中使用Daydream控制器的代码。
● com.google.vr.sdk.widgets.common : 用于嵌入VR视图内容的共享代码。
● com.google.vr.sdk.widgets.pano : VR全景视图代码。
● com.google.vr.sdk.widgets.video : VR视图视频小部件的代码。
如果需要了解这些代码的API,可以查看:https://developers.google.com/vr/android/reference_overview
4个可运行的sample APP,分别是:
● samples-simplepanowidget: 提供简单全景视图组件例子。
● samples-treasurehunt: 寻宝小游戏例子。
● samples-simplevideowidget:提供简单视图视频组件例子。 ● samples-controllerclient: Daydream控制器App模拟器客户端。
如果需要了解寻宝游戏的实现方式,可以查看:https://developers.google.com/vr/android/samples/treasure-hunt
运行了解Demo项目
将手机连接到计算机,运行寻宝游戏,开始在手机上编译和运行应用程序。开始出现第一界面:
可以放入Cardboard纸盒,也可以不放入会自动开始主程序:
一个简单得不能再简单的VR小游戏,如果购买了Daydream控制器可以连接使用,也可以用另一个手机下载控制器模拟APP,模拟控制器来使用。表示没控制器的情况下玩半天不知道在玩什么,后来取下Cardboard点击立方体,立方体会消失,并且会反馈震动提示找到宝藏了.........好吧,看来我们这个Demo实在是有点太简单了,不过我们也不需要它太复杂,主要是通过了解这个Demo的代码,了解如何快速开发出Daydream的VR程序。
打开samples-sdk-treasurehunt,我们来看看是如何开发一个VR程序,首先是Manifest清单文件:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.google.vr.sdk.samples.treasurehunt" android:versionCode="1" android:versionName="1"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.NFC" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- Make accelerometer and gyroscope hard requirements for good head tracking. --> <uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true"/> <uses-feature android:name="android.hardware.sensor.gyroscope" android:required="true"/> <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="22"/> <uses-feature android:glEsVersion="0x00020000" android:required="true" /> <!-- VR feature tags. --> <uses-feature android:name="android.software.vr.mode" android:required="false"/> <uses-feature android:name="android.hardware.vr.high_performance" android:required="false"/> <application android:allowBackup="true" android:supportsRtl="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name"> <activity android:name=".TreasureHuntActivity" android:label="@string/app_name" android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden|screenSize" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> <category android:name="com.google.intent.category.CARDBOARD" /> </intent-filter> </activity> </application> </manifest>
可以看到主要用到的权限:
● android.permission.INTERNET : 获取网络权限
● android.permission.NFC : 获取NFC权限(貌似没体现到啊)。
● android.permission.VIBRATE : 振动权限。
● android.permission.VIBRATE : 振动权限。
● android.permission.READ_EXTERNAL_STORAGE : 读取拓展内容。
没什么好说的,基本都是一些常用的权限,需要用到的硬件设备:
● android.hardware.sensor.accelerometer : 加速度传感器
● android.hardware.sensor.gyroscope : 水平陀螺仪
也没什么好说的,VR必备的硬件设备,intent-filter过滤分类:
● com.google.intent.category.CARDBOARD :兼容Cardboard纸盒
● com.google.intent.category.CARDBOARD :兼容Cardboard纸盒
打开寻宝游戏treasurehunt的build.gradle的,看看用到了哪些库:
dependencies { compile project(‘:libraries-audio‘) compile project(‘:libraries-base‘) compile project(‘:libraries-common‘) compile ‘com.google.protobuf.nano:protobuf-javanano:3.0.0-alpha-7‘ }对照最上面的,可以了解到分别用到了GVR核心代码,公共代码,和音频。
至于com.google.protobuf.nano:protobuf-javanano:3.0.0-alpha-7,很明显不是依赖的GVR的库了,是从jcenter的获取,没网的同学部署的时候gradle这里是通不过的。protobuf-javanano是一套序列化数据结构的方案,通常用于编写需要数据交换或者需要存储数据的程序,这个是用于Android移动设备的Nano版本,相比原来的版本,去掉了一些复杂的特性,所生成的代码更加小巧、简单,更加适用于移动设备。
接下来了解项目的主Acitivty,也就是TreasureHuntActivity:
我们发现TreasureHuntActivity是继承了GvrActivity(GvrActivity在com.google.vr.sdk.base包下)实现了GvrView.StereoRenderer接口(StereoRenderer在com.google.vr.sdk.base.GvrView下)。
GvrActivity:是使用谷歌VR SDK制作应用程序的起点。GvrActivity是base activity,提供与谷歌轻松集成虚拟现实设备。它暴露事件的VR环境进行交互和处理了许多创造VR渲染一个活动时通常需要的细节。
GvrView.StereoRenderer接口:为所有委托立体渲染细节视图渲染。因为他们通常不使用提供的转换参数实现者应该简单地呈现视图。所有的立体渲染和失真校正的细节与渲染抽象和视图内部管理。
GvrView:可用于VR渲染,GvrView渲染立体声内容。
GvrActivity:是使用谷歌VR SDK制作应用程序的起点。GvrActivity是base activity,提供与谷歌轻松集成虚拟现实设备。它暴露事件的VR环境进行交互和处理了许多创造VR渲染一个活动时通常需要的细节。
GvrView.StereoRenderer接口:为所有委托立体渲染细节视图渲染。因为他们通常不使用提供的转换参数实现者应该简单地呈现视图。所有的立体渲染和失真校正的细节与渲染抽象和视图内部管理。
GvrView:可用于VR渲染,GvrView渲染立体声内容。
TreasureHuntActivity的布局文件是common_ui.xml,里面只有一个控件GvrView,再看看初始化代码:
<com.google.vr.sdk.base.GvrView android:id="@+id/gvr_view" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentLeft="true" android:layout_alignParentTop="true"/>
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.common_ui); GvrView gvrView = (GvrView) findViewById(R.id.gvr_view); // 将 gvrView和GvrView.StereoRenderer 关联 gvrView.setRenderer(this); // 将 gvrView和当前activity 关联 . setGvrView(gvrView); }
够简单吧!官方介绍GvrView.StereoRenderer 有两个主要的方法:
onNewFrame():每次应用程序呈现时间/一个新的帧被绘制到屏幕上。
onDrawEye():每只眼睛眼睛不同的参数。
onDrawEye():每只眼睛眼睛不同的参数。
Demo内容就介绍这么多了,其他的自己摸索,主要都是些关于OpenGL的东西,学过OpenGL的同学会有一定的优势,没学过的也可以或多或少的去了解下OpenGL的API,接下来的blog我将讲解下如何创建自己的第一个Daydream应用程序。
一起探讨
Daydream相关学习技术交流群,有什么最新的技术和教程以及VR开发工具等会第一时间在群内发布,欢迎广大VR爱好者的加入:①群号:418310684
点击加入DayDream群:
声明
欢迎转载,但请保留文章原始出处
作者:Jaiky_杰哥
出处:http://blog.csdn.net/jaikydota163/article/details/52729869
Daydream从入门到精通——快速入门开发基础教程二:Android端开发环境配置二
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。