一起学Google Daydream VR开发,快速入门开发基础教程二:Android端开发环境配置二
2017-02-17 17:50
1046 查看
开始部署
上篇介绍了开发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视图视频小部件的代码。如果需要了解这些代码的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清单文件:[html] view plain copy print?
<?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>
<?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.READ_EXTERNAL_STORAGE : 读取拓展内容。
没什么好说的,基本都是一些常用的权限,需要用到的硬件设备: ● android.hardware.sensor.accelerometer : 加速度传感器 ● android.hardware.sensor.gyroscope : 水平陀螺仪
也没什么好说的,VR必备的硬件设备,intent-filter过滤分类:
● com.google.intent.category.CARDBOARD :兼容Cardboard纸盒
打开寻宝游戏treasurehunt的build.gradle的,看看用到了哪些库:[html] view plain copy print?
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’
}
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.Ster
bc73
eoRenderer接口:为所有委托立体渲染细节视图渲染。因为他们通常不使用提供的转换参数实现者应该简单地呈现视图。所有的立体渲染和失真校正的细节与渲染抽象和视图内部管理。
GvrView:可用于VR渲染,GvrView渲染立体声内容。
TreasureHuntActivity的布局文件是common_ui.xml,里面只有一个控件GvrView,再看看初始化代码:[html] view plain copy print?
<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”/>
<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"/>[html] view plain copy print?
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); }
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():每只眼睛眼睛不同的参数。
Demo内容就介绍这么多了,其他的自己摸索,主要都是些关于OpenGL的东西,学过OpenGL的同学会有一定的优势,没学过的也可以或多或少的去了解下OpenGL的API,接下来的blog我将讲解下如何创建自己的第一个Daydream应用程序。
一起探讨
Daydream相关学习技术交流群,有什么最新的技术和教程以及VR开发工具等会第一时间在群内发布,欢迎广大VR爱好者的加入:①群号:418310684点击加入DayDream群:声明
欢迎转载,但请保留文章原始出处作者:Jaiky_杰哥
出处:http://blog.csdn.net/jaikydota163/article/details/52729869
相关文章推荐
- 一起学Google Daydream VR开发,快速入门开发基础教程二:Android端开发环境配置二
- 一起学Google Daydream VR开发,快速入门开发基础教程一:Android端开发环境配置一
- Android 开发实例教程 零基础学习 1小时入门 图解说明教程 化复杂为简单 配置好的android开发环境 带实例
- 入门——Android 开发环境配置图文教程
- Linux(ubuntu11.10)下 配置android4.0.3开发环境零基础教程
- Android基础入门教程——1.2 开发环境搭建
- Daydream VR入门基础教程,VR开发基础知识——VR view基本介绍
- Android开发快速入门(环境配置、Android Studio安装)
- Android基础入门教程——1.2 开发环境搭建
- 2015年最新Android基础入门教程目录第一章:环境搭建与开发相关(已完结 10/10)
- 基于U3D的VR开发教程:(1)基础环境配置
- Android入门教程 Android开发环境配置
- Android开发入门环境快速搭建实战教程
- 入门教程:Xamarin Android 开发 环境配置: SDK 在线更新镜像服务器资源 (一)
- C#/mono开发Android应用程序入门(一)-(配置Mono for Android环境)(转)
- Android开发环境搭建,各版本系统下android环境搭建,android入门教程
- J2EE入门视频教程第一讲——环境配置及J2EE基础
- 如何在Mac OS X下配置Android开发环境[入门]
- 配置android开发环境eclipse获取ADT获取不到 https://dl-ssl.google.com/android/eclipse
- Android基础之配置开发环境报错