调用摄像头拍照

react-native-image-picker的github官网

  1. yarn add react-native-image-picker
  2. 运行react-native link自动注册相关的组件到原生配置中
  3. 打开项目中的android->app->src->main->AndroidManifest.xml文件,在第8行添加如下配置:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  1. 打开项目中的android->app->src->main->java->com->当前项目名称文件夹->MainActivity.java文件,修改配置如下:
    package com.native_camera;
    import com.facebook.react.ReactActivity; // 1. 添加以下两行:
    import com.imagepicker.permissions.OnImagePickerPermissionsCallback; // <- add this import
    import com.facebook.react.modules.core.PermissionListener; // <- add this import public class MainActivity extends ReactActivity {
    // 2. 添加如下一行:
    private PermissionListener listener; // <- add this attribute /**
    * Returns the name of the main component registered from JavaScript.
    * This is used to schedule rendering of the component.
    */
    @Override
    protected String getMainComponentName() {
    return "native_camera";
    }
    }
  2. 在项目中添加如下代码:
    // 第1步:
import {View, Button, Image} from 'react-native'
import ImagePicker from 'react-native-image-picker'
var photoOptions = {
//底部弹出框选项
title: '请选择',
cancelButtonTitle: '取消',
takePhotoButtonTitle: '拍照',
chooseFromLibraryButtonTitle: '选择相册',
quality: 0.75,
allowsEditing: true,
noData: false,
storageOptions: {
skipBackup: true,
path: 'images'
}
} // 第2步:
constructor(props) {
super(props);
this.state = {
imgURL: ''
}
} // 第3步:
<Image source={{ uri: this.state.imgURL }} style={{ width: 200, height: 200 }}></Image>
<Button title="拍照" onPress={this.cameraAction}></Button> // 第4步:
cameraAction = () => {
ImagePicker.showImagePicker(photoOptions, (response) => {
console.log('response' + response);
if (response.didCancel) {
return
}
this.setState({
imgURL: response.uri
});
})
}
  1. 一定要退出之前调试的App,并重新运行react-native run-android进行打包部署;这次打包期间会下载一些jar的包,需要耐心等待!

me.js

import React, { Component } from 'react'
// 第1步:
import { View, Button, Image } from 'react-native'
// 导入拍照的包
import ImagePicker from 'react-native-image-picker'
// 创建拍照时候的配置对象
var photoOptions = {
//底部弹出框选项
title: '请选择',
cancelButtonTitle: '取消',
takePhotoButtonTitle: '拍照',
chooseFromLibraryButtonTitle: '选择相册',
quality: 0.75, // 照片的质量
allowsEditing: true, // 允许被编辑
noData: false, // 拍照时候不附带日期
storageOptions: { // 存储选项
skipBackup: true, // 在IOS平台中,会自动把 照片同步到 云端的存储,如果此项为 true,表示跳过 备份,不会把照片上传到 云端
path: 'images'
}
} export default class Me extends Component {
constructor(props) {
super(props);
this.state = {
imgURL: 'https://avatars0.githubusercontent.com/u/15337769?s=460&v=4' // 将来,拍摄的照片路径,会存到这里
}
} render() {
return <View style={{ alignItems: 'center', paddingTop: 70 }}>
<Image source={{ uri: this.state.imgURL }} style={{ width: 200, height: 200, borderRadius: 100 }}></Image>
<Button title="拍照" onPress={this.cameraAction}></Button>
</View>
} // 第4步:
cameraAction = () => {
ImagePicker.showImagePicker(photoOptions, (response) => {
console.log('response' + response);
if (response.didCancel) { // 点击了取消按钮,此时,用户没有拍照
return
} // 用户已经拍摄了一张照片了
this.setState({
imgURL: response.uri
});
})
}
}

最新文章

  1. 3D滚动下拉菜单-简直不要太任性
  2. UIKit框架之UIDynamicAnimator
  3. NYOJ题目198数数
  4. rabbitmq之work_pool
  5. ASP.net MVC自定义错误处理页面的方法
  6. Activity Lifecycle
  7. css3 去掉点击高光(移动端)
  8. (九)groupByKey,reduceByKey,sortByKey算子-Java&amp;Python版Spark
  9. ubuntu apache svn 参考
  10. adb概览及协议参考
  11. nginx location配置(URL)
  12. Mahout 模糊kmeans
  13. C++内存分区
  14. 悲观并发 乐观并发 Entity Framework Core中的并发处理
  15. Java中数据类型默认转换和强制类型转换
  16. Django框架之第三篇模板语法(重要!!!)
  17. 【BZOJ】3139: [Hnoi2013]比赛
  18. 超级账本Hyperledge的kafka共识算法里的Topic 与 Partition
  19. spring cloud 学习(6) - zuul 微服务网关
  20. Sentry有什么作用

热门文章

  1. centos6.5安装openLDAP2.3
  2. 杭电-------2044一只小蜜蜂(C语言写)
  3. git系列之---码云gitee 添加SHH公钥
  4. RX.js6变化
  5. STM32之RGB灯仿真
  6. docker入门整理(1)--安装
  7. Bootstrap 手机屏幕自适应的响应式布局开关
  8. JS中0.1+0.2!=0.3
  9. C#设计模式学习笔记:(4)建造者模式
  10. python里奇怪的赋值