拍照
来源:互联网 发布:大数据工程师面试题 编辑:程序博客网 时间:2024/06/12 00:23
拍照
<?xml version="1.0" encoding="utf-8"?><Path xmlns:android="http://schemas.android.com/apk/res/android"><external-path name="my_images" path=""/></Path>
/** * 调用摄像头拍照 */public class MainActivity extends AppCompatActivity { public static final int TAKE_PHOTO = 1; private Button mBtnPhoto; private ImageView mImageView; private Uri imageUri; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mBtnPhoto = (Button) findViewById(R.id.btn_photo); mImageView = (ImageView) findViewById(R.id.imageView); mBtnPhoto.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 6.0开始危险权限需要运行时权限 if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); } else { // 如果已经授权过则直接进行拍照 startPhoto(); } } }); } /** * 重写此方法处理授权结果 * * @param requestCode * @param permissions * @param grantResults */ @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case 1: if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // 开始拍照 startPhoto(); } else { // TODO 拒绝了权限 } break; } } private void startPhoto() { try { /** * 这里使用应用关联缓存目录来存放图片 * 因为从6.0开始,读写SD卡被列为危险权限,如果将图片存放在SD卡的任何其他目录 * 都需要进行运行时权限处理 * 使用关联缓存目录可以跳过这一步 */ // 创建File对象, 用于存储拍照后的照片 这里使用缓存路径 // File outputImage = new File(getExternalCacheDir() + "/test", "output_image.jpg"); // 这里使用sd卡来存储照片 File outputImage = new File(Environment.getExternalStorageDirectory() + "/test", "output_image.jpg"); File parentFile = outputImage.getParentFile(); if (!parentFile.exists()) { // 判断父路径是否存在,不存在则创建 parentFile.mkdirs(); } if (outputImage.exists()) { outputImage.delete(); } outputImage.createNewFile(); if (Build.VERSION.SDK_INT >= 24) { imageUri = FileProvider.getUriForFile(MainActivity.this, "com.example.mio.myapplication.fileprovider", outputImage); } else { imageUri = Uri.fromFile(outputImage); } Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); startActivityForResult(intent, TAKE_PHOTO); } catch (IOException e) { e.printStackTrace(); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case TAKE_PHOTO: if (resultCode == RESULT_OK) { try { Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri)); mImageView.setImageBitmap(bitmap); } catch (FileNotFoundException e) { e.printStackTrace(); } } break; } }}
0 0
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照
- 拍照、拍照裁剪
- Android拍照
- android拍照
- 住房公积金拍照
- android拍照
- 摄像头拍照
- API 25 (Android 7.1.1 API) animation.AnimatorSet
- 通过synsergy实现mac和windows共享键盘和鼠标
- CentOS搭建openvas
- hibernate 主键一对一 外键一对一
- JAVA中的常量
- 拍照
- 群辉与远程迅雷下载
- 算法之路三:HDU OJ:2017
- 什么是Build Path
- PLSQL 异常处理
- poj 2029 Get Many Persimmon Trees
- 一步一步实战HTML音乐播放器
- “角”与“毛”
- opencv 配置环境变量