diff --git a/android/app/build/outputs/apk/debug/app-debug.apk b/android/app/build/outputs/apk/debug/app-debug.apk
index 6096e8c1..30c33a47 100644
Binary files a/android/app/build/outputs/apk/debug/app-debug.apk and b/android/app/build/outputs/apk/debug/app-debug.apk differ
diff --git a/android/app/build/outputs/apk/release/app-release.apk b/android/app/build/outputs/apk/release/app-release.apk
deleted file mode 100644
index 38b5dab2..00000000
Binary files a/android/app/build/outputs/apk/release/app-release.apk and /dev/null differ
diff --git a/modules/usb-camera/android/src/main/java/expo/modules/usbcamera/UsbCameraView.kt b/modules/usb-camera/android/src/main/java/expo/modules/usbcamera/UsbCameraView.kt
index 1a2a665c..bba67a22 100644
--- a/modules/usb-camera/android/src/main/java/expo/modules/usbcamera/UsbCameraView.kt
+++ b/modules/usb-camera/android/src/main/java/expo/modules/usbcamera/UsbCameraView.kt
@@ -53,6 +53,29 @@ class UsbCameraView(context: Context, appContext: AppContext) : ExpoView(context
e.printStackTrace()
}
+ val permissionReceiver = object : android.content.BroadcastReceiver() {
+ override fun onReceive(context: Context, intent: android.content.Intent) {
+ if ("com.schnappix.USB_PERMISSION" == intent.action) {
+ synchronized(this) {
+ val granted = intent.getBooleanExtra(android.hardware.usb.UsbManager.EXTRA_PERMISSION_GRANTED, false)
+ if (granted) {
+ android.util.Log.e("UsbCameraView", "Permission granted from Broadcast!")
+ startPreview()
+ } else {
+ android.util.Log.e("UsbCameraView", "Permission denied from Broadcast!")
+ }
+ }
+ }
+ }
+ }
+
+ val filter = android.content.IntentFilter("com.schnappix.USB_PERMISSION")
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.TIRAMISU) {
+ activityContext.registerReceiver(permissionReceiver, filter, Context.RECEIVER_EXPORTED)
+ } else {
+ activityContext.registerReceiver(permissionReceiver, filter)
+ }
+
cameraClient = CameraClient.newBuilder(activityContext)
.setCameraStrategy(CameraUvcStrategy(activityContext))
.setCameraRequest(cameraRequest)
diff --git a/src/screens/CameraScreen.tsx b/src/screens/CameraScreen.tsx
index f06ac3d5..6da423ab 100644
--- a/src/screens/CameraScreen.tsx
+++ b/src/screens/CameraScreen.tsx
@@ -400,26 +400,29 @@ export default function CameraScreen({
}
};
- if (!permission) {
- return (
-
- Berechtigungen werden geladen...
-
- );
- }
+ // On iOS we need the expo-camera permission, on Android we bypass it since we use USB
+ if (Platform.OS !== 'android') {
+ if (!permission) {
+ return (
+
+ Berechtigungen werden geladen...
+
+ );
+ }
- if (!permission.granted && !isUsbConnected) {
- return (
-
- Wir benötigen deine Erlaubnis, um die Kamera anzuzeigen
-
- Erlaubnis erteilen
-
-
- Zurück
-
-
- );
+ if (!permission.granted && !isUsbConnected) {
+ return (
+
+ Wir benötigen deine Erlaubnis, um die Kamera anzuzeigen
+
+ Erlaubnis erteilen
+
+
+ Zurück
+
+
+ );
+ }
}
const renderContent = () => {
@@ -625,20 +628,20 @@ export default function CameraScreen({
{/* Camera Preview Background */}
- {Platform.OS === 'android' && (
+ {Platform.OS === 'android' ? (
+ ) : (
+
)}
-
-