diff --git a/app-release.apk b/app-release.apk
index a6a8dd56..036755e8 100644
--- a/app-release.apk
+++ b/app-release.apk
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:96f05c05695286d535bce19a37c4f1857925d2ca0321397447d9fe60cbf4491a
-size 122725357
+oid sha256:df0e5f59e0a4203c773783a223aede0198595c1d0916a893067ccbc4111d9493
+size 122726537
diff --git a/src/screens/CameraScreen.tsx b/src/screens/CameraScreen.tsx
index 6da423ab..f0d05017 100644
--- a/src/screens/CameraScreen.tsx
+++ b/src/screens/CameraScreen.tsx
@@ -8,6 +8,7 @@ import {
Modal,
TextInput,
TouchableWithoutFeedback,
+ PermissionsAndroid,
} from 'react-native';
import { CameraView, useCameraPermissions } from 'expo-camera';
import * as FileSystem from 'expo-file-system';
@@ -131,7 +132,24 @@ export default function CameraScreen({
if (permission && !permission.granted && permission.canAskAgain) {
requestPermission();
}
- }, []);
+
+ // Specifically for ausbc native library which needs these at runtime
+ if (Platform.OS === 'android') {
+ const requestAndroidPerms = async () => {
+ try {
+ const granted = await PermissionsAndroid.requestMultiple([
+ PermissionsAndroid.PERMISSIONS.CAMERA,
+ PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,
+ PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE,
+ ]);
+ logger.log('Android Permissions:', JSON.stringify(granted));
+ } catch (err) {
+ console.warn('Failed to request Android permissions', err);
+ }
+ };
+ requestAndroidPerms();
+ }
+ }, [permission]);
// 2. Check if a USB camera is connected.
useEffect(() => {
@@ -400,29 +418,27 @@ export default function CameraScreen({
}
};
- // 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...
-
- );
- }
+ // Show permission block if built-in camera has no permission AND USB is not connected
+ 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 Tablet-Kamera anzuzeigen
+
+ Erlaubnis erteilen
+
+
+ Zurück
+
+
+ );
}
const renderContent = () => {
@@ -628,7 +644,7 @@ export default function CameraScreen({
{/* Camera Preview Background */}
- {Platform.OS === 'android' ? (
+ {Platform.OS === 'android' && isUsbConnected ? (