Google Cardboard 虚拟现实眼镜开发技巧(二)之保持手机常亮
快速解决Android与Ios平台的屏幕常亮问题
大家知道我们使用Google的Cardboard为基础去开发虚拟现实应用,是需要把手机放置在CardBoard中或者是形形色色的各种眼镜盒,如暴风魔镜中,然后戴上眼镜去使用虚拟现实应用,欣赏模型也好,看全景视频也好,玩体感游戏也好,没有人希望在使用过程中被频频的手机自动熄屏所打扰,所以自动熄屏这个问题是开发AR和VR应用必须解决的一个问题。
以安卓为例,很多同学可能会去用Unity调用Android JAVA(调用Android部分Jar包)或者将Unity打包为Android程序,再从安卓的角度去申请权限,限制系统黑屏,但是如果应用本身不需要去调用Android Java做深入开发,仅仅为了这个保持手机常亮而去这么做,以至于牺牲掉可移植性,与易测试性,我认为这是非常不值得的。用过Unity去调用Android的同学就会知道,无论是上面哪种结合Android开发的方法,都会让开发测试过程非常的耗时,一次编译打包安装的过程简直繁琐费时至极,以Unity调用Android JAVA为例,一次测试过程需要将安卓src部分打成jar包,复制jar包到Unity里,如果JNI部分有修改,还要复制.so库到相应的位置,再之后build apk,打包好之后复制到手机,再去测试看logcat,一次测试可能要好几分钟,而且消磨人的耐性。再也没法愉快地在Unity Editer里测试,看调试信息了。所以如果没有必要的需求必须用Unity调用JAVA或者C/C++,能在Unity中完成的工作还是在Unity中完成比较好。
所幸Unity提供了去消灭熄屏的接口,而且使用非常简单,所以下面我们就看一下在Android平台和IOS平台如何快速的去解决这个问题。
Android平台的熄屏问题解决
Screen.sleepTimeout = SleepTimeout.NeverSleep;
仅仅需要让这行C#代码在某个场景的某个脚本中执行就好了,这里需要注意的是场景问题,比如这行代码在游戏进行的场景中执行过了,但是没有在计分场景执行,有可能在计分场景就会熄屏,然后VR用户就不得不从眼镜中掏出手机,无奈的再按一下开机键了。
IOS平台的熄屏问题解决
iPhoneSettings.screenCanDarken = false;
我本是不是苹果用户,,,从没有测试过苹果手机,所以这里我就不乱说了,反正官网上是这么写的。。。
结语
写虚拟现实眼镜开发技巧这个系列的初衷是想能给大家带来实质性的帮助,因为不可能讲到面面俱到,所以摘出一些大家都会遇到的问题来叙述,可能篇幅短了一些,但是一堆东西揉在一起也没有什么主题,所以只能篇幅短一点了,还请大家见谅。关于CardBoard虚拟现实眼镜开发的知识,之前已经我已经写了虚拟现实开发初步系列的1-4篇来帮助大家入门,英文的API也从长城网外的谷歌官网搬运过来了,我还自己翻译了一篇中文版的文档,以上内容都在我博客的分类和专栏中,大家可以自己去翻阅,希望这些内容能帮助到大家~