//-------------------------------------------------------------------------------- private IEnumerator Initialize() { AndroidDebug.Logd(TAG, "Initialize:"); if (AndroidUtils.CheckAndroidVersion(28)) { yield return(AndroidUtils.GrantCameraPermission((string permission, AndroidUtils.PermissionGrantResult result) => { AndroidDebug.Logd(TAG, "Initialize:" + result + "-" + permission); switch (result) { case AndroidUtils.PermissionGrantResult.PERMISSION_GRANT: InitPlugin(); break; case AndroidUtils.PermissionGrantResult.PERMISSION_DENY: if (AndroidUtils.ShouldShowRequestPermissionRationale(AndroidUtils.PERMISSION_CAMERA)) { //未能取得权限 //必须显示FIXME说明用对话框等 } break; case AndroidUtils.PermissionGrantResult.PERMISSION_DENY_AND_NEVER_ASK_AGAIN: break; } })); } else { InitPlugin(); } yield break; }
/** * onResume活动 */ IEnumerator OnResumeEvent() { AndroidDebug.Logd(TAG, "onResume活动1:" + AndroidUtils.isPermissionRequesting + "-" + AndroidUtils.CheckAndroidVersion(28)); AndroidDebug.Logd(TAG, "onResume活动2:" + AndroidUtils.CheckAndroidVersion(28)); AndroidDebug.Logd(TAG, "onResume活动3:" + "-" + AndroidUtils.HasPermission(AndroidUtils.PERMISSION_CAMERA)); if (!AndroidUtils.isPermissionRequesting && AndroidUtils.CheckAndroidVersion(28) && !AndroidUtils.HasPermission(AndroidUtils.PERMISSION_CAMERA)) { AndroidDebug.Logd(TAG, "onResume活动:" + AndroidUtils.isPermissionRequesting); yield return(Initialize()); } AndroidDebug.Logd(TAG, "onResume活动3:" + "-" + cameraInfos.Count); KeyValuePair <string, CameraInfo>?found = null; foreach (var elm in cameraInfos) { if (elm.Value.activeCameraId == 0) { //有附接但未打开的设备时 found = elm; break; } } if (found != null) { //有附接但未打开的设备时 var deviceName = found?.Key; if (!AndroidUtils.isPermissionRequesting) { //不在请求权限时 RequestUsbPermission(deviceName); } else if (HasUsbPermission(deviceName)) { //已经有权限时 AndroidUtils.isPermissionRequesting = false; OnEventPermission(deviceName); } } yield break; }
//-------------------------------------------------------------------------------- /** * プラグインを初期化 * パーミッションの確認を行って取得できれば実際のプラグイン初期化処理#InitPluginを呼び出す */ private IEnumerator Initialize() { #if (!NDEBUG && DEBUG && ENABLE_LOG) Console.WriteLine($"{TAG}Initialize:"); #endif if (AndroidUtils.CheckAndroidVersion(28)) { yield return(AndroidUtils.GrantCameraPermission((string permission, AndroidUtils.PermissionGrantResult result) => { #if (!NDEBUG && DEBUG && ENABLE_LOG) Console.WriteLine($"{TAG}OnPermission:{permission}={result}"); #endif switch (result) { case AndroidUtils.PermissionGrantResult.PERMISSION_GRANT: InitPlugin(); break; case AndroidUtils.PermissionGrantResult.PERMISSION_DENY: if (AndroidUtils.ShouldShowRequestPermissionRationale(AndroidUtils.PERMISSION_CAMERA)) { // パーミッションを取得できなかった // FIXME 説明用のダイアログ等を表示しないといけない } break; case AndroidUtils.PermissionGrantResult.PERMISSION_DENY_AND_NEVER_ASK_AGAIN: break; } })); } else { InitPlugin(); } yield break; }
/** * onResumeイベント */ IEnumerator OnResumeEvent() { #if (!NDEBUG && DEBUG && ENABLE_LOG) Console.WriteLine($"{TAG}OnResumeEvent:" + $"isPermissionRequesting={AndroidUtils.isPermissionRequesting}"); #endif if (!AndroidUtils.isPermissionRequesting && AndroidUtils.CheckAndroidVersion(28) && !AndroidUtils.HasPermission(AndroidUtils.PERMISSION_CAMERA)) { yield return(Initialize()); } KeyValuePair <string, CameraInfo>?found = null; foreach (var elm in cameraInfos) { if (elm.Value.activeCameraId == 0) { // アタッチされたけどオープンされていない機器があるとき found = elm; break; } } if (found != null) { // アタッチされたけどオープンされていない機器があるとき var deviceName = found?.Key; if (!AndroidUtils.isPermissionRequesting) { // パーミッション要求中ではないとき RequestUsbPermission(deviceName); } else if (HasUsbPermission(deviceName)) { // すでにパーミッションがあるとき AndroidUtils.isPermissionRequesting = false; OnEventPermission(deviceName); } } yield break; }