调用系统相册和相机
2017-06-07 16:29
274 查看
MainActivity 代码:
清单文件中加两个权限:
public class MainActivity extends Activity implements OnClickListener { public final static int ALBUM_REQUEST_CODE = 1;//相册的返回码 public final static int CAMERA_REQUEST_CODE = 3;//相机的返回码 private static final int CROP_SMALL_PICTURE = 2;//最后都得图片的返回码 public static String SAVED_IMAGE_DIR_PATH = Environment.getExternalStorageDirectory().getPath() + "/AppName/camera/";// 拍照路径 static String cameraPath;// 指定存储位置图片的存储路径 protected static Uri tempUri; private ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt=(Button) findViewById(R.id.bt); Button bt2=(Button) findViewById(R.id.bt2); iv = (ImageView) findViewById(R.id.iv); bt.setOnClickListener(this); bt2.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.bt: StartXC(); break; case R.id.bt2: startCamera(); break; default: break; } } //调用相机的方法 public void startCamera() { String state = Environment.getExternalStorageState(); if (state.equals(Environment.MEDIA_MOUNTED)) { cameraPath = SAVED_IMAGE_DIR_PATH + System.currentTimeMillis() + ".png"; Intent intent = new Intent(); // 指定开启系统相机的Action intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE); String out_file_path = SAVED_IMAGE_DIR_PATH; File dir = new File(out_file_path); if (!dir.exists()) { dir.mkdirs(); } // 把文件地址转换成Uri格式 tempUri = Uri.fromFile(new File(cameraPath)); // 设置系统相机拍摄照片完成后图片文件的存放地址 intent.putExtra(MediaStore.EXTRA_OUTPUT, tempUri); startActivityForResult(intent, CAMERA_REQUEST_CODE); } else { Toast.makeText(MainActivity.this, "请确认已经插入SD卡", Toast.LENGTH_LONG).show(); } } /* * 调用系统相册的方法 */ public void StartXC() { /*//调用手机里所有图片 Intent intent = new Intent(Intent.ACTION_PICK, null); intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(intent, ALBUM_REQUEST_CODE);*/ //只调用相册的图片 Intent intent = new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(intent, ALBUM_REQUEST_CODE); } /* * 从相机和系统中获取图片的方法 */ @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK) { // 如果返回码是可以用的 switch (requestCode) { //相册 case ALBUM_REQUEST_CODE: startPhotoZoom(data.getData()); // 开始对图片进行裁剪处理 break; //相机 case CAMERA_REQUEST_CODE: startPhotoZoom(tempUri); // 开始对图片进行裁剪处理 break; case CROP_SMALL_PICTURE: if (data != null) { setImageToView(data); // 让刚才选择裁剪得到的图片显示在界面上 } break; } } } /* * 裁剪图片方法实现 * * @param uri */ protected void startPhotoZoom(Uri uri) Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); // 设置裁剪(用intent传值通知来做一些系统操作) intent.putExtra("crop", "true"); // aspectX aspectY 是宽高的比例 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // outputX outputY 是裁剪后图片宽高 intent.putExtra("outputX", 150); intent.putExtra("outputY", 150); intent.putExtra("return-data", true); startActivityForResult(intent, CROP_SMALL_PICTURE); } /** * 保存裁剪之后的图片数据 * * @param * @param */ protected void setImageToView(Intent data) { //获取Bundle对象的值 Bundle extras = data.getExtras(); if (extras != null) { Bitmap photo = extras.getParcelable("data"); iv.setImageBitmap(photo); } } }
清单文件中加两个权限:
//SD卡存储的权限 <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" />
相关文章推荐
- android实例之——调用android系统相机、系统相册,并对得到的图片进行处理
- iOS调用系统相册、相机 显示中文标题
- ios开发调用系统相机相册
- Android调用系统相册和系统相机拍照
- Android图片系列(1)-------调用系统相册与相机获取图片
- Android 调用系统相机拍照保存以及调用系统相册的方法
- Android 调用系统相机拍照保存以及调用系统相册的方法
- Android调用系统相机相册,可选择性裁剪
- android中调用系统相机拍照并访问本地相册
- iOS开发 调用系统相机和相册
- 如何在调用系统相册相机时,将显示的英文(photos)改为中文
- 调用系统相机拍照和选择相册
- Android 调用系统相机拍照保存以及调用系统相册的方法
- Android调用系统相机拍照、从相册中取照片,裁剪,并保存到手机SD卡中,展示到界面
- UIAction的使用和调用系统相册和相机
- Android 调用系统相机拍照保存以及调用系统相册的方法
- 调用系统相册相机,然后裁剪
- 调用系统相机,底部弹出拍照和相册选择,及上传功能
- iOS开发--调用系统相册、相机显示中文title
- iOS调用系统相册、相机 显示中文标题