Expo React Native相机无效



我正在使用此处的基本代码使相机正常工作。唯一的区别是我没有制作独立的相机应用程序,而是将代码实现到其他应用程序(从应用程序内的按钮打开相机)

我正好遵循代码,但相机不会拍摄图片并保存图片。甚至有警告说

[Unhandled Promise rejection: Error: TypeError: expected dynamic type `string', but had type `object']

我重新检查代码,我很确定它来自此部分

takePicture = async function() {
if (this.camera) {
  this.camera.takePictureAsync().then(data => {
    FileSystem.moveAsync({
      from: data,
      to: `${FileSystem.documentDirectory}photos/Photo_${this.state.photoId}.jpg`,
    }).then(() => {
      this.setState({
        photoId: this.state.photoId + 1,
      });
      Vibration.vibrate();
    });
  });
}
  };

快照按钮没有拍照。

我进行了控制台日志,并为takePictureAsync()

找到了以下内容
if (this.camera) {
  this.camera.takePictureAsync().then(data => console.log(data));
}

这是结果

Object {
  "height": 1920,
  "uri":"file:///data/user/0/host.exp.exponent/cache/ExperienceData/%2540lily%252Fmotion/Camera/e501458d-f081-47b5-b7ac-6742f8e8d61e.jpg",
  "width": 1080,
}

这是为什么它在警告expected dynamic type 'string', but had type 'object']中说的原因?以及该应用不拍照的可能原因?

如果是,我应该如何解决此问题?

谢谢您的帮助。

我的package.json

"expo": "^22.0.4",
"native-base": "^2.3.3",
"react": "16.0.0-beta.5",
"react-native": "https://github.com/expo/react-native/archive/sdk-22.0.1.tar.gz"

看起来您确实拍了照片!现在您只需要将其保存在某个地方...

FileSystem.moveAsync({
      from: data,
      to: `${FileSystem.documentDirectory}photos/Photo_${this.state.photoId}.jpg`,
    }).then(() => {
      this.setState({
        photoId: this.state.photoId + 1,
      });
      Vibration.vibrate();
    });

您提供的代码使用文件系统在应用程序中保存您的照片。您的照片将保存到这样的东西:{documentsDirectory}/photos/Photo_{0}.jpg


如果您想将图像保存到相机卷中,则应使用React Native Cameraroll API。

您将使用静态方法await CameraRoll.saveToCameraRoll(photoUri)

相关内容

  • 没有找到相关文章

最新更新