本文参考第一行代码Android第2版。实现拍照并保存到指定目录。

1、创建项目Camera,修改activity_main.xml中的代码如下:

<?xml version="1.0" encoding="utf-8"?>    

Button控件用于点击拍照,ImageView控件用于显示拍摄的照片。

2、接下来修改MainActivity 中的代码。

public class MainActivity extends AppCompatActivity {    public static final int TAKE_PHOTO = 1;    private ImageView picture;    private Uri imageUri;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Button takePhoto = (Button) findViewById(R.id.take_photo);        picture = (ImageView) findViewById(R.id.show_photo);        takePhoto.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {//创建File对象,用于保存拍摄的照片                File outputImage = new File(Environment.getExternalStorageDirectory(), "/DCIM/Camera/"+System.currentTimeMillis() + ".jpg");                if (!outputImage.getParentFile().exists()){                    outputImage.getParentFile().mkdirs();                }                if (Build.VERSION.SDK_INT >= 24) {                    imageUri = FileProvider.getUriForFile(MainActivity.this, "com.example.camera.fileprovider", outputImage);                } else {                    imageUri = Uri.fromFile(outputImage);                }                Intent intent = new Intent();                intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);                intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);                intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);                startActivityForResult(intent, TAKE_PHOTO);            }        });    }    @Override    protected void onActivityResult(int requestCode,int resultCode,Intent data){        switch (requestCode){            case TAKE_PHOTO:                if (resultCode == RESULT_OK){                    try {//显示照片                        Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));                        picture.setImageBitmap(bitmap);                    } catch (FileNotFoundException e) {                        e.printStackTrace();                    }                }                break;            default:                break;        }    }}

这里将拍摄的保存路径设置为:“/DCIM/Camera/”。

3、在AndroidManifest.xml中对内容提供器进行注册。

                            

4、在res目录下新建目录xml,并创建文件file_paths.xml。

<?xml version="1.0" encoding="utf-8"?>    

5、在AndroidManifest.xml中进行SD卡和相机访问权限声明,并调试运行。

        

 本人调试机型 小米4c,截图就不附上了。

欢迎访问本人博客:https://blog.kangaroohy.top

更多相关文章

  1. android拍照显示缩略图
  2. Android布局管理器-使用FrameLayout帧布局管理器显示层叠的正方
  3. 魔方动态壁纸android源码下载
  4. Android录像和拍照功能实例
  5. Android开发之自定义相机设定照片和预览参数问题
  6. Android(安卓)7.0及以上调用系统相机拍照、访问相册问题
  7. 调用android系统相机拍照并保存图片
  8. android CheckBox RadioButton 照片和文字的间距问题
  9. Android(安卓)7.0拍照出现android.os.FileUriExposedException异

随机推荐

  1. 关于Zipalign的介绍和使用方法
  2. android mainfest 属性详解
  3. Android点滴累计
  4. android后台服务service全解析(上)--serv
  5. Android(安卓)学习 之 Canvas (一)
  6. Android学习心得(二)——短信服务
  7. android shelves
  8. Android最实用的各种技能点的网址链接(每
  9. Android(安卓)5.0以上Button去掉阴影
  10. Windows 下的Android NDK开发