diff --git a/package.json b/package.json index efcf640..51e1b89 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,6 @@ "babel-preset-expo": "~57.0.0", "expo": "~57.0.7", "expo-asset": "~57.0.5", - "expo-camera": "~57.0.2", "expo-dev-client": "~57.0.6", "expo-file-system": "~57.0.1", "expo-font": "~57.0.1", diff --git a/src/components/Viewfinder.tsx b/src/components/Viewfinder.tsx index eed4d05..466c0e4 100644 --- a/src/components/Viewfinder.tsx +++ b/src/components/Viewfinder.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useState } from 'react'; -import { View, Text, StyleSheet, Dimensions, TouchableOpacity } from 'react-native'; +import { View, Text, StyleSheet, Dimensions, TouchableOpacity, Platform } from 'react-native'; import { Camera, useCameraDevice, useSkiaFrameProcessor, type CameraDevice } from 'react-native-vision-camera'; import { useSharedValue } from 'react-native-reanimated'; import { @@ -283,7 +283,10 @@ export default function Viewfinder({ style={StyleSheet.absoluteFill} device={device} isActive={true} - frameProcessor={frameProcessor} + // Android: Skia frame processor crashes on devices w/o hardware-buffered + // ImageAnalysis frames (e.g. Xiaomi 14 Ultra). Keep raw preview there; + // filters still apply on capture/export. iOS keeps live filtered preview. + frameProcessor={Platform.OS === 'android' ? undefined : frameProcessor} /> {renderCameraOverlays()}