Cardboard虚拟现实开发技巧(二)之保持手机常亮

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也从长城网外的谷歌官网搬运过来了,我还自己翻译了一篇中文版的文档,以上内容都在我博客的分类和专栏中,大家可以自己去翻阅,希望这些内容能帮助到大家~

时间: 2024-10-23 22:16:39

Cardboard虚拟现实开发技巧(二)之保持手机常亮的相关文章

Cardboard虚拟现实开发技巧(一)之放置一个固定在视野中的物体

Google Cardboard 虚拟现实眼镜开发技巧(一)之放置一个固定在视野中的物体 利用CardboardMain下的Head轻松放置一个固定在视野中的物体 大家知道在游戏开发中,我们经常会需要放置一些操作面板啊,血量槽啊,比如CS中的枪械,子弹,血量等等,这些UI因素是应该永远显示在用户视野当中的,而不是一转头就看不到自己的血量了. 这个问题在传统的Unity游戏开发中自然是小菜一碟,但是在虚拟现实应用里就不一样了,我们的手机屏幕被分成了两部分,所以这些UI也应该是相应的分离显示,而如果

Access数据库开发技巧(二)

窗体.查询.报表.宏的联合使用 将窗体.查询.报表.宏联合使用可以解决许多问题,是一项重要的技巧. 1.从窗体中获得查询中的条件 对于这个问题这里以成绩表的打印为例来说明.我们要打印不同班级的成绩表,首先建立相应报表的查询,在查询中的班级字段下的条件中输入条件:Between [forms]![打印表格]![开始班号] And [forms]![打印表格]![结束班号].然后再建立一个"打印表格"窗体,在窗体中添加两个组合框控件,即"开始班号"."结束班号

C#开发微信 二维码鼠标滑动 图像显示隐藏效果(推荐)_实用技巧

客户端微信在二维码状态下,鼠标滑过,会有一张手机的图片滑动滑出,从隐藏到显示,从显示到隐藏. 思路很简单:1.设置透明度:2.给个移动的位移 先看下做的效果 整体代码也不难,就是给Image控件设置动画效果. <Grid x:Name="grid_content" Background="WhiteSmoke" Grid.Row="1"> <Grid.Triggers> <EventTrigger RoutedEve

《Unity虚拟现实开发实战》——第1章,第1.2节头戴式显示器的类型

1.2头戴式显示器的类型目前,虚拟现实头盔显示器有两个基本分类-桌面VR和移动VR.1.2.1桌面VR对于桌面VR(或控制台VR),你的头盔是一个外围设备,同时它还有一台更强大的计算机作为主设备用于处理大量的图形图像.这台计算机可以是一台Windows主机.MAC.Linux或者游戏主机.大多数情况下,头盔通过电线连接到计算机,游戏运行在远程机器上,而头盔显示器(Head-mounted Display,HMD)是具有动作感应输入功能的外围显示设备.术语"桌面"有些用词不当,因为它很有

Java 2D开发技巧之“灯光与阴影”

一.引言 在本文中,我们将向你展示如何为扁平形状添加一种灯光效果以实现一种类3D外观. 也许你比较满意于自己的文字表达能力,但一幅图片往往能够产生更好的效果.对于图形处理来说,也是如此:不妨请参考一下图1中的两种图形.在本文中,我将向你展示如何克服左边扁平形状所带来的烦恼而以一种更为光滑的更具舒服感的形状代替. 开发技巧之"灯光与阴影"-vray灯光阴影虚化"> 图1.普通扁平形状与施加Java 2D效果后的形状 二.实现技术分析 借助于适当的颜色,你可以使用本文中介绍

android-请问在Android开发中如何只获得手机桌面上的App列表

问题描述 请问在Android开发中如何只获得手机桌面上的App列表 我现在能够获得手机中安装的所有App列表,但我只想获得手机桌面上的App列表,请问应该如何解决? 解决方案 第一步:建立基本数据:PakageMod.java public class PakageMod { public String pakageName;//应用的包名 public String appName;//应用的名称 public Drawable icon;//应用图标 public PakageMod()

关于Gradle的日常开发技巧的总结

本文讲的是关于Gradle的日常开发技巧的总结,Gradle是Android Studio中默认的构建系统.Gradle 采用了 Groovy 语言作为主要的脚本语言.我们app项目的 build.gradle 和APP Moudle里的build.gradle文件,就是一个 Groovy 类.接下来让我就介绍下Gradle的基本功能和高级技巧. 基本用法 apply plugin: 'com.android.application'    android {      compileSdkVe

AppleWatch开发入门二——界面布局

AppleWatch开发入门二--界面布局 一.简介         在iphone开发中,最基本的布局方式是通过frame,将控件的位置和大小固定在屏幕上,后来,由于手机屏幕的尺寸有了略微变化,有了autoresizing的布局框架,我们可以设置子视图随父视图的改变做一些相应的变化,再后来,iphone的尺寸与分辨率也越来越多,适配各个屏幕也成为了iOS开发者遇到的新的问题,幸运的是,autolayout机制的出现,大大减小了开发者在适配方面的成本.以上提到的两种布局方式,在以前博客中有讨论:

Android ROM开发(二)——ROM架构以及Updater-Script脚本分析,常见的Status错误解决办法

Android ROM开发(二)--ROM架构以及Updater-Script脚本分析,常见的Status错误解决办法 怪自己二了,写好的不小心弄没了,现在只好重新写一些了,上篇简单的配置了一下环境,这里呢,就来讲一下相关的只是点 我们先下载一个ROM,随便下,原理都是差不多的,这里我就下载一个红米Note的MIUI稳定版 1.ROM结构 ROM根据厂商的定制可能有所不同,但是大体是不变的 data 内置一些软件 META-INF 脚本文件 update-binary 二进制文件 updater