vuforia 中摄像机的开启与关闭

摘要:
本文主要解释Unity在Vuforia开发过程中遇到的问题,例如本地呼叫摄像头上的坑~ Unity中的呼叫设备摄像头打开或关闭,或者交换机扫描识别问题~让我们先谈谈我们访问过的坑,然后是解决方案,或者是目前尚未解决的问题。

本文主要讲解的是Unity对Vuforia的开发中在原生调用摄像头上遇到的坑~Unity中调用设备摄像头打开或则关闭,或则开关扫描识别问题等等一些情况~ 下面先说说趟过的坑,再说说解决办法,或则目前没有解决的问题。



先说说情况,移动端App的iOS的项目中有三个界面,其中一个就是扫描界面,扫面界面当让是Unity对Vuforia的开发导出的工程融合在原生的项目中的~当我程序退出扫描界面后Unity和Vuforia应该处于暂停状态OnPause,笔者研究了一段时间,在iOS中使用UnityInterface.h中暴露的暂停接口根本就没有让扫描暂停~如下图
vuforia 中摄像机的开启与关闭第1张
笔者尝试了一次又一次的interface中的方法,相机就根本不能暂停,,原来童话里都是骗人的~可能 有人会想到暂停不了也没有什么大不了的 吧~ 我研究了一下国内的App,是有几款App没有暂停~例如幻视,,问题又来了,,既然相机不能暂停就不让他暂停呗~ 可是我们的项目中有这样一个需求,见下图~
vuforia 中摄像机的开启与关闭第2张
拍照功能~扫描界面不能暂停Camera,其他界面现在要调用Camera,,做过移动端开发的都知道,,Camera是实例化出来的,而且是单例,,如果再一次实例化这时候,程序 ~ 崩~
所以不把 摄像头暂停肯定不行~ 这时候笔者通过UnityInterface.h 的方法是Camera 暂停了,,这时候~ 新的问题又出来了,,通过这样的方法使Camera暂停了,可是Vuforia还是在继续调用摄像头再继续扫面,,,虽然Camera 是关闭了,界面上看不到,这时候其实Vuforia还是在调用摄像头继续扫面,这时候~ 笔者想到的唯一办法就是 通过Unity内部去控制Vuforia,再向原生暴露需要调用的接口~ 所以有了以下方法~
解决办法
[C#]纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// 关闭相机
publicvoidCloseCameraDevice ()
{
CameraDevice.Instance.Stop();
CameraDevice.Instance.Deinit();
}
// 打开相机
publicvoidOpenCameraDevice ()
{
CameraDevice.Instance.Init(CameraDevice.CameraDirection.CAMERA_DEFAULT);
CameraDevice.Instance.Start();
}
// 关闭识别
publicvoidCloseCloudReco ()
{
CloudRecoBehaviour cloudRecoBehaviour = GameObject.FindObjectOfType(typeof(CloudRecoBehaviour))asCloudRecoBehaviour;
cloudRecoBehaviour.CloudRecoEnabled =false;
}
// 打开识别
publicvoidOpenCloudReco ()
{
CloudRecoBehaviour cloudRecoBehaviour = GameObject.FindObjectOfType(typeof(CloudRecoBehaviour))asCloudRecoBehaviour;
cloudRecoBehaviour.CloudRecoEnabled =true;
}

上面这些方法是在Unity里面实现的,写在一个脚本里,挂在一个GameObject上供原生调用~
后来解决的坑~
在扫描界面打开闪关灯,因为扫描界面Unity调用了Camera,安坐的闪关灯是通过实例化相机来打开的~这时候Android拿不到Camera,因为Unity把Camera暂用了,,在扫描界面不能打开闪关灯~ 解决方法~如下
[C#]纯文本查看 复制代码
1
2
3
4
5
6
publicvoidOpenFlash () {
CameraDevice.Instance.SetFlashTorchMode (true);
}
publicvoidCloseFlash () {
CameraDevice.Instance.SetFlashTorchMode (false);
}

免责声明:文章转载自《vuforia 中摄像机的开启与关闭》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[转]EntityFramework Core技术线路(EF7已经更名为EF Core,并于2016年6月底发布)ilmerge命令解析和实例下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Unity里面的自动寻路(一)

来自:http://www.narkii.com/club/forum.php?mod=viewthread&tid=269146&highlight=Unity%E9%87%8C%E9%9D%A2%E7%9A%84%E8%87%AA%E5%8A%A8%E5%AF%BB%E8%B7%AF             众所周知,自动寻路是所有游戏...

unity3d 导出 Excel

我在unity里需要导出成Excel格式,试了一些方法,其中用c#的com组件的我还没成功不知道该怎么在unity里调用,(如果哪位大哥用别的方法在unity里成功了,可以交流下,最好给我一个小demo(849288321@qq.com),谢谢啦.),不过后来找到了这个org.in2bits.MyXls  ,需要导入这个dll(网上有很多),然后用着还挺好...

Unity多语言本地化改进版

简介 之前捣鼓过一个通过csv配置游戏多语言支持的小工具,但是发现使用过程中,通过notepad++去进行转码很不方便,并且直接将配置的csv不加密的放在游戏中心里感觉不是很踏实 于是乎~~ 新的方案 1.在PC/MAC平台上解析多语言配置,也就是editor运行环境中解析csv或者excel 2.通过在Editor运行过程中生成多个语言对象,然后序列化并...

Ubuntu环境下使用Unity3D调用C++编写的Linux so动态链接库

Unity3D已经有了支持Linux的社区版本。要在Linux环境下开发Unity3D程序,首先要安装Linux版的Unity。地址如下: https://forum.unity3d.com/threads/unity-on-linux-release-notes-and-known-issues.350256/#post-2556301 1 制作Linu...

【Unity优化】内存优化

IL2CPP 与 Mono 1)IL2CPP 优缺点 ① 可以调试C++代码 ② 可以使用 Engine code stripping 减少代码大小 ③ 编译慢 ④ 只支持 AOT(Ahead of Time) 2)Mono优缺点 ① 编译快 ② 支持JIT(Just In Time compilation) 3)现状 ① WebGL 和 UWP 只支持...

Unity3d—GUI按钮控件

这是自己的第一篇记录自己的技术文章,自己还是个菜鸟,有错误之处还望大家能够多多指点。1、在project视图中创建C#脚本,我命名为 Gui_test 2、然后打开该脚本,输入以下代码:1 usingSystem.Collections; 2 usingSystem.Collections.Generic; 3 usingUnityEngine; 4...