Skip to content

Commit 5e631da

Browse files
committed
v1.6.2
Updated NatCorder version to 1.6.2.
1 parent d18c99d commit 5e631da

File tree

4 files changed

+107
-76
lines changed

4 files changed

+107
-76
lines changed

Assets/NatCorderWithOpenCVForUnityExample/NatCorderWithOpenCVForUnityExample.cs

Lines changed: 21 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -22,77 +22,50 @@ void Awake ()
2222
// Use this for initialization
2323
IEnumerator Start ()
2424
{
25-
#if UNITY_ANDROID && !UNITY_EDITOR
26-
yield return RequestAndroidPermission ("android.permission.WRITE_EXTERNAL_STORAGE");
27-
yield return RequestAndroidPermission ("android.permission.CAMERA");
28-
yield return RequestAndroidPermission ("android.permission.RECORD_AUDIO");
29-
#endif
30-
3125
exampleTitle.text = "NatCorderWithOpenCVForUnity Example " + Application.version;
3226

3327
versionInfo.text = OpenCVForUnity.CoreModule.Core.NATIVE_LIBRARY_NAME + " " + OpenCVForUnity.UnityUtils.Utils.getVersion () + " (" + OpenCVForUnity.CoreModule.Core.VERSION + ")";
3428
versionInfo.text += " / UnityEditor " + Application.unityVersion;
3529
versionInfo.text += " / ";
3630

37-
#if UNITY_EDITOR
31+
#if UNITY_EDITOR
3832
versionInfo.text += "Editor";
39-
#elif UNITY_STANDALONE_WIN
33+
#elif UNITY_STANDALONE_WIN
4034
versionInfo.text += "Windows";
41-
#elif UNITY_STANDALONE_OSX
35+
#elif UNITY_STANDALONE_OSX
4236
versionInfo.text += "Mac OSX";
43-
#elif UNITY_STANDALONE_LINUX
37+
#elif UNITY_STANDALONE_LINUX
4438
versionInfo.text += "Linux";
45-
#elif UNITY_ANDROID
39+
#elif UNITY_ANDROID
4640
versionInfo.text += "Android";
47-
#elif UNITY_IOS
41+
#elif UNITY_IOS
4842
versionInfo.text += "iOS";
49-
#elif UNITY_WSA
43+
#elif UNITY_WSA
5044
versionInfo.text += "WSA";
51-
#elif UNITY_WEBGL
45+
#elif UNITY_WEBGL
5246
versionInfo.text += "WebGL";
53-
#endif
47+
#endif
5448
versionInfo.text += " ";
55-
#if ENABLE_MONO
49+
#if ENABLE_MONO
5650
versionInfo.text += "Mono";
57-
#elif ENABLE_IL2CPP
51+
#elif ENABLE_IL2CPP
5852
versionInfo.text += "IL2CPP";
59-
#elif ENABLE_DOTNET
53+
#elif ENABLE_DOTNET
6054
versionInfo.text += ".NET";
61-
#endif
55+
#endif
6256

6357
scrollRect.verticalNormalizedPosition = verticalNormalizedPosition;
6458

65-
yield return null;
66-
}
6759

68-
#if UNITY_ANDROID && !UNITY_EDITOR
69-
private IEnumerator RequestAndroidPermission(string permission)
70-
{
71-
if (!RuntimePermissionHelper.HasPermission(permission))
72-
{
73-
// Permission is not granted
74-
// Should we show an explanation?
75-
if (RuntimePermissionHelper.ShouldShowRequestPermissionRationale(permission))
76-
{
77-
// Show an explanation to the user *asynchronously* -- don't block
78-
// this thread waiting for the user's response! After the user
79-
// sees the explanation, try again to request the permission.
80-
RuntimePermissionHelper.RequestPermission(new string[] { permission });
81-
}
82-
else
83-
{
84-
// No explanation needed; request the permission
85-
RuntimePermissionHelper.RequestPermission(new string[] { permission });
86-
}
87-
}
88-
else
89-
{
90-
// Permission has already been granted
91-
}
92-
93-
yield return new WaitForSeconds(0.5f);
60+
#if (UNITY_IOS || UNITY_ANDROID) && !UNITY_EDITOR
61+
RuntimePermissionHelper runtimePermissionHelper = GetComponent<RuntimePermissionHelper>();
62+
yield return runtimePermissionHelper.hasUserAuthorizedCameraPermission();
63+
yield return runtimePermissionHelper.hasUserAuthorizedMicrophonePermission();
64+
yield return runtimePermissionHelper.hasUserAuthorizedExternalStorageWritePermission();
65+
#endif
66+
67+
yield break;
9468
}
95-
#endif
9669

9770
// Update is called once per frame
9871
void Update ()
Binary file not shown.
Lines changed: 85 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,116 @@
11
using System.Collections;
2-
using System.Collections.Generic;
32
using UnityEngine;
43

