调用摄像头和相册(调用摄像头拍照和从相册中选择图片)
来源:互联网 发布:head设计模式不会java 编辑:程序博客网 时间:2024/05/20 23:39
public class MainActivity extends Activity {public static final int TAKE_PHOTO=1;public static final int CROP_PHOTO=0;public static final int CHOOSE_PHOTO=3;private ImageView picture;private Button chooseFromAlbum;private Button takePhoto;private Uri imageUri;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);takePhoto=(Button)findViewById(R.id.take_photo);chooseFromAlbum=(Button)findViewById(R.id.choose_from_ablum);picture=(ImageView)findViewById(R.id.picture);takePhoto.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {File outputImage=new File(Environment.getExternalStorageDirectory(), "output_image.jpg");try {if(outputImage.exists()){outputImage.delete();}outputImage.createNewFile();} catch (Exception e) {e.printStackTrace();}imageUri=Uri.fromFile(outputImage);Intent intent=new Intent("android.media.action.IMAGE_CAPTURE");intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);startActivityForResult(intent,TAKE_PHOTO);}});chooseFromAlbum.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {Intent intent=new Intent("android.intent.action.GET_CONTENT");intent.setType("image/*");startActivityForResult(intent, CHOOSE_PHOTO);}});} @Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {switch (requestCode) {case TAKE_PHOTO:if(resultCode==RESULT_OK){Intent intent=new Intent("com.android.camera.action.CROP");intent.setDataAndType(imageUri, "image/*");//intent.putExtra("scale", true);intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);startActivityForResult(intent, CROP_PHOTO);}break;case CROP_PHOTO:if(resultCode==RESULT_OK){try {Bitmap bitmap=BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));picture.setImageBitmap(bitmap);} catch (Exception e) {e.printStackTrace();}}case CHOOSE_PHOTO:if(resultCode==RESULT_OK){//判断手机系统版本号if(Build.VERSION.SDK_INT>=19){//4.4及以上系统使用这个方法处理图片handleImageOnkitKat(data);}else{handleImageBeforekitKat(data);//4.4及以下系统使用这个方法处理图片}}default:break;}super.onActivityResult(requestCode, resultCode, data);}//API 19以下private void handleImageBeforekitKat(Intent data) {} //API 19private void handleImageOnkitKat(Intent data) {String imagePath=null;Uri uri=data.getData();if(DocumentsContract.isDocumentUri(MainActivity.this, uri)){String docId=DocumentsContract.getDocumentId(uri);if("com.android.providers.media.documents".equals(uri.getAuthority())){String id=docId.split(":")[1];String selection=MediaStore.Images.Media._ID+"="+id;imagePath=getImagePath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,selection);}else if("com.android.providers.downloads.documents".equals(uri.getAuthority())){Uri contentUri=ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"),Long.valueOf(docId));imagePath=getImagePath(contentUri,null);}}else if("content".equalsIgnoreCase(uri.getScheme())){imagePath=getImagePath(uri, null);}displayImage(imagePath);}private void displayImage(String imagePath) {if(imagePath!=null){Bitmap bitmap=BitmapFactory.decodeFile(imagePath);picture.setImageBitmap(bitmap);}else{Toast.makeText(this, "failed to get image", Toast.LENGTH_SHORT).show();}}private String getImagePath(Uri uri, String selection) {String path=null;Cursor cursor=getContentResolver().query(uri, null, selection, null, null);if(cursor!=null){if(cursor.moveToFirst()){path=cursor.getString(cursor.getColumnIndex(Media.DATA));}cursor.close();}return path;}
0 0
- 调用摄像头和相册(调用摄像头拍照和从相册中选择图片)
- Android从相册选择图片和调用系统摄像头拍照
- 调用摄像头拍照和从相册中选择照片
- 调用摄像头拍照和从相册中选择
- 调用摄像头拍照和选择相册
- Aandroid调用摄像头拍照和从相册选择照片
- Android调用摄像头拍照和从相册中选择(上传、更换头像)
- 调用系统摄像头和相册选择图片
- Android之调用摄像头拍照和从相册中选择照片
- Android 调用摄像头拍照 以及 从相册中选择照片
- 调用摄像头拍照及从相册中选择照片
- 调用摄像头和相册,从相册中选择(含有google发布的图片压缩以及自己的图片截取)
- 调用摄像头和相册
- 调用摄像头和相册
- Android多媒体之调用摄像头和从本地相册中选择图片
- iOS调用相册和摄像头
- ios调用相册和摄像头
- iOS调用相册和摄像头
- check the manual that corresponds to your MySQL server version for the right syntax to use near 'oiw
- python urllib2模块使用方法总结
- 关于图的一些算法
- SSH
- 《programming in scala》study note 上
- 调用摄像头和相册(调用摄像头拍照和从相册中选择图片)
- 新浪滚动新闻的json数据获取页面
- javaWeb 实现上传+下载 文件
- iOS学习笔记(四)——iOS应用程序生命周期
- 【IOS】自定义UIAlertView样式,实现可替换背景和按钮
- 安卓Activitylifecyclecallbacks使用
- 快速理解Maven中的一些概念
- linux基础(四)----linux命令系统学习----文件处理命令
- 数据结构实验之查找三:树的种类统计