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 ? (