vuforia 中攝像機的開啟與關閉


本文主要講解的是Unity對Vuforia的開發中在原生調用攝像頭上遇到的坑~Unity中調用設備攝像頭打開或則關閉,或則開關掃描識別問題等等一些情況~ 下面先說說趟過的坑,再說說解決辦法,或則目前沒有解決的問題。

 




先說說情況,移動端App的iOS的項目中有三個界面,其中一個就是掃描界面,掃面界面當讓是Unity對Vuforia的開發導出的工程融合在原生的項目中的~當我程序退出掃描界面后Unity和Vuforia應該處於暫停狀態OnPause,筆者研究了一段時間,在iOS中使用UnityInterface.h中暴露的暫停接口根本就沒有讓掃描暫停~如下圖



筆者嘗試了一次又一次的interface中的方法,相機就根本不能暫停,,原來童話里都是騙人的~可能 有人會想到暫停不了也沒有什么大不了的 吧~ 我研究了一下國內的App,是有幾款App沒有暫停~例如幻視,,問題又來了,,既然相機不能暫停就不讓他暫停唄~ 可是我們的項目中有這樣一個需求,見下圖~



拍照功能~掃描界面不能暫停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
// 關閉相機
public  void  CloseCameraDevice ()
{
     CameraDevice.Instance.Stop();
     CameraDevice.Instance.Deinit();
}
 
// 打開相機
public  void  OpenCameraDevice ()
{
     CameraDevice.Instance.Init(CameraDevice.CameraDirection.CAMERA_DEFAULT);
     CameraDevice.Instance.Start();
}
 
// 關閉識別
public  void  CloseCloudReco ()
{
     CloudRecoBehaviour cloudRecoBehaviour = GameObject.FindObjectOfType( typeof (CloudRecoBehaviour))  as  CloudRecoBehaviour;
     cloudRecoBehaviour.CloudRecoEnabled =  false ;
}
 
// 打開識別
public  void  OpenCloudReco ()
{
     CloudRecoBehaviour cloudRecoBehaviour = GameObject.FindObjectOfType( typeof (CloudRecoBehaviour))  as  CloudRecoBehaviour;
     cloudRecoBehaviour.CloudRecoEnabled =  true ;
}


上面這些方法是在Unity里面實現的,寫在一個腳本里,掛在一個GameObject上供原生調用~

后來解決的坑~

在掃描界面打開閃關燈,因為掃描界面Unity調用了Camera,安坐的閃關燈是通過實例化相機來打開的~這時候Android拿不到Camera,因為Unity把Camera暫用了,,在掃描界面不能打開閃關燈~ 解決方法~如下

[C#]  純文本查看 復制代碼
?
 
1
2
3
4
5
6
public  void  OpenFlash () {
     CameraDevice.Instance.SetFlashTorchMode ( true );
}
 
public  void  CloseFlash () {
     CameraDevice.Instance.SetFlashTorchMode ( false );
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM