diff --git a/Assets/MediaPipe/Examples/Scripts/WebCamDeviceSelectorController.cs b/Assets/MediaPipe/Examples/Scripts/WebCamDeviceSelectorController.cs index d0be56f2b..6200ec4f9 100644 --- a/Assets/MediaPipe/Examples/Scripts/WebCamDeviceSelectorController.cs +++ b/Assets/MediaPipe/Examples/Scripts/WebCamDeviceSelectorController.cs @@ -1,18 +1,47 @@ using System.Linq; - +using System.Collections; using UnityEngine; using UnityEngine.UI; +#if UNITY_ANDROID +using UnityEngine.Android; +#endif + public class WebCamDeviceSelectorController : MonoBehaviour { private GameObject sceneDirector; private WebCamDevice[] devices; - void Start() { + IEnumerator Start() { sceneDirector = GameObject.Find("SceneDirector"); var webCamDeviceSelector = GetComponent(); webCamDeviceSelector.onValueChanged.AddListener(delegate { OnValueChanged(webCamDeviceSelector); }); +#if UNITY_ANDROID + if (!Permission.HasUserAuthorizedPermission(Permission.Camera)) { + Permission.RequestUserPermission(Permission.Camera); + yield return new WaitForSeconds(0.1f); + } +#elif UNITY_IOS + if (!Application.HasUserAuthorization(UserAuthorization.WebCam)) { + yield return Application.RequestUserAuthorization(UserAuthorization.WebCam); + } +#endif + +#if UNITY_ANDROID + if (!Permission.HasUserAuthorizedPermission(Permission.Camera)) { + Debug.LogWarning("Not permitted to use Camera"); + yield break; + } +#elif UNITY_IOS + if (!Application.HasUserAuthorization(UserAuthorization.WebCam)) { + Debug.LogWarning("Not permitted to use WebCam"); + yield break; + } +#endif + + yield return new WaitForEndOfFrame(); + ResetOptions(WebCamTexture.devices); } diff --git a/Assets/MediaPipe/Examples/Scripts/WebCamScreenController.cs b/Assets/MediaPipe/Examples/Scripts/WebCamScreenController.cs index 62a505220..53731a61f 100644 --- a/Assets/MediaPipe/Examples/Scripts/WebCamScreenController.cs +++ b/Assets/MediaPipe/Examples/Scripts/WebCamScreenController.cs @@ -3,10 +3,6 @@ using System.Collections; using UnityEngine; -#if UNITY_ANDROID -using UnityEngine.Android; -#endif - public class WebCamScreenController : MonoBehaviour { [SerializeField] int Width = 640; [SerializeField] int Height = 480; @@ -38,27 +34,12 @@ private bool isWebCamReady { } public IEnumerator ResetScreen(WebCamDevice? device) { -#if UNITY_ANDROID - if (!Permission.HasUserAuthorizedPermission(Permission.Camera)) { - Permission.RequestUserPermission(Permission.Camera); - } -#elif UNITY_IOS - if (!Application.HasUserAuthorization(UserAuthorization.WebCam)) { - yield return Application.RequestUserAuthorization(UserAuthorization.WebCam); - } -#endif - if (isPlaying) { webCamTexture.Stop(); webCamTexture = null; pixelData = null; } - if (!Application.HasUserAuthorization(UserAuthorization.WebCam)) { - Debug.LogWarning("Not permitted to use Camera"); - yield break; - } - if (device is WebCamDevice deviceValue) { webCamDevice = deviceValue; } else {