查看: 2545|回复: 5
打印 上一主题 下一主题

[经验分享] 用 Unity 开发 Google Glass 应用简易基础教学

[复制链接]
ZackD    

715

主题

22

听众

4万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
26216
精华
17

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2014-11-7 20:22:15 |只看该作者 |倒序浏览
本文为繁体,为了大家阅读方便转换为简体版本,原址如下:
http://otaru.tw/?p=5736


Unity 开发 Google Glass 应用简易基础教学

小樽拿到Google Glass已经超过一年,也做了些开发,也发现了许多问题,基本上可以理解为何Google原先定下2014要普及化的豪语至今悄悄的没有下文,不过分析留待有机会再说吧

glass14.jpg


小樽之前由于计划案的关系,设计过一款基于智能型眼镜的,以文化保存与发展为目标的游戏化 (Gamification) 的适地性服务 (LBS) APP,概念的简易原型影片如下:(这里用截图表示,视频位置在 https://www.youtube.com/watch?feature=player_embedded&v=ZYxs-PEqPjY)

Snap4.jpg
Snap5.jpg


当然由于时间和经费有限,在结案时并没有办法作到这么炫,但是基于这项设计所需要的一些基础技术,包含 Google Glass + iBeacon 实现室内定位与互动的技术,在小樽网罗的团队强大伙伴们共同努力下,事实际有被完成的唷,而且这个游戏的手机板原形也有真的作出来,虽然计划已经结束所以 已经没有额外的费用可以继续把原型更完整化,但是不用担心,小樽个人一定会想办法把最终版的程序开发完,希望研究成果能真的能造服环境。

好~ 碎碎念就到此,基于这个计划开发过程中,团队有研究是否能将Unity发布的Android apk移植给Glass用,如果可以将省去很多原型开发的力气-至少对于游戏画面如何Render和GUI的制作可以省去非常多力气,但是有 Glass 的人就已经很少了,更别提同时会制作Unity又有眼镜的团队,所以网络上当然找不到资料啦~官网也不会有囉,但是小樽运气很好,找到一位非常强大的台大 资工强者成鑫大大,他原本就会写glass的原生程序,有提供可能的一些线索,小樽就到Unity中找对应可能衔接作输入的指令,很幸运的在一个晚上找到 了可以让Glass触控版输入到Unity中的方法,并且也成功将发布的apk安装到Glass中测试无误,谦虚的成鑫大大觉得这没有甚么了不起大家都作 的到,但是对小樽来说已经太猛了~而基于我们都没有觉得需要藏私甚么-越多人会就有机会让更多人一起开发作出更多好东西,也有机会认识更多强者朋友,于是 由小樽汇整写出此篇教学,让之后有需要的朋友们可以参考

首先,Google Glass受限于输入的模式以语音和侧边触控板为主,官方语音系统目前只接受英文,并且有干扰各种问题,用侧面触控版控制是比较可行的方案,但是触控手势 的指令并不直接对应Android行动装置系统的确认/返回/前后滑及HOME,后来发现需要以比照触控面板的输入模式,自己判断手势滑动的”触控点数” 和”位移坐标”在Unity中写入上述事件,因此在本范例中,我们将glass触控版侦测到的触碰行为,以作标的形式透过GUI显示在画面中,首先我们打 开一个新的Unity项目,并在摄影机上写入一个c#的Script内容如下,比较关键的地方小樽以经有写注解:
  1. using UnityEngine;
  2. using System.Collections;

  3. public class NewBehaviourScript : MonoBehaviour {


  4.         GUIStyle style;
  5.         string text;
  6.         // Use this for initialization
  7.         void Start () {
  8.                 initialStyle();
  9.         }
  10.         
  11.         // Update is called once per frame
  12.         void Update () {
  13.                 if(AndroidInput.touchCountSecondary > 0){ //如果有偵測到觸控點
  14.                         text = "x:"+
  15.                         AndroidInput.GetSecondaryTouch(0).position.x+"\ny:"+ //顯示X作標
  16.                         AndroidInput.GetSecondaryTouch(0).position.y; //顯示Y作標
  17.                 }else{
  18.                         text = "no touch";
  19.                 }
  20.         }

  21.         void OnGUI(){
  22.                 GUI.Label(new Rect(0,0,Screen.width,Screen.height),text,style);
  23.         }

  24.         private void initialStyle(){
  25.                 style = new GUIStyle();
  26.                 style.fontSize = 60;
  27.                 style.normal.textColor = Color.white;
  28.                 style.alignment = TextAnchor.MiddleCenter;
  29.         }

  30. }
复制代码
其中侦测到处控点那边,意思是如果有一个或以上的手指触碰行为发生则执行显示作标的显示,因此如果想写多点处控行为可以自己改写,其他程序码小樽就不解释了,如果完全看不懂可以配合Help查阅喔
写完以后要进行发布,发布的时候有几个要注意的关键步骤,请来到Android发布设定作调整
首先因为Glass是横向的显示,预设的显示配置请选择横向 (如下),否则发布到Glass你会看到只有中间1/3的画面

4.jpg


其次关于app name的部份,Bundle Identifier请确认与你原本设定的company Name和Product Name有一致,虽然说有时候没有对应也没关系,但是建议还是一致比较保险,最下面的API最低版本请选Android 4.4 (因为对应当前Glass的Android版本)

5.jpg

由于我们要发布进Glass还需要透过Android的IDE作一些修正,所以请勾选发布成Google Android Project的形式,之后便会发布出一个项目资料夹

6.jpg


到上面为止是在Unity中要完成的步骤,接下来我们需要透过Android的编译器来修改apk的进入点来符合Glass的需求,关于安装 Android Studio或使用Eclipse+Android SDK的部份看个人喜好都可以,完全没有使用过的朋友可能要先去Google一下基本安装和环境设定,小樽这里就不赘述

小樽是透过Eclipse来完成后面动作,我们要从一个已经存在的Android项目来开启新项目如下

7.jpg

下一步以后选择我们刚刚从Unity发布出来的项目,另外请确认你的SDK里面已经有安装4.4.2的Glass Development Kit Preview 这项,如下图,否则你没办法发布程序到眼镜里喔

8.jpg

将从项目的属性设定中将Android library改为”Glass Development Kit Preview” 4.4.2

422.JPG

在项目的 AndroidManifest.xml 中,原始的code排版跟没排一样很难阅读,可以用快速键 ctrl+shift+f 自动整理,接下来步骤(或参阅文章最后的整篇原始码):
去掉android:debuggable=”false”
加入

(1)
  1. <uses-permission android:name="com.google.android.glass.permission.DEVELOPMENT"/>
复制代码
(2)
  1. android:theme="@android:style/Theme.DeviceDefault"
复制代码
(3)
  1. <action android:name="com.google.android.glass.action.VOICE_TRIGGER" />
复制代码
(4)
  1. <meta-data
  2. android:name="com.google.android.glass.VoiceTrigger"
  3. android:resource="@xml/voiceinput_trigger" />
复制代码
完成上述步骤后,建立一个叫voiceinput_trigger的xml档,内容复制下方贴上
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <trigger keyword="@string/voice_trigger">

  3.    
  4.     <!--other voice input -->
  5. <!--
  6.     <input prompt="@string/gesturedemo_voice_prompt" />
  7. -->

  8. <!-- what a need in my app, if not access,it will disable this app -->
  9. <!--
  10.     <constraints camera="true" network="true" microphone="true" />
  11.     <constraints network="true" microphone="true" />
  12. -->

  13. </trigger>
复制代码
将这个 voiceinput_trigger.xml 放入res/xml 里(如果没有这个资料夹自己建一个)
在res/values/strings.xml加入进入点,app name请填入你自己的app name
  1. <string name="voice_trigger">app name</string>
复制代码
完成后选择要发布的装置~请接上你的Glass,如果SDK有正确安装应该是会找到如下

9.jpg


按下确定~大功告成,程序就会Compiler到你的Glass中,可以用点选或语音(当然是英文)的方式启动你写好的APP囉,如果你使用本教学中的触控案例,你会看到当手碰到测版的时候画面显示作标的变化值,剩下的就交由各位自行发展啦~
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3.     package="com.Company.GoogleGlassInputSample"
  4.     android:installLocation="preferExternal"
  5.     android:theme="@android:style/Theme.NoTitleBar"
  6.     android:versionCode="1"
  7.     android:versionName="1.0" >

  8.     <supports-screens
  9.         android:anyDensity="true"
  10.         android:largeScreens="true"
  11.         android:normalScreens="true"
  12.         android:smallScreens="true"
  13.         android:xlargeScreens="true" />

  14.     <application
  15.         android:icon="@drawable/app_icon"
  16.         android:label="@string/app_name" >
  17.         <activity
  18.             android:name="com.Company.GoogleGlassInputSample.UnityPlayerNativeActivity"
  19.             android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale"
  20.             android:label="@string/app_name"
  21.             android:launchMode="singleTask"
  22.             android:theme="@android:style/Theme.DeviceDefault"
  23.             android:screenOrientation="landscape" >
  24.             <intent-filter>
  25.                 <action android:name="com.google.android.glass.action.VOICE_TRIGGER" />
  26.             </intent-filter>

  27.             <meta-data
  28.                 android:name="unityplayer.UnityActivity"
  29.                 android:value="true" />
  30.             <meta-data
  31.                 android:name="unityplayer.ForwardNativeEventsToDalvik"
  32.                 android:value="false" />
  33.             
  34.             <meta-data
  35.                 android:name="com.google.android.glass.VoiceTrigger"
  36.                 android:resource="@xml/voiceinput_trigger" />
  37.         </activity>
  38.     </application>
  39. <uses-permission android:name="com.google.android.glass.permission.DEVELOPMENT"/>
  40.     <uses-sdk
  41.         android:minSdkVersion="19"
  42.         android:targetSdkVersion="20" />

  43.     <uses-feature android:glEsVersion="0x00020000" />

  44. </manifest>
复制代码
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

100

主题

3

听众

7683

积分

高级设计师

Rank: 6Rank: 6

纳金币
2378
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2014-11-7 20:55:00 |只看该作者
good to lean
回复

使用道具 举报

115

主题

3

听众

5676

积分

高级设计师

Rank: 6Rank: 6

纳金币
7268
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

板凳
发表于 2014-11-7 22:37:59 |只看该作者
Thanks for sharing this one !
回复

使用道具 举报

hyui    

1

主题

2

听众

6671

积分

高级设计师

Rank: 6Rank: 6

纳金币
2715
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

地板
发表于 2014-11-7 23:43:17 |只看该作者
good for fun
回复

使用道具 举报

16

主题

5

听众

4304

积分

中级设计师

Rank: 5Rank: 5

纳金币
1
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

5#
发表于 2014-11-8 02:23:17 |只看该作者
Thanks for sharing this one !
回复

使用道具 举报

0

主题

2

听众

1346

积分

助理设计师

Rank: 4

纳金币
505
精华
0
6#
发表于 2014-11-14 15:41:05 |只看该作者
赞一个 长知识了 ! 谢谢指导
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-5-4 13:32 , Processed in 0.103943 second(s), 34 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部