54
namespace NatCorderWithOpenCVForUnityExample
65
{
7-
public class RuntimePermissionHelper
6+
public class RuntimePermissionHelper : MonoBehaviour
87
{
9-
private RuntimePermissionHelper ()
8+
9+
public virtual IEnumerator hasUserAuthorizedCameraPermission()
1010
{
11+
#if UNITY_IOS && UNITY_2018_1_OR_NEWER
12+
UserAuthorization mode = UserAuthorization.WebCam;
13+
if (!Application.HasUserAuthorization (mode)) {
14+
yield return RequestUserAuthorization (mode);
15+
}
16+
yield return Application.HasUserAuthorization (mode);
17+
#elif UNITY_ANDROID && UNITY_2018_3_OR_NEWER
18+
string permission = UnityEngine.Android.Permission.Camera;
19+
if (!UnityEngine.Android.Permission.HasUserAuthorizedPermission(permission))
20+
{
21+
yield return RequestUserPermission(permission);
22+
}
23+
yield return UnityEngine.Android.Permission.HasUserAuthorizedPermission(permission);
24+
#else
25+
yield return true;
26+
#endif
1127
}
1228

13-
private static AndroidJavaObject GetActivity ()
29+
public virtual IEnumerator hasUserAuthorizedMicrophonePermission()
1430
{
15-
using (var UnityPlayer = new AndroidJavaClass ("com.unity3d.player.UnityPlayer")) {
16-
return UnityPlayer.GetStatic<AndroidJavaObject> ("currentActivity");
31+
#if UNITY_IOS && UNITY_2018_1_OR_NEWER
32+
UserAuthorization mode = UserAuthorization.Microphone;
33+
if (!Application.HasUserAuthorization (mode)) {
34+
yield return RequestUserAuthorization (mode);
35+
}
36+
yield return Application.HasUserAuthorization (mode);
37+
#elif UNITY_ANDROID && UNITY_2018_3_OR_NEWER
38+
string permission = UnityEngine.Android.Permission.Microphone;
39+
if (!UnityEngine.Android.Permission.HasUserAuthorizedPermission(permission))
40+
{
41+
yield return RequestUserPermission(permission);
1742
}
43+
yield return UnityEngine.Android.Permission.HasUserAuthorizedPermission(permission);
44+
#else
45+
yield return true;
46+
#endif
1847
}
1948

20-
private static bool IsAndroidMOrGreater ()
49+
public virtual IEnumerator hasUserAuthorizedExternalStorageWritePermission()
2150
{
22-
using (var VERSION = new AndroidJavaClass ("android.os.Build$VERSION")) {
23-
return VERSION.GetStatic<int> ("SDK_INT") >= 23;
51+
#if UNITY_ANDROID && UNITY_2018_3_OR_NEWER
52+
string permission = UnityEngine.Android.Permission.ExternalStorageWrite;
53+
if (!UnityEngine.Android.Permission.HasUserAuthorizedPermission(permission))
54+
{
55+
yield return RequestUserPermission(permission);
2456
}
57+
yield return UnityEngine.Android.Permission.HasUserAuthorizedPermission(permission);
58+
#else
59+
yield return true;
60+
#endif
2561
}
2662

27-
public static bool HasPermission (string permission)
63+
#if (UNITY_IOS && UNITY_2018_1_OR_NEWER) || (UNITY_ANDROID && UNITY_2018_3_OR_NEWER)
64+
protected bool isUserRequestingPermission;
65+
66+
protected virtual IEnumerator OnApplicationFocus(bool hasFocus)
2867
{
29-
if (IsAndroidMOrGreater ()) {
30-
using (var activity = GetActivity ()) {
31-
return activity.Call<int> ("checkSelfPermission", permission) == 0;
32-
}
33-
}
68+
yield return null;
3469

35-
return true;
70+
if (isUserRequestingPermission && hasFocus)
71+
isUserRequestingPermission = false;
3672
}
3773

38-
public static bool ShouldShowRequestPermissionRationale (string permission)
74+
#if UNITY_IOS
75+
protected virtual IEnumerator RequestUserAuthorization(UserAuthorization mode)
3976
{
40-
if (IsAndroidMOrGreater ()) {
41-
using (var activity = GetActivity ()) {
42-
return activity.Call<bool> ("shouldShowRequestPermissionRationale", permission);
77+
isUserRequestingPermission = true;
78+
yield return Application.RequestUserAuthorization(mode);
79+
80+
float timeElapsed = 0;
81+
while (isUserRequestingPermission)
82+
{
83+
if (timeElapsed > 0.25f){
84+
isUserRequestingPermission = false;
85+
yield break;
4386
}
44-
}
87+
timeElapsed += Time.deltaTime;
4588

46-
return false;
89+
yield return null;
90+
}
91+
yield break;
4792
}
48-
49-
public static void RequestPermission (string[] permissiions)
93+
#elif UNITY_ANDROID
94+
protected virtual IEnumerator RequestUserPermission(string permission)
5095
{
51-
if (IsAndroidMOrGreater ()) {
52-
using (var activity = GetActivity ()) {
53-
activity.Call ("requestPermissions", permissiions, 0);
96+
isUserRequestingPermission = true;
97+
UnityEngine.Android.Permission.RequestUserPermission(permission);
98+
99+
float timeElapsed = 0;
100+
while (isUserRequestingPermission)
101+
{
102+
if (timeElapsed > 0.25f)
103+
{
104+
isUserRequestingPermission = false;
105+
yield break;
54106
}
107+
timeElapsed += Time.deltaTime;
108+
109+
yield return null;
55110
}
111+
yield break;
56112
}
113+
#endif
114+
#endif
57115
}
58116
}

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
* Anddroid (Pixel) / iOS (iPhone8, iPhone6s)
99
* Unity >= 2018.4.7f1(LTS)+
1010
* Scripting backend MONO / IL2CPP
11-
* [NatCorder - Video Recording API](https://assetstore.unity.com/packages/tools/integration/natcorder-video-recording-api-102645?aid=1011l4ehR) 1.6.1
11+
* [NatCorder - Video Recording API](https://assetstore.unity.com/packages/tools/integration/natcorder-video-recording-api-102645?aid=1011l4ehR) 1.6.2
1212
* [NatShare - Mobile Sharing API](https://assetstore.unity.com/packages/tools/integration/natshare-mobile-sharing-api-117705?aid=1011l4ehR) 1.1f3+
1313
* [OpenCV for Unity](https://assetstore.unity.com/packages/tools/integration/opencv-for-unity-21088?aid=1011l4ehR) 2.3.6+
1414

0 commit comments

Comments
 (0)