-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathiOSPluginHelper.cs
94 lines (80 loc) · 2.62 KB
/
iOSPluginHelper.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
using UnityEngine;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System;
public enum AudioSessionCategory : int
{
ambient,
multiRoute,
playAndRecord,
playback,
record,
soloAmbient,
}
public enum AudioSessionMode : int
{
Default,
gameChat,
measurement,
moviePlayback,
spokenAudio,
videoChat,
videoRecording,
voiceChat,
voicePrompt
}
public class iOSAudioManager
{
#region Connection Test Functions
[DllImport("__Internal")]
private static extern void TestConnection();
[DllImport("__Internal")]
private static extern void TestParameterConnection(string mode);
#endregion
[DllImport("__Internal")]
private static extern void SetAudioCategory(string category);
[DllImport("__Internal")]
private static extern void SetAudioMode(string mode);
[DllImport("__Internal")]
private static extern string GetCurrentAudioMode();
[DllImport("__Internal")]
private static extern string GetCurrentAudioCategory();
[DllImport("__Internal")]
private static extern void SetEnableHapticDuringRecording(bool isEnable);
public static void SetIOSAudioMode(AudioSessionMode mode)
{
Debug.Log($"iOSAudioManager : SetIOSAudioMode - {mode.ToString()}");
SetAudioMode(mode.ToString());
}
public static void SetIOSAudioCategory(AudioSessionCategory category)
{
Debug.Log($"iOSAudioManager : SetIOSAudioCategory - {category.ToString()}");
SetAudioCategory(category.ToString());
}
public static AudioSessionMode GetCurrentIOSAudioMode()
{
string currentMode = GetCurrentAudioMode();
var result = Enum.TryParse(typeof(AudioSessionMode), currentMode, out var mode);
if (!result)
{
Debug.LogWarning($"iOSAudioManager : GetCurrentAudioMode - {currentMode} is not a valid AudioSessionMode");
return AudioSessionMode.Default;
}
return (AudioSessionMode)mode;
}
public static AudioSessionCategory GetCurrentIOSAudioCategory()
{
string currentCategory = GetCurrentAudioCategory();
var result = Enum.TryParse(typeof(AudioSessionCategory), currentCategory, out var category);
if (!result)
{
Debug.LogWarning($"iOSAudioManager : GetCurrentAudioCategory - {currentCategory} is not a valid AudioSessionCategory");
return AudioSessionCategory.soloAmbient;
}
return (AudioSessionCategory)category;
}
public static void SetEnableIOSHapticDuringRecording(bool isEnable)
{
SetEnableHapticDuringRecording(isEnable);
}
}