capacitor-microphone 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CapacitorMicrophone.podspec +17 -0
- package/Package.swift +28 -0
- package/README.md +71 -0
- package/android/build.gradle +58 -0
- package/android/src/main/AndroidManifest.xml +5 -0
- package/android/src/main/java/com/eddieagvictoria/capacitor_microphone/capacitor_microphonePlugin.java +91 -0
- package/android/src/main/res/.gitkeep +0 -0
- package/dist/docs.json +89 -0
- package/dist/esm/definitions.d.ts +11 -0
- package/dist/esm/definitions.js +2 -0
- package/dist/esm/definitions.js.map +1 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +7 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/web.d.ts +12 -0
- package/dist/esm/web.js +64 -0
- package/dist/esm/web.js.map +1 -0
- package/dist/plugin.cjs.js +78 -0
- package/dist/plugin.cjs.js.map +1 -0
- package/dist/plugin.js +81 -0
- package/dist/plugin.js.map +1 -0
- package/ios/Sources/capacitor_microphonePlugin/capacitor_microphonePlugin.swift +74 -0
- package/ios/Tests/capacitor_microphonePluginTests/capacitor_microphoneTests.swift +15 -0
- package/package.json +80 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
|
|
3
|
+
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
|
|
4
|
+
|
|
5
|
+
Pod::Spec.new do |s|
|
|
6
|
+
s.name = 'CapacitorMicrophone'
|
|
7
|
+
s.version = package['version']
|
|
8
|
+
s.summary = package['description']
|
|
9
|
+
s.license = package['license']
|
|
10
|
+
s.homepage = package['repository']['url']
|
|
11
|
+
s.author = package['author']
|
|
12
|
+
s.source = { :git => package['repository']['url'], :tag => s.version.to_s }
|
|
13
|
+
s.source_files = 'ios/Sources/**/*.{swift,h,m,c,cc,mm,cpp}'
|
|
14
|
+
s.ios.deployment_target = '15.0'
|
|
15
|
+
s.dependency 'Capacitor'
|
|
16
|
+
s.swift_version = '5.1'
|
|
17
|
+
end
|
package/Package.swift
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// swift-tools-version: 5.9
|
|
2
|
+
import PackageDescription
|
|
3
|
+
|
|
4
|
+
let package = Package(
|
|
5
|
+
name: "CapacitorMicrophone",
|
|
6
|
+
platforms: [.iOS(.v15)],
|
|
7
|
+
products: [
|
|
8
|
+
.library(
|
|
9
|
+
name: "CapacitorMicrophone",
|
|
10
|
+
targets: ["capacitor_microphonePlugin"])
|
|
11
|
+
],
|
|
12
|
+
dependencies: [
|
|
13
|
+
.package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", from: "8.0.0")
|
|
14
|
+
],
|
|
15
|
+
targets: [
|
|
16
|
+
.target(
|
|
17
|
+
name: "capacitor_microphonePlugin",
|
|
18
|
+
dependencies: [
|
|
19
|
+
.product(name: "Capacitor", package: "capacitor-swift-pm"),
|
|
20
|
+
.product(name: "Cordova", package: "capacitor-swift-pm")
|
|
21
|
+
],
|
|
22
|
+
path: "ios/Sources/capacitor_microphonePlugin"),
|
|
23
|
+
.testTarget(
|
|
24
|
+
name: "capacitor_microphonePluginTests",
|
|
25
|
+
dependencies: ["capacitor_microphonePlugin"],
|
|
26
|
+
path: "ios/Tests/capacitor_microphonePluginTests")
|
|
27
|
+
]
|
|
28
|
+
)
|
package/README.md
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# capacitor-microphone
|
|
2
|
+
|
|
3
|
+
plugin to use the microphone
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install capacitor-microphone
|
|
9
|
+
npx cap sync
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## API
|
|
13
|
+
|
|
14
|
+
<docgen-index>
|
|
15
|
+
|
|
16
|
+
* [`checkPermission()`](#checkpermission)
|
|
17
|
+
* [`requestPermission()`](#requestpermission)
|
|
18
|
+
* [`checkRequestPermission()`](#checkrequestpermission)
|
|
19
|
+
* [Interfaces](#interfaces)
|
|
20
|
+
|
|
21
|
+
</docgen-index>
|
|
22
|
+
|
|
23
|
+
<docgen-api>
|
|
24
|
+
<!--Update the source file JSDoc comments and rerun docgen to update the docs below-->
|
|
25
|
+
|
|
26
|
+
### checkPermission()
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
checkPermission() => Promise<MicrophonePermissions>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Returns:** <code>Promise<<a href="#microphonepermissions">MicrophonePermissions</a>></code>
|
|
33
|
+
|
|
34
|
+
--------------------
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
### requestPermission()
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
requestPermission() => Promise<MicrophonePermissions>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Returns:** <code>Promise<<a href="#microphonepermissions">MicrophonePermissions</a>></code>
|
|
44
|
+
|
|
45
|
+
--------------------
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
### checkRequestPermission()
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
checkRequestPermission() => Promise<MicrophonePermissions>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Returns:** <code>Promise<<a href="#microphonepermissions">MicrophonePermissions</a>></code>
|
|
55
|
+
|
|
56
|
+
--------------------
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
### Interfaces
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
#### MicrophonePermissions
|
|
63
|
+
|
|
64
|
+
| Prop | Type |
|
|
65
|
+
| ------------------ | -------------------- |
|
|
66
|
+
| **`details`** | <code>string</code> |
|
|
67
|
+
| **`granted`** | <code>boolean</code> |
|
|
68
|
+
| **`status`** | <code>string</code> |
|
|
69
|
+
| **`errorMessage`** | <code>string</code> |
|
|
70
|
+
|
|
71
|
+
</docgen-api>
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
ext {
|
|
2
|
+
junitVersion = project.hasProperty('junitVersion') ? rootProject.ext.junitVersion : '4.13.2'
|
|
3
|
+
androidxAppCompatVersion = project.hasProperty('androidxAppCompatVersion') ? rootProject.ext.androidxAppCompatVersion : '1.7.1'
|
|
4
|
+
androidxJunitVersion = project.hasProperty('androidxJunitVersion') ? rootProject.ext.androidxJunitVersion : '1.3.0'
|
|
5
|
+
androidxEspressoCoreVersion = project.hasProperty('androidxEspressoCoreVersion') ? rootProject.ext.androidxEspressoCoreVersion : '3.7.0'
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
buildscript {
|
|
9
|
+
repositories {
|
|
10
|
+
google()
|
|
11
|
+
mavenCentral()
|
|
12
|
+
}
|
|
13
|
+
dependencies {
|
|
14
|
+
classpath 'com.android.tools.build:gradle:8.13.0'
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
apply plugin: 'com.android.library'
|
|
19
|
+
|
|
20
|
+
android {
|
|
21
|
+
namespace = "com.eddieagvictoria.capacitor_microphone"
|
|
22
|
+
compileSdk = project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 36
|
|
23
|
+
defaultConfig {
|
|
24
|
+
minSdkVersion project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 24
|
|
25
|
+
targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 36
|
|
26
|
+
versionCode 1
|
|
27
|
+
versionName "1.0"
|
|
28
|
+
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
29
|
+
}
|
|
30
|
+
buildTypes {
|
|
31
|
+
release {
|
|
32
|
+
minifyEnabled false
|
|
33
|
+
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
lintOptions {
|
|
37
|
+
abortOnError = false
|
|
38
|
+
}
|
|
39
|
+
compileOptions {
|
|
40
|
+
sourceCompatibility JavaVersion.VERSION_21
|
|
41
|
+
targetCompatibility JavaVersion.VERSION_21
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
repositories {
|
|
46
|
+
google()
|
|
47
|
+
mavenCentral()
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
dependencies {
|
|
52
|
+
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
|
53
|
+
implementation project(':capacitor-android')
|
|
54
|
+
implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion"
|
|
55
|
+
testImplementation "junit:junit:$junitVersion"
|
|
56
|
+
androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion"
|
|
57
|
+
androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion"
|
|
58
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
package com.eddieagvictoria.capacitor_microphone;
|
|
2
|
+
|
|
3
|
+
import com.getcapacitor.JSObject;
|
|
4
|
+
import com.getcapacitor.Plugin;
|
|
5
|
+
import com.getcapacitor.PluginCall;
|
|
6
|
+
import com.getcapacitor.PluginMethod;
|
|
7
|
+
import com.getcapacitor.annotation.CapacitorPlugin;
|
|
8
|
+
|
|
9
|
+
import android.Manifest;
|
|
10
|
+
import com.getcapacitor.Permission;
|
|
11
|
+
import com.getcapacitor.PermissionState;
|
|
12
|
+
|
|
13
|
+
@CapacitorPlugin(
|
|
14
|
+
name = "CapacitorMicrophone",
|
|
15
|
+
permissions = {
|
|
16
|
+
@Permission(
|
|
17
|
+
alias = "microphone",
|
|
18
|
+
strings = { Manifest.permission.RECORD_AUDIO }
|
|
19
|
+
)
|
|
20
|
+
}
|
|
21
|
+
)
|
|
22
|
+
public class CapacitorMicrophonePlugin extends Plugin {
|
|
23
|
+
|
|
24
|
+
@PluginMethod
|
|
25
|
+
public void checkPermission(PluginCall call) {
|
|
26
|
+
PermissionState state = getPermissionState("microphone");
|
|
27
|
+
|
|
28
|
+
JSObject result = new JSObject();
|
|
29
|
+
result.put("granted", state == PermissionState.GRANTED);
|
|
30
|
+
result.put("status",
|
|
31
|
+
state == PermissionState.GRANTED ? "granted" :
|
|
32
|
+
state == PermissionState.DENIED ? "denied" : "prompt"
|
|
33
|
+
);
|
|
34
|
+
result.put("details", "Android checkPermission");
|
|
35
|
+
result.put("errorMessage", "");
|
|
36
|
+
|
|
37
|
+
call.resolve(result);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
@PluginMethod
|
|
41
|
+
public void requestPermission(PluginCall call) {
|
|
42
|
+
if (getPermissionState("microphone") == PermissionState.GRANTED) {
|
|
43
|
+
JSObject result = new JSObject();
|
|
44
|
+
result.put("granted", true);
|
|
45
|
+
result.put("status", "granted");
|
|
46
|
+
result.put("details", "Android permission already granted");
|
|
47
|
+
result.put("errorMessage", "");
|
|
48
|
+
call.resolve(result);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
requestPermissionForAlias("microphone", call, "permissionCallback");
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
@PluginMethod
|
|
56
|
+
public void checkRequestPermission(PluginCall call) {
|
|
57
|
+
PermissionState state = getPermissionState("microphone");
|
|
58
|
+
|
|
59
|
+
if (state == PermissionState.GRANTED) {
|
|
60
|
+
JSObject result = new JSObject();
|
|
61
|
+
result.put("granted", true);
|
|
62
|
+
result.put("status", "granted");
|
|
63
|
+
result.put("details", "Android microphone permission already granted");
|
|
64
|
+
result.put("errorMessage", "");
|
|
65
|
+
call.resolve(result);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (state == PermissionState.DENIED) {
|
|
70
|
+
requestPermissionForAlias("microphone", call, "permissionCallback");
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
requestPermissionForAlias("microphone", call, "permissionCallback");
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
@PermissionCallback
|
|
78
|
+
private void permissionCallback(PluginCall call) {
|
|
79
|
+
boolean granted = getPermissionState("microphone") == PermissionState.GRANTED;
|
|
80
|
+
|
|
81
|
+
JSObject result = new JSObject();
|
|
82
|
+
result.put("granted", granted);
|
|
83
|
+
result.put("status", granted ? "granted" : "denied");
|
|
84
|
+
result.put("details", "Android permission callback");
|
|
85
|
+
result.put("errorMessage", granted ? "" : "User denied microphone permission");
|
|
86
|
+
|
|
87
|
+
call.resolve(result);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
}
|
|
File without changes
|
package/dist/docs.json
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"api": {
|
|
3
|
+
"name": "CapacitorMicrophonePlugin",
|
|
4
|
+
"slug": "capacitormicrophoneplugin",
|
|
5
|
+
"docs": "",
|
|
6
|
+
"tags": [],
|
|
7
|
+
"methods": [
|
|
8
|
+
{
|
|
9
|
+
"name": "checkPermission",
|
|
10
|
+
"signature": "() => Promise<MicrophonePermissions>",
|
|
11
|
+
"parameters": [],
|
|
12
|
+
"returns": "Promise<MicrophonePermissions>",
|
|
13
|
+
"tags": [],
|
|
14
|
+
"docs": "",
|
|
15
|
+
"complexTypes": [
|
|
16
|
+
"MicrophonePermissions"
|
|
17
|
+
],
|
|
18
|
+
"slug": "checkpermission"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"name": "requestPermission",
|
|
22
|
+
"signature": "() => Promise<MicrophonePermissions>",
|
|
23
|
+
"parameters": [],
|
|
24
|
+
"returns": "Promise<MicrophonePermissions>",
|
|
25
|
+
"tags": [],
|
|
26
|
+
"docs": "",
|
|
27
|
+
"complexTypes": [
|
|
28
|
+
"MicrophonePermissions"
|
|
29
|
+
],
|
|
30
|
+
"slug": "requestpermission"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"name": "checkRequestPermission",
|
|
34
|
+
"signature": "() => Promise<MicrophonePermissions>",
|
|
35
|
+
"parameters": [],
|
|
36
|
+
"returns": "Promise<MicrophonePermissions>",
|
|
37
|
+
"tags": [],
|
|
38
|
+
"docs": "",
|
|
39
|
+
"complexTypes": [
|
|
40
|
+
"MicrophonePermissions"
|
|
41
|
+
],
|
|
42
|
+
"slug": "checkrequestpermission"
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
"properties": []
|
|
46
|
+
},
|
|
47
|
+
"interfaces": [
|
|
48
|
+
{
|
|
49
|
+
"name": "MicrophonePermissions",
|
|
50
|
+
"slug": "microphonepermissions",
|
|
51
|
+
"docs": "",
|
|
52
|
+
"tags": [],
|
|
53
|
+
"methods": [],
|
|
54
|
+
"properties": [
|
|
55
|
+
{
|
|
56
|
+
"name": "details",
|
|
57
|
+
"tags": [],
|
|
58
|
+
"docs": "",
|
|
59
|
+
"complexTypes": [],
|
|
60
|
+
"type": "string"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"name": "granted",
|
|
64
|
+
"tags": [],
|
|
65
|
+
"docs": "",
|
|
66
|
+
"complexTypes": [],
|
|
67
|
+
"type": "boolean"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"name": "status",
|
|
71
|
+
"tags": [],
|
|
72
|
+
"docs": "",
|
|
73
|
+
"complexTypes": [],
|
|
74
|
+
"type": "string"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"name": "errorMessage",
|
|
78
|
+
"tags": [],
|
|
79
|
+
"docs": "",
|
|
80
|
+
"complexTypes": [],
|
|
81
|
+
"type": "string"
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
],
|
|
86
|
+
"enums": [],
|
|
87
|
+
"typeAliases": [],
|
|
88
|
+
"pluginConfigs": []
|
|
89
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface CapacitorMicrophonePlugin {
|
|
2
|
+
checkPermission(): Promise<MicrophonePermissions>;
|
|
3
|
+
requestPermission(): Promise<MicrophonePermissions>;
|
|
4
|
+
checkRequestPermission(): Promise<MicrophonePermissions>;
|
|
5
|
+
}
|
|
6
|
+
export interface MicrophonePermissions {
|
|
7
|
+
details: string;
|
|
8
|
+
granted: boolean;
|
|
9
|
+
status: string;
|
|
10
|
+
errorMessage: string;
|
|
11
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"","sourcesContent":["export interface CapacitorMicrophonePlugin {\n checkPermission(): Promise<MicrophonePermissions>;\n requestPermission(): Promise<MicrophonePermissions>;\n checkRequestPermission(): Promise<MicrophonePermissions>;\n}\n\nexport interface MicrophonePermissions {\n details: string;\n granted: boolean;\n status:string;\n errorMessage: string;\n}"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { registerPlugin } from '@capacitor/core';
|
|
2
|
+
const capacitor_microphone = registerPlugin('CapacitorMicrophone', {
|
|
3
|
+
web: () => import('./web').then((m) => new m.capacitor_microphoneWeb()),
|
|
4
|
+
});
|
|
5
|
+
export * from './definitions';
|
|
6
|
+
export { capacitor_microphone };
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIjD,MAAM,oBAAoB,GAAG,cAAc,CAA4B,qBAAqB,EAAE;IAC5F,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,CAAC;CACxE,CAAC,CAAC;AAEH,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,CAAC","sourcesContent":["import { registerPlugin } from '@capacitor/core';\n\nimport type { CapacitorMicrophonePlugin } from './definitions';\n\nconst capacitor_microphone = registerPlugin<CapacitorMicrophonePlugin>('CapacitorMicrophone', {\n web: () => import('./web').then((m) => new m.capacitor_microphoneWeb()),\n});\n\nexport * from './definitions';\nexport { capacitor_microphone };\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { WebPlugin } from '@capacitor/core';
|
|
2
|
+
import type { CapacitorMicrophonePlugin, MicrophonePermissions } from './definitions';
|
|
3
|
+
export declare class capacitor_microphoneWeb extends WebPlugin implements CapacitorMicrophonePlugin {
|
|
4
|
+
echo(options: {
|
|
5
|
+
value: string;
|
|
6
|
+
}): Promise<{
|
|
7
|
+
value: string;
|
|
8
|
+
}>;
|
|
9
|
+
checkPermission(): Promise<MicrophonePermissions>;
|
|
10
|
+
requestPermission(): Promise<MicrophonePermissions>;
|
|
11
|
+
checkRequestPermission(): Promise<MicrophonePermissions>;
|
|
12
|
+
}
|
package/dist/esm/web.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { WebPlugin } from '@capacitor/core';
|
|
2
|
+
export class capacitor_microphoneWeb extends WebPlugin {
|
|
3
|
+
async echo(options) {
|
|
4
|
+
return options;
|
|
5
|
+
}
|
|
6
|
+
async checkPermission() {
|
|
7
|
+
var _a;
|
|
8
|
+
if (!navigator.permissions) {
|
|
9
|
+
return {
|
|
10
|
+
granted: false,
|
|
11
|
+
status: 'prompt',
|
|
12
|
+
details: 'Permissions API not supported',
|
|
13
|
+
errorMessage: '',
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
const result = await navigator.permissions.query({
|
|
18
|
+
name: 'microphone',
|
|
19
|
+
});
|
|
20
|
+
return {
|
|
21
|
+
granted: result.state === 'granted',
|
|
22
|
+
status: result.state,
|
|
23
|
+
details: 'Web checkPermission',
|
|
24
|
+
errorMessage: '',
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
return {
|
|
29
|
+
granted: false,
|
|
30
|
+
status: 'denied',
|
|
31
|
+
details: 'Web checkPermission error',
|
|
32
|
+
errorMessage: (_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : 'Unknown error',
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
async requestPermission() {
|
|
37
|
+
var _a;
|
|
38
|
+
try {
|
|
39
|
+
await navigator.mediaDevices.getUserMedia({ audio: true });
|
|
40
|
+
return {
|
|
41
|
+
granted: true,
|
|
42
|
+
status: 'granted',
|
|
43
|
+
details: 'Web requestPermission',
|
|
44
|
+
errorMessage: '',
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
return {
|
|
49
|
+
granted: false,
|
|
50
|
+
status: 'denied',
|
|
51
|
+
details: 'Web requestPermission',
|
|
52
|
+
errorMessage: (_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : 'User denied microphone permission',
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async checkRequestPermission() {
|
|
57
|
+
const permission = await this.checkPermission();
|
|
58
|
+
if (permission.granted) {
|
|
59
|
+
return permission;
|
|
60
|
+
}
|
|
61
|
+
return this.requestPermission();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,MAAM,OAAO,uBAAwB,SAAQ,SAAS;IACpD,KAAK,CAAC,IAAI,CAAC,OAA0B;QACnC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,eAAe;;QACnB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;YAC3B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,+BAA+B;gBACxC,YAAY,EAAE,EAAE;aACjB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;gBAC/C,IAAI,EAAE,YAA8B;aACrC,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,KAAK,KAAK,SAAS;gBACnC,MAAM,EAAE,MAAM,CAAC,KAAK;gBACpB,OAAO,EAAE,qBAAqB;gBAC9B,YAAY,EAAE,EAAE;aACjB,CAAC;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,2BAA2B;gBACpC,YAAY,EAAE,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,mCAAI,eAAe;aAC9C,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB;;QACrB,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAE3D,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,uBAAuB;gBAChC,YAAY,EAAE,EAAE;aACjB,CAAC;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE,uBAAuB;gBAChC,YAAY,EAAE,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,mCAAI,mCAAmC;aAClE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAEhD,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAClC,CAAC;CACF","sourcesContent":["import { WebPlugin } from '@capacitor/core';\n\nimport type { CapacitorMicrophonePlugin, MicrophonePermissions } from './definitions';\n\nexport class capacitor_microphoneWeb extends WebPlugin implements CapacitorMicrophonePlugin {\n async echo(options: { value: string }): Promise<{ value: string }> {\n return options;\n }\n\n async checkPermission(): Promise<MicrophonePermissions> {\n if (!navigator.permissions) {\n return {\n granted: false,\n status: 'prompt',\n details: 'Permissions API not supported',\n errorMessage: '',\n };\n }\n\n try {\n const result = await navigator.permissions.query({\n name: 'microphone' as PermissionName,\n });\n\n return {\n granted: result.state === 'granted',\n status: result.state,\n details: 'Web checkPermission',\n errorMessage: '',\n };\n } catch (err: any) {\n return {\n granted: false,\n status: 'denied',\n details: 'Web checkPermission error',\n errorMessage: err?.message ?? 'Unknown error',\n };\n }\n }\n\n async requestPermission(): Promise<MicrophonePermissions> {\n try {\n await navigator.mediaDevices.getUserMedia({ audio: true });\n\n return {\n granted: true,\n status: 'granted',\n details: 'Web requestPermission',\n errorMessage: '',\n };\n } catch (err: any) {\n return {\n granted: false,\n status: 'denied',\n details: 'Web requestPermission',\n errorMessage: err?.message ?? 'User denied microphone permission',\n };\n }\n }\n\n async checkRequestPermission(): Promise<MicrophonePermissions> {\n const permission = await this.checkPermission();\n\n if (permission.granted) {\n return permission;\n }\n\n return this.requestPermission();\n }\n}\n\n"]}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var core = require('@capacitor/core');
|
|
4
|
+
|
|
5
|
+
const capacitor_microphone = core.registerPlugin('CapacitorMicrophone', {
|
|
6
|
+
web: () => Promise.resolve().then(function () { return web; }).then((m) => new m.capacitor_microphoneWeb()),
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
class capacitor_microphoneWeb extends core.WebPlugin {
|
|
10
|
+
async echo(options) {
|
|
11
|
+
return options;
|
|
12
|
+
}
|
|
13
|
+
async checkPermission() {
|
|
14
|
+
var _a;
|
|
15
|
+
if (!navigator.permissions) {
|
|
16
|
+
return {
|
|
17
|
+
granted: false,
|
|
18
|
+
status: 'prompt',
|
|
19
|
+
details: 'Permissions API not supported',
|
|
20
|
+
errorMessage: '',
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const result = await navigator.permissions.query({
|
|
25
|
+
name: 'microphone',
|
|
26
|
+
});
|
|
27
|
+
return {
|
|
28
|
+
granted: result.state === 'granted',
|
|
29
|
+
status: result.state,
|
|
30
|
+
details: 'Web checkPermission',
|
|
31
|
+
errorMessage: '',
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
return {
|
|
36
|
+
granted: false,
|
|
37
|
+
status: 'denied',
|
|
38
|
+
details: 'Web checkPermission error',
|
|
39
|
+
errorMessage: (_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : 'Unknown error',
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
async requestPermission() {
|
|
44
|
+
var _a;
|
|
45
|
+
try {
|
|
46
|
+
await navigator.mediaDevices.getUserMedia({ audio: true });
|
|
47
|
+
return {
|
|
48
|
+
granted: true,
|
|
49
|
+
status: 'granted',
|
|
50
|
+
details: 'Web requestPermission',
|
|
51
|
+
errorMessage: '',
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
return {
|
|
56
|
+
granted: false,
|
|
57
|
+
status: 'denied',
|
|
58
|
+
details: 'Web requestPermission',
|
|
59
|
+
errorMessage: (_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : 'User denied microphone permission',
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
async checkRequestPermission() {
|
|
64
|
+
const permission = await this.checkPermission();
|
|
65
|
+
if (permission.granted) {
|
|
66
|
+
return permission;
|
|
67
|
+
}
|
|
68
|
+
return this.requestPermission();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
var web = /*#__PURE__*/Object.freeze({
|
|
73
|
+
__proto__: null,
|
|
74
|
+
capacitor_microphoneWeb: capacitor_microphoneWeb
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
exports.capacitor_microphone = capacitor_microphone;
|
|
78
|
+
//# sourceMappingURL=plugin.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.cjs.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst capacitor_microphone = registerPlugin('CapacitorMicrophone', {\n web: () => import('./web').then((m) => new m.capacitor_microphoneWeb()),\n});\nexport * from './definitions';\nexport { capacitor_microphone };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nexport class capacitor_microphoneWeb extends WebPlugin {\n async echo(options) {\n return options;\n }\n async checkPermission() {\n var _a;\n if (!navigator.permissions) {\n return {\n granted: false,\n status: 'prompt',\n details: 'Permissions API not supported',\n errorMessage: '',\n };\n }\n try {\n const result = await navigator.permissions.query({\n name: 'microphone',\n });\n return {\n granted: result.state === 'granted',\n status: result.state,\n details: 'Web checkPermission',\n errorMessage: '',\n };\n }\n catch (err) {\n return {\n granted: false,\n status: 'denied',\n details: 'Web checkPermission error',\n errorMessage: (_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : 'Unknown error',\n };\n }\n }\n async requestPermission() {\n var _a;\n try {\n await navigator.mediaDevices.getUserMedia({ audio: true });\n return {\n granted: true,\n status: 'granted',\n details: 'Web requestPermission',\n errorMessage: '',\n };\n }\n catch (err) {\n return {\n granted: false,\n status: 'denied',\n details: 'Web requestPermission',\n errorMessage: (_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : 'User denied microphone permission',\n };\n }\n }\n async checkRequestPermission() {\n const permission = await this.checkPermission();\n if (permission.granted) {\n return permission;\n }\n return this.requestPermission();\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":";;;;AACK,MAAC,oBAAoB,GAAGA,mBAAc,CAAC,qBAAqB,EAAE;AACnE,IAAI,GAAG,EAAE,MAAM,mDAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,uBAAuB,EAAE,CAAC;AAC3E,CAAC;;ACFM,MAAM,uBAAuB,SAASC,cAAS,CAAC;AACvD,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE;AACxB,QAAQ,OAAO,OAAO;AACtB,IAAI;AACJ,IAAI,MAAM,eAAe,GAAG;AAC5B,QAAQ,IAAI,EAAE;AACd,QAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;AACpC,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,KAAK;AAC9B,gBAAgB,MAAM,EAAE,QAAQ;AAChC,gBAAgB,OAAO,EAAE,+BAA+B;AACxD,gBAAgB,YAAY,EAAE,EAAE;AAChC,aAAa;AACb,QAAQ;AACR,QAAQ,IAAI;AACZ,YAAY,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;AAC7D,gBAAgB,IAAI,EAAE,YAAY;AAClC,aAAa,CAAC;AACd,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,MAAM,CAAC,KAAK,KAAK,SAAS;AACnD,gBAAgB,MAAM,EAAE,MAAM,CAAC,KAAK;AACpC,gBAAgB,OAAO,EAAE,qBAAqB;AAC9C,gBAAgB,YAAY,EAAE,EAAE;AAChC,aAAa;AACb,QAAQ;AACR,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,KAAK;AAC9B,gBAAgB,MAAM,EAAE,QAAQ;AAChC,gBAAgB,OAAO,EAAE,2BAA2B;AACpD,gBAAgB,YAAY,EAAE,CAAC,EAAE,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,eAAe;AAC3I,aAAa;AACb,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,iBAAiB,GAAG;AAC9B,QAAQ,IAAI,EAAE;AACd,QAAQ,IAAI;AACZ,YAAY,MAAM,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACtE,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,IAAI;AAC7B,gBAAgB,MAAM,EAAE,SAAS;AACjC,gBAAgB,OAAO,EAAE,uBAAuB;AAChD,gBAAgB,YAAY,EAAE,EAAE;AAChC,aAAa;AACb,QAAQ;AACR,QAAQ,OAAO,GAAG,EAAE;AACpB,YAAY,OAAO;AACnB,gBAAgB,OAAO,EAAE,KAAK;AAC9B,gBAAgB,MAAM,EAAE,QAAQ;AAChC,gBAAgB,OAAO,EAAE,uBAAuB;AAChD,gBAAgB,YAAY,EAAE,CAAC,EAAE,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,mCAAmC;AAC/J,aAAa;AACb,QAAQ;AACR,IAAI;AACJ,IAAI,MAAM,sBAAsB,GAAG;AACnC,QAAQ,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE;AACvD,QAAQ,IAAI,UAAU,CAAC,OAAO,EAAE;AAChC,YAAY,OAAO,UAAU;AAC7B,QAAQ;AACR,QAAQ,OAAO,IAAI,CAAC,iBAAiB,EAAE;AACvC,IAAI;AACJ;;;;;;;;;"}
|
package/dist/plugin.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
var capacitorcapacitor_microphone = (function (exports, core) {
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
const capacitor_microphone = core.registerPlugin('CapacitorMicrophone', {
|
|
5
|
+
web: () => Promise.resolve().then(function () { return web; }).then((m) => new m.capacitor_microphoneWeb()),
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
class capacitor_microphoneWeb extends core.WebPlugin {
|
|
9
|
+
async echo(options) {
|
|
10
|
+
return options;
|
|
11
|
+
}
|
|
12
|
+
async checkPermission() {
|
|
13
|
+
var _a;
|
|
14
|
+
if (!navigator.permissions) {
|
|
15
|
+
return {
|
|
16
|
+
granted: false,
|
|
17
|
+
status: 'prompt',
|
|
18
|
+
details: 'Permissions API not supported',
|
|
19
|
+
errorMessage: '',
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
const result = await navigator.permissions.query({
|
|
24
|
+
name: 'microphone',
|
|
25
|
+
});
|
|
26
|
+
return {
|
|
27
|
+
granted: result.state === 'granted',
|
|
28
|
+
status: result.state,
|
|
29
|
+
details: 'Web checkPermission',
|
|
30
|
+
errorMessage: '',
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
catch (err) {
|
|
34
|
+
return {
|
|
35
|
+
granted: false,
|
|
36
|
+
status: 'denied',
|
|
37
|
+
details: 'Web checkPermission error',
|
|
38
|
+
errorMessage: (_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : 'Unknown error',
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async requestPermission() {
|
|
43
|
+
var _a;
|
|
44
|
+
try {
|
|
45
|
+
await navigator.mediaDevices.getUserMedia({ audio: true });
|
|
46
|
+
return {
|
|
47
|
+
granted: true,
|
|
48
|
+
status: 'granted',
|
|
49
|
+
details: 'Web requestPermission',
|
|
50
|
+
errorMessage: '',
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
return {
|
|
55
|
+
granted: false,
|
|
56
|
+
status: 'denied',
|
|
57
|
+
details: 'Web requestPermission',
|
|
58
|
+
errorMessage: (_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : 'User denied microphone permission',
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async checkRequestPermission() {
|
|
63
|
+
const permission = await this.checkPermission();
|
|
64
|
+
if (permission.granted) {
|
|
65
|
+
return permission;
|
|
66
|
+
}
|
|
67
|
+
return this.requestPermission();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
var web = /*#__PURE__*/Object.freeze({
|
|
72
|
+
__proto__: null,
|
|
73
|
+
capacitor_microphoneWeb: capacitor_microphoneWeb
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
exports.capacitor_microphone = capacitor_microphone;
|
|
77
|
+
|
|
78
|
+
return exports;
|
|
79
|
+
|
|
80
|
+
})({}, capacitorExports);
|
|
81
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["esm/index.js","esm/web.js"],"sourcesContent":["import { registerPlugin } from '@capacitor/core';\nconst capacitor_microphone = registerPlugin('CapacitorMicrophone', {\n web: () => import('./web').then((m) => new m.capacitor_microphoneWeb()),\n});\nexport * from './definitions';\nexport { capacitor_microphone };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nexport class capacitor_microphoneWeb extends WebPlugin {\n async echo(options) {\n return options;\n }\n async checkPermission() {\n var _a;\n if (!navigator.permissions) {\n return {\n granted: false,\n status: 'prompt',\n details: 'Permissions API not supported',\n errorMessage: '',\n };\n }\n try {\n const result = await navigator.permissions.query({\n name: 'microphone',\n });\n return {\n granted: result.state === 'granted',\n status: result.state,\n details: 'Web checkPermission',\n errorMessage: '',\n };\n }\n catch (err) {\n return {\n granted: false,\n status: 'denied',\n details: 'Web checkPermission error',\n errorMessage: (_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : 'Unknown error',\n };\n }\n }\n async requestPermission() {\n var _a;\n try {\n await navigator.mediaDevices.getUserMedia({ audio: true });\n return {\n granted: true,\n status: 'granted',\n details: 'Web requestPermission',\n errorMessage: '',\n };\n }\n catch (err) {\n return {\n granted: false,\n status: 'denied',\n details: 'Web requestPermission',\n errorMessage: (_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : 'User denied microphone permission',\n };\n }\n }\n async checkRequestPermission() {\n const permission = await this.checkPermission();\n if (permission.granted) {\n return permission;\n }\n return this.requestPermission();\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["registerPlugin","WebPlugin"],"mappings":";;;AACK,UAAC,oBAAoB,GAAGA,mBAAc,CAAC,qBAAqB,EAAE;IACnE,IAAI,GAAG,EAAE,MAAM,mDAAe,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,uBAAuB,EAAE,CAAC;IAC3E,CAAC;;ICFM,MAAM,uBAAuB,SAASC,cAAS,CAAC;IACvD,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE;IACxB,QAAQ,OAAO,OAAO;IACtB,IAAI;IACJ,IAAI,MAAM,eAAe,GAAG;IAC5B,QAAQ,IAAI,EAAE;IACd,QAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;IACpC,YAAY,OAAO;IACnB,gBAAgB,OAAO,EAAE,KAAK;IAC9B,gBAAgB,MAAM,EAAE,QAAQ;IAChC,gBAAgB,OAAO,EAAE,+BAA+B;IACxD,gBAAgB,YAAY,EAAE,EAAE;IAChC,aAAa;IACb,QAAQ;IACR,QAAQ,IAAI;IACZ,YAAY,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;IAC7D,gBAAgB,IAAI,EAAE,YAAY;IAClC,aAAa,CAAC;IACd,YAAY,OAAO;IACnB,gBAAgB,OAAO,EAAE,MAAM,CAAC,KAAK,KAAK,SAAS;IACnD,gBAAgB,MAAM,EAAE,MAAM,CAAC,KAAK;IACpC,gBAAgB,OAAO,EAAE,qBAAqB;IAC9C,gBAAgB,YAAY,EAAE,EAAE;IAChC,aAAa;IACb,QAAQ;IACR,QAAQ,OAAO,GAAG,EAAE;IACpB,YAAY,OAAO;IACnB,gBAAgB,OAAO,EAAE,KAAK;IAC9B,gBAAgB,MAAM,EAAE,QAAQ;IAChC,gBAAgB,OAAO,EAAE,2BAA2B;IACpD,gBAAgB,YAAY,EAAE,CAAC,EAAE,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,eAAe;IAC3I,aAAa;IACb,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,IAAI,EAAE;IACd,QAAQ,IAAI;IACZ,YAAY,MAAM,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACtE,YAAY,OAAO;IACnB,gBAAgB,OAAO,EAAE,IAAI;IAC7B,gBAAgB,MAAM,EAAE,SAAS;IACjC,gBAAgB,OAAO,EAAE,uBAAuB;IAChD,gBAAgB,YAAY,EAAE,EAAE;IAChC,aAAa;IACb,QAAQ;IACR,QAAQ,OAAO,GAAG,EAAE;IACpB,YAAY,OAAO;IACnB,gBAAgB,OAAO,EAAE,KAAK;IAC9B,gBAAgB,MAAM,EAAE,QAAQ;IAChC,gBAAgB,OAAO,EAAE,uBAAuB;IAChD,gBAAgB,YAAY,EAAE,CAAC,EAAE,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,OAAO,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,mCAAmC;IAC/J,aAAa;IACb,QAAQ;IACR,IAAI;IACJ,IAAI,MAAM,sBAAsB,GAAG;IACnC,QAAQ,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE;IACvD,QAAQ,IAAI,UAAU,CAAC,OAAO,EAAE;IAChC,YAAY,OAAO,UAAU;IAC7B,QAAQ;IACR,QAAQ,OAAO,IAAI,CAAC,iBAAiB,EAAE;IACvC,IAAI;IACJ;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import Capacitor
|
|
3
|
+
import AVFoundation
|
|
4
|
+
|
|
5
|
+
@objc(CapacitorMicrophonePlugin)
|
|
6
|
+
public class CapacitorMicrophonePlugin: CAPPlugin, CAPBridgedPlugin {
|
|
7
|
+
|
|
8
|
+
public let identifier = "CapacitorMicrophonePlugin"
|
|
9
|
+
public let jsName = "CapacitorMicrophone"
|
|
10
|
+
|
|
11
|
+
public let pluginMethods: [CAPPluginMethod] = [
|
|
12
|
+
CAPPluginMethod(name: "checkPermission", returnType: CAPPluginReturnPromise),
|
|
13
|
+
CAPPluginMethod(name: "requestPermission", returnType: CAPPluginReturnPromise),
|
|
14
|
+
CAPPluginMethod(name: "checkRequestPermission", returnType: CAPPluginReturnPromise)
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
@objc func checkPermission(_ call: CAPPluginCall) {
|
|
18
|
+
let status = AVCaptureDevice.authorizationStatus(for: .audio)
|
|
19
|
+
|
|
20
|
+
var resultStatus = "prompt"
|
|
21
|
+
if status == .authorized {
|
|
22
|
+
resultStatus = "granted"
|
|
23
|
+
} else if status == .denied || status == .restricted {
|
|
24
|
+
resultStatus = "denied"
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
call.resolve([
|
|
28
|
+
"granted": resultStatus == "granted",
|
|
29
|
+
"status": resultStatus,
|
|
30
|
+
"details": "iOS checkPermission",
|
|
31
|
+
"errorMessage": ""
|
|
32
|
+
])
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
@objc func requestPermission(_ call: CAPPluginCall) {
|
|
36
|
+
AVCaptureDevice.requestAccess(for: .audio) { granted in
|
|
37
|
+
call.resolve([
|
|
38
|
+
"granted": granted,
|
|
39
|
+
"status": granted ? "granted" : "denied",
|
|
40
|
+
"details": "iOS requestPermission",
|
|
41
|
+
"errorMessage": granted ? "" : "User denied microphone permission"
|
|
42
|
+
])
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@objc func checkRequestPermission(_ call: CAPPluginCall) {
|
|
47
|
+
let status = AVCaptureDevice.authorizationStatus(for: .audio)
|
|
48
|
+
|
|
49
|
+
if status == .authorized {
|
|
50
|
+
call.resolve([
|
|
51
|
+
"granted": true,
|
|
52
|
+
"status": "granted",
|
|
53
|
+
"details": "iOS already authorized",
|
|
54
|
+
"errorMessage": ""
|
|
55
|
+
])
|
|
56
|
+
} else if status == .notDetermined {
|
|
57
|
+
AVCaptureDevice.requestAccess(for: .audio) { granted in
|
|
58
|
+
call.resolve([
|
|
59
|
+
"granted": granted,
|
|
60
|
+
"status": granted ? "granted" : "denied",
|
|
61
|
+
"details": "iOS requested permission",
|
|
62
|
+
"errorMessage": granted ? "" : "User denied microphone permission"
|
|
63
|
+
])
|
|
64
|
+
}
|
|
65
|
+
} else {
|
|
66
|
+
call.resolve([
|
|
67
|
+
"granted": false,
|
|
68
|
+
"status": "denied",
|
|
69
|
+
"details": "iOS permission denied or restricted",
|
|
70
|
+
"errorMessage": "Microphone permission denied"
|
|
71
|
+
])
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import XCTest
|
|
2
|
+
@testable import capacitor_microphonePlugin
|
|
3
|
+
|
|
4
|
+
class capacitor_microphoneTests: XCTestCase {
|
|
5
|
+
func testEcho() {
|
|
6
|
+
// This is an example of a functional test case for a plugin.
|
|
7
|
+
// Use XCTAssert and related functions to verify your tests produce the correct results.
|
|
8
|
+
|
|
9
|
+
let implementation = capacitor_microphone()
|
|
10
|
+
let value = "Hello, World!"
|
|
11
|
+
let result = implementation.echo(value)
|
|
12
|
+
|
|
13
|
+
XCTAssertEqual(value, result)
|
|
14
|
+
}
|
|
15
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "capacitor-microphone",
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"description": "plugin to use the microphone",
|
|
5
|
+
"main": "dist/plugin.cjs.js",
|
|
6
|
+
"module": "dist/esm/index.js",
|
|
7
|
+
"types": "dist/esm/index.d.ts",
|
|
8
|
+
"unpkg": "dist/plugin.js",
|
|
9
|
+
"files": [
|
|
10
|
+
"android/src/main/",
|
|
11
|
+
"android/build.gradle",
|
|
12
|
+
"dist/",
|
|
13
|
+
"ios/Sources",
|
|
14
|
+
"ios/Tests",
|
|
15
|
+
"Package.swift",
|
|
16
|
+
"CapacitorMicrophone.podspec"
|
|
17
|
+
],
|
|
18
|
+
"author": "eddie antonio garcia victoria",
|
|
19
|
+
"license": "MIT",
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "git+https://github.com/eddieagvictoria/Capacitor_Microphone.git.git"
|
|
23
|
+
},
|
|
24
|
+
"bugs": {
|
|
25
|
+
"url": "https://github.com/eddieagvictoria/Capacitor_Microphone.git/issues"
|
|
26
|
+
},
|
|
27
|
+
"keywords": [
|
|
28
|
+
"capacitor",
|
|
29
|
+
"plugin",
|
|
30
|
+
"native"
|
|
31
|
+
],
|
|
32
|
+
"scripts": {
|
|
33
|
+
"verify": "npm run verify:ios && npm run verify:android && npm run verify:web",
|
|
34
|
+
"verify:ios": "xcodebuild -scheme CapacitorMicrophone -destination generic/platform=iOS",
|
|
35
|
+
"verify:android": "cd android && ./gradlew clean build test && cd ..",
|
|
36
|
+
"verify:web": "npm run build",
|
|
37
|
+
"lint": "npm run eslint && npm run prettier -- --check && npm run swiftlint -- lint",
|
|
38
|
+
"fmt": "npm run eslint -- --fix && npm run prettier -- --write && npm run swiftlint -- --fix --format",
|
|
39
|
+
"eslint": "eslint . --ext ts",
|
|
40
|
+
"prettier": "prettier \"**/*.{css,html,ts,js,java}\" --plugin=prettier-plugin-java",
|
|
41
|
+
"swiftlint": "node-swiftlint",
|
|
42
|
+
"docgen": "docgen --api CapacitorMicrophonePlugin --output-readme README.md --output-json dist/docs.json",
|
|
43
|
+
"build": "npm run clean && npm run docgen && tsc && rollup -c rollup.config.mjs",
|
|
44
|
+
"clean": "rimraf ./dist",
|
|
45
|
+
"watch": "tsc --watch",
|
|
46
|
+
"prepublishOnly": "npm run build"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@capacitor/android": "^8.0.0",
|
|
50
|
+
"@capacitor/core": "^8.0.0",
|
|
51
|
+
"@capacitor/docgen": "^0.3.1",
|
|
52
|
+
"@capacitor/ios": "^8.0.0",
|
|
53
|
+
"@ionic/eslint-config": "^0.4.0",
|
|
54
|
+
"@ionic/prettier-config": "^4.0.0",
|
|
55
|
+
"@ionic/swiftlint-config": "^2.0.0",
|
|
56
|
+
"eslint": "^8.57.1",
|
|
57
|
+
"prettier": "^3.6.2",
|
|
58
|
+
"prettier-plugin-java": "^2.7.7",
|
|
59
|
+
"rimraf": "^6.1.0",
|
|
60
|
+
"rollup": "^4.53.2",
|
|
61
|
+
"swiftlint": "^2.0.0",
|
|
62
|
+
"typescript": "^5.9.3"
|
|
63
|
+
},
|
|
64
|
+
"peerDependencies": {
|
|
65
|
+
"@capacitor/core": ">=8.0.0"
|
|
66
|
+
},
|
|
67
|
+
"prettier": "@ionic/prettier-config",
|
|
68
|
+
"swiftlint": "@ionic/swiftlint-config",
|
|
69
|
+
"eslintConfig": {
|
|
70
|
+
"extends": "@ionic/eslint-config/recommended"
|
|
71
|
+
},
|
|
72
|
+
"capacitor": {
|
|
73
|
+
"ios": {
|
|
74
|
+
"src": "ios"
|
|
75
|
+
},
|
|
76
|
+
"android": {
|
|
77
|
+
"src": "android"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|