Expo <Camera> 组件无法在移动设备上的 Web 上运行
Expo <Camera> component does not work on the Web on mobile
我正在使用此基本代码通过 Expo
Camera
组件访问相机。
它可以在计算机上运行,但是当我在 iPhone/iPad 上打开它时,它显示我是空的 space(尽管它要求权限并显示 camera in use
符号。我尝试了两个 Safari和 Chrome。我使用 https
import { Camera } from 'expo-camera';
export default function Add({ navigation }){
const [cameraPermission, setCameraPermission] = useState(null);
const [camera, setCamera] = useState(null);
const permisionFunction = async () => {
// here is how you can get the camera permission
const cameraPermission = await Camera.requestCameraPermissionsAsync();
setCameraPermission(cameraPermission.status === 'granted');
if (
cameraPermission.status !== 'granted'
) {
alert('Permission for media access needed.');
}
};
useEffect(() => {
permisionFunction();
}, []);
return (
<View >
<Camera
ref={(ref) => setCamera(ref)}
/>
</View>);
}
知道是什么原因造成的吗?
我找到了问题线程 here。
问题似乎出在 Camera.requestCameraPermissionsAsync()
没有正确关闭摄像头,因此后续尝试使用摄像头都失败了。 (这是我的猜测,我没有调试过代码)。
一旦我禁用了 Camera.requestCameraPermissionsAsync()
调用,代码就可以工作了。
我正在使用此基本代码通过 Expo
Camera
组件访问相机。
它可以在计算机上运行,但是当我在 iPhone/iPad 上打开它时,它显示我是空的 space(尽管它要求权限并显示 camera in use
符号。我尝试了两个 Safari和 Chrome。我使用 https
import { Camera } from 'expo-camera';
export default function Add({ navigation }){
const [cameraPermission, setCameraPermission] = useState(null);
const [camera, setCamera] = useState(null);
const permisionFunction = async () => {
// here is how you can get the camera permission
const cameraPermission = await Camera.requestCameraPermissionsAsync();
setCameraPermission(cameraPermission.status === 'granted');
if (
cameraPermission.status !== 'granted'
) {
alert('Permission for media access needed.');
}
};
useEffect(() => {
permisionFunction();
}, []);
return (
<View >
<Camera
ref={(ref) => setCamera(ref)}
/>
</View>);
}
知道是什么原因造成的吗?
我找到了问题线程 here。
问题似乎出在 Camera.requestCameraPermissionsAsync()
没有正确关闭摄像头,因此后续尝试使用摄像头都失败了。 (这是我的猜测,我没有调试过代码)。
一旦我禁用了 Camera.requestCameraPermissionsAsync()
调用,代码就可以工作了。