Android调用系统相机以及拉取本地相册的功能实现以及代码分析

现在Android开发的初学者们经常会用到调用手机系统里的功能,比如说相机以及拉取本地相册的功能。所以 我在这里分享一下调用系统相机以及拉取本地相册,将图片展示在本activity上:具体代码如下:

拉取本地相册:

    public void onClick(View view) {
        Intent i = new Intent(
                Intent.ACTION_PICK,
                android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(i, RESULT_LOAD_IMAGE);
    }
}
系统相机其实有的拉取相册之后就有相机拍摄功能,不需要有代码调用,比如说魅族pro6s。但是也有很多只有相册而没有相机,那只能代码实现了,代码如下:
调用系统相机:
 
  
  Intent i=new Intent();
             // 指定开启系统相机的Action
            i.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
            i.addCategory(Intent.CATEGORY_DEFAULT);
             // 根据文件地址创建文件
             File file=new File(FILE_PATH);
             // 把文件地址转换成Uri格式
             Uri uri=Uri.fromFile(file);
            // 设置系统相机拍摄照片完成后图片文件的存放地址             intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
调用完之后,就要读取到activity上,是利用回调函数实现:代码如下:
 
  
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
            Uri selectedImage = data.getData();//获得图片的绝对路径
            String[] filePathColumn = {MediaStore.Images.Media.DATA};
            Cursor cursor = getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();
            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            picturePath = cursor.getString(columnIndex);
            cursor.close();
            ui1.setImageBitmap(BitmapFactory.decodeFile(picturePath));
            System.out.println("图片地址:" + picturePath);
          image=new File(picturePath);
        }
        if (resultCode != RESULT_OK) {
            Toast.makeText(Upload.this, "ActivityResult resultCode error", Toast.LENGTH_SHORT).show();
            return;
        }
        if (requestCode == 0) {//第二个页面返回来的数据
//resultcode 区分结果是否属于正常返回
            // Toast.makeText(MainActivity.this,"跳转成功",Toast.LENGTH_LONG).show();
        }
    }
后端代码已经完成了,但是最重要的就是在清单文件里别忘了给加上权限::::
 
  
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
调用相机功能最多就是这四个权限,也是最重要的!!!!!!!!!

你可能感兴趣的:(Android调用系统相机以及拉取本地相册的功能实现以及代码分析)