2014-09-30 202 views
4

我已經開發了一款適用於iOS和Android的Vuforia應用,當應用第一次運行時,系統會提示用戶授權使用設備的攝像頭。Unity3d檢查用戶是否已授權設備攝像頭

如果用戶沒有授權相機,當用戶導航到「捕捉」場景時,相機視圖是黑色的。

我看過Untiy3D文檔,發現Application.HasUserAuthorization類,但如果我理解正確,這隻適用於Unity網絡播放器?

如何檢查用戶是否允許在Unity3D(c#)中使用相機。

任何建議將不勝感激! TIA!

回答

1

作爲Android上的用戶,當安裝apk時它會使用相機,一旦我接受它就會收到提示。作爲開發者,我不需要檢查。

這就是我如何使用Vuforia API啓動相機。

CameraDevice.Instance.Stop(); 
CameraDevice.Instance.Init(CameraDevice.CameraDirection.CAMERA_FRONT); 
CameraDevice.Instance.Start(); 

CameraDevice是一個可以調用的單例。

+0

感謝您的回覆@FunctionR,但如果您在安裝APK時不接受,會發生什麼情況?如果我在用戶沒有允許攝像機的情況下打電話給單身人士,他們會再次被提示嗎? – 2014-10-01 06:27:04

+0

如果您在安裝apk時不接受,那麼它不會安裝。 – FunctionR 2014-10-01 06:58:27

+0

我還沒有在Android上進行檢查,但在iOS中,即使用戶不允許攝像頭,它仍會安裝應用程序。我正在尋找一些方法來檢查相機在運行時的權限 – 2014-10-01 07:51:45

0

Application.RequestUserAuthorization顯然適用於任何PC或移動設備相機。我正在使用它以及iPhone上的Unity3D的NatCam插件,並使用以下腳本檢查/提示用戶相機權限。循環while()允許他們花時間給予許可。

int cameraPermission = 0; 

// Use this for initialization 
public override void Start() { 

    if (!Application.HasUserAuthorization (UserAuthorization.WebCam)) { 
     // request camera use 
     Application.RequestUserAuthorization (UserAuthorization.WebCam); 
    } else { 
     cameraPermission = 1; 
    } 

    // if we don't have permission, wait until we do 
    while (cameraPermission != 1) { 
     // wait a sec 
     System.Threading.Thread.Sleep(1000); 
     // if user enables preference 
     if (Application.HasUserAuthorization (UserAuthorization.WebCam)) { 
      // proceed to start app 
      cameraPermission = 1; 
     } 
    } 

    // Start base 
    base.Start(); 
} 
相關問題