expo-camera 14.1.1 → 14.1.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/CHANGELOG.md +8 -0
- package/android/build.gradle +2 -2
- package/build/next/index.d.ts.map +1 -1
- package/build/next/index.js +1 -1
- package/build/next/index.js.map +1 -1
- package/ios/CameraViewNextModule.swift +1 -1
- package/ios/Next/CameraViewNext.swift +1 -1
- package/package.json +2 -2
- package/plugin/build/withCamera.d.ts +1 -0
- package/plugin/build/withCamera.js +3 -3
- package/plugin/src/withCamera.ts +10 -6
- package/src/next/index.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,13 @@
|
|
|
10
10
|
|
|
11
11
|
### 💡 Others
|
|
12
12
|
|
|
13
|
+
## 14.1.2 — 2024-04-08
|
|
14
|
+
|
|
15
|
+
### 🐛 Bug fixes
|
|
16
|
+
|
|
17
|
+
- Allow users using xcode 14 to still build when including camera. ([#27873](https://github.com/expo/expo/pull/27873) by [@alanjhughes](https://github.com/alanjhughes))
|
|
18
|
+
- Fix an issue where the permission functions were being imported from the wrong file. ([#27988](https://github.com/expo/expo/pull/27988) by [@alanjhughes](https://github.com/alanjhughes))
|
|
19
|
+
|
|
13
20
|
## 14.1.1 — 2024-03-13
|
|
14
21
|
|
|
15
22
|
_This version does not introduce any user-facing changes._
|
|
@@ -50,6 +57,7 @@ _This version does not introduce any user-facing changes._
|
|
|
50
57
|
### 💡 Others
|
|
51
58
|
|
|
52
59
|
- Make the casing of `Barcode` consistent. ([#26900](https://github.com/expo/expo/pull/26900) by [@alanjhughes](https://github.com/alanjhughes))
|
|
60
|
+
- On `Android`, requesting audio permissions was meant to be optional in the config plugin. ([#27365](https://github.com/expo/expo/pull/27365) by [@alanjhughes](https://github.com/alanjhughes))
|
|
53
61
|
|
|
54
62
|
## 14.0.4 — 2024-02-06
|
|
55
63
|
|
package/android/build.gradle
CHANGED
|
@@ -3,7 +3,7 @@ apply plugin: 'kotlin-android'
|
|
|
3
3
|
apply plugin: 'maven-publish'
|
|
4
4
|
|
|
5
5
|
group = 'host.exp.exponent'
|
|
6
|
-
version = '14.1.
|
|
6
|
+
version = '14.1.2'
|
|
7
7
|
|
|
8
8
|
def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
|
|
9
9
|
if (expoModulesCorePlugin.exists()) {
|
|
@@ -94,7 +94,7 @@ android {
|
|
|
94
94
|
namespace "expo.modules.camera"
|
|
95
95
|
defaultConfig {
|
|
96
96
|
versionCode 32
|
|
97
|
-
versionName "14.1.
|
|
97
|
+
versionName "14.1.2"
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/next/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/next/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AAGrD;;;GAGG;AACH,iBAAe,yBAAyB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAEtE;AAGD;;;;GAIG;AACH,iBAAe,6BAA6B,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAE1E;AAGD;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,wLAG/B,CAAC;AAGH;;;GAGG;AACH,iBAAe,6BAA6B,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAE1E;AAGD;;;;GAIG;AACH,iBAAe,iCAAiC,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAE9E;AAGD;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,wLAGnC,CAAC;AAEH,cAAc,gBAAgB,CAAC;AAE/B;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;CAKlB,CAAC"}
|
package/build/next/index.js
CHANGED
package/build/next/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/next/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/next/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAGhD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AAErD,cAAc;AACd;;;GAGG;AACH,KAAK,UAAU,yBAAyB;IACtC,OAAO,aAAa,CAAC,yBAAyB,EAAE,CAAC;AACnD,CAAC;AAED,cAAc;AACd;;;;GAIG;AACH,KAAK,UAAU,6BAA6B;IAC1C,OAAO,aAAa,CAAC,6BAA6B,EAAE,CAAC;AACvD,CAAC;AAED,cAAc;AACd;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;IACvD,SAAS,EAAE,yBAAyB;IACpC,aAAa,EAAE,6BAA6B;CAC7C,CAAC,CAAC;AAEH,cAAc;AACd;;;GAGG;AACH,KAAK,UAAU,6BAA6B;IAC1C,OAAO,aAAa,CAAC,6BAA6B,EAAE,CAAC;AACvD,CAAC;AAED,cAAc;AACd;;;;GAIG;AACH,KAAK,UAAU,iCAAiC;IAC9C,OAAO,aAAa,CAAC,iCAAiC,EAAE,CAAC;AAC3D,CAAC;AAED,cAAc;AACd;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,oBAAoB,CAAC;IAC3D,SAAS,EAAE,6BAA6B;IACxC,aAAa,EAAE,iCAAiC;CACjD,CAAC,CAAC;AAEH,cAAc,gBAAgB,CAAC;AAE/B;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,yBAAyB;IACzB,6BAA6B;IAC7B,6BAA6B;IAC7B,iCAAiC;CAClC,CAAC","sourcesContent":["import { createPermissionHook } from 'expo-modules-core';\n\nimport CameraManager from './ExpoCameraManager';\nimport { PermissionResponse } from '../Camera.types';\n\nexport { default as CameraView } from './CameraView';\n\n// @needsAudit\n/**\n * Checks user's permissions for accessing camera.\n * @return A promise that resolves to an object of type [PermissionResponse](#permissionresponse).\n */\nasync function getCameraPermissionsAsync(): Promise<PermissionResponse> {\n return CameraManager.getCameraPermissionsAsync();\n}\n\n// @needsAudit\n/**\n * Asks the user to grant permissions for accessing camera.\n * On iOS this will require apps to specify an `NSCameraUsageDescription` entry in the **Info.plist**.\n * @return A promise that resolves to an object of type [PermissionResponse](#permissionresponse).\n */\nasync function requestCameraPermissionsAsync(): Promise<PermissionResponse> {\n return CameraManager.requestCameraPermissionsAsync();\n}\n\n// @needsAudit\n/**\n * Check or request permissions to access the camera.\n * This uses both `requestCameraPermissionsAsync` and `getCameraPermissionsAsync` to interact with the permissions.\n *\n * @example\n * ```ts\n * const [status, requestPermission] = useCameraPermissions();\n * ```\n */\nexport const useCameraPermissions = createPermissionHook({\n getMethod: getCameraPermissionsAsync,\n requestMethod: requestCameraPermissionsAsync,\n});\n\n// @needsAudit\n/**\n * Checks user's permissions for accessing microphone.\n * @return A promise that resolves to an object of type [PermissionResponse](#permissionresponse).\n */\nasync function getMicrophonePermissionsAsync(): Promise<PermissionResponse> {\n return CameraManager.getMicrophonePermissionsAsync();\n}\n\n// @needsAudit\n/**\n * Asks the user to grant permissions for accessing the microphone.\n * On iOS this will require apps to specify an `NSMicrophoneUsageDescription` entry in the **Info.plist**.\n * @return A promise that resolves to an object of type [PermissionResponse](#permissionresponse).\n */\nasync function requestMicrophonePermissionsAsync(): Promise<PermissionResponse> {\n return CameraManager.requestMicrophonePermissionsAsync();\n}\n\n// @needsAudit\n/**\n * Check or request permissions to access the microphone.\n * This uses both `requestMicrophonePermissionsAsync` and `getMicrophonePermissionsAsync` to interact with the permissions.\n *\n * @example\n * ```ts\n * const [status, requestPermission] = Camera.useMicrophonePermissions();\n * ```\n */\nexport const useMicrophonePermissions = createPermissionHook({\n getMethod: getMicrophonePermissionsAsync,\n requestMethod: requestMicrophonePermissionsAsync,\n});\n\nexport * from './Camera.types';\n\n/**\n * @hidden\n */\nexport const Camera = {\n getCameraPermissionsAsync,\n requestCameraPermissionsAsync,\n getMicrophonePermissionsAsync,\n requestMicrophonePermissionsAsync,\n};\n"]}
|
|
@@ -119,7 +119,7 @@ public final class CameraViewNextModule: Module, ScannerResultHandler {
|
|
|
119
119
|
|
|
120
120
|
AsyncFunction("launchScanner") { (options: VisionScannerOptions?) in
|
|
121
121
|
if #available(iOS 16.0, *) {
|
|
122
|
-
|
|
122
|
+
await MainActor.run {
|
|
123
123
|
let delegate = VisionScannerDelegate(handler: self)
|
|
124
124
|
scannerContext = ScannerContext(delegate: delegate)
|
|
125
125
|
launchScanner(with: options)
|
|
@@ -210,7 +210,7 @@ public class CameraViewNext: ExpoView, EXCameraInterface, EXAppLifecycleListener
|
|
|
210
210
|
|
|
211
211
|
self.addErrorNotification()
|
|
212
212
|
self.changePreviewOrientation()
|
|
213
|
-
self.
|
|
213
|
+
self.updateSessionAudioIsMuted()
|
|
214
214
|
|
|
215
215
|
// Delay starting the scanner
|
|
216
216
|
self.sessionQueue.asyncAfter(deadline: .now() + 0.5) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo-camera",
|
|
3
|
-
"version": "14.1.
|
|
3
|
+
"version": "14.1.2",
|
|
4
4
|
"description": "A React component that renders a preview for the device's either front or back camera. Camera's parameters like zoom, auto focus, white balance and flash mode are adjustable. With expo-camera, one can also take photos and record videos that are saved to the app's cache. Morever, the component is also capable of detecting faces and bar codes appearing on the preview.",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -42,5 +42,5 @@
|
|
|
42
42
|
"peerDependencies": {
|
|
43
43
|
"expo": "*"
|
|
44
44
|
},
|
|
45
|
-
"gitHead": "
|
|
45
|
+
"gitHead": "2ad93407e82a11504d6cc2412cf3d76858782619"
|
|
46
46
|
}
|
|
@@ -4,5 +4,6 @@ export declare function addCameraImport(src: string): MergeResults;
|
|
|
4
4
|
declare const _default: ConfigPlugin<void | {
|
|
5
5
|
cameraPermission?: string | undefined;
|
|
6
6
|
microphonePermission?: string | undefined;
|
|
7
|
+
recordAudioAndroid?: boolean | undefined;
|
|
7
8
|
}>;
|
|
8
9
|
export default _default;
|
|
@@ -55,7 +55,7 @@ function appendContents({ src, newSrc, tag, comment, }) {
|
|
|
55
55
|
}
|
|
56
56
|
return { contents: src, didClear: false, didMerge: false };
|
|
57
57
|
}
|
|
58
|
-
const withCamera = (config, { cameraPermission, microphonePermission } = {}) => {
|
|
58
|
+
const withCamera = (config, { cameraPermission, microphonePermission, recordAudioAndroid = true } = {}) => {
|
|
59
59
|
config = (0, config_plugins_1.withInfoPlist)(config, (config) => {
|
|
60
60
|
config.modResults.NSCameraUsageDescription =
|
|
61
61
|
cameraPermission || config.modResults.NSCameraUsageDescription || CAMERA_USAGE;
|
|
@@ -66,8 +66,8 @@ const withCamera = (config, { cameraPermission, microphonePermission } = {}) =>
|
|
|
66
66
|
config = config_plugins_1.AndroidConfig.Permissions.withPermissions(config, [
|
|
67
67
|
'android.permission.CAMERA',
|
|
68
68
|
// Optional
|
|
69
|
-
'android.permission.RECORD_AUDIO',
|
|
70
|
-
]);
|
|
69
|
+
recordAudioAndroid && 'android.permission.RECORD_AUDIO',
|
|
70
|
+
].filter(Boolean));
|
|
71
71
|
return withAndroidCameraGradle(config);
|
|
72
72
|
};
|
|
73
73
|
exports.default = (0, config_plugins_1.createRunOncePlugin)(withCamera, pkg.name, pkg.version);
|
package/plugin/src/withCamera.ts
CHANGED
|
@@ -82,8 +82,9 @@ const withCamera: ConfigPlugin<
|
|
|
82
82
|
{
|
|
83
83
|
cameraPermission?: string;
|
|
84
84
|
microphonePermission?: string;
|
|
85
|
+
recordAudioAndroid?: boolean;
|
|
85
86
|
} | void
|
|
86
|
-
> = (config, { cameraPermission, microphonePermission } = {}) => {
|
|
87
|
+
> = (config, { cameraPermission, microphonePermission, recordAudioAndroid = true } = {}) => {
|
|
87
88
|
config = withInfoPlist(config, (config) => {
|
|
88
89
|
config.modResults.NSCameraUsageDescription =
|
|
89
90
|
cameraPermission || config.modResults.NSCameraUsageDescription || CAMERA_USAGE;
|
|
@@ -94,11 +95,14 @@ const withCamera: ConfigPlugin<
|
|
|
94
95
|
return config;
|
|
95
96
|
});
|
|
96
97
|
|
|
97
|
-
config = AndroidConfig.Permissions.withPermissions(
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
98
|
+
config = AndroidConfig.Permissions.withPermissions(
|
|
99
|
+
config,
|
|
100
|
+
[
|
|
101
|
+
'android.permission.CAMERA',
|
|
102
|
+
// Optional
|
|
103
|
+
recordAudioAndroid && 'android.permission.RECORD_AUDIO',
|
|
104
|
+
].filter(Boolean) as string[]
|
|
105
|
+
);
|
|
102
106
|
|
|
103
107
|
return withAndroidCameraGradle(config);
|
|
104
108
|
};
|
package/src/next/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createPermissionHook } from 'expo-modules-core';
|
|
2
2
|
|
|
3
|
+
import CameraManager from './ExpoCameraManager';
|
|
3
4
|
import { PermissionResponse } from '../Camera.types';
|
|
4
|
-
import CameraManager from '../ExpoCameraManager';
|
|
5
5
|
|
|
6
6
|
export { default as CameraView } from './CameraView';
|
|
7
7
|
|