Android调用手机拍照以及从相册选择照片.doc_第1页
Android调用手机拍照以及从相册选择照片.doc_第2页
Android调用手机拍照以及从相册选择照片.doc_第3页
Android调用手机拍照以及从相册选择照片.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中国手机开发者联盟-Android调用手机拍照以及从相册选择照片/*用来标识请求照相功能的activity*/ private static final int CAMERA_WITH_DATA = 3023; /*用来标识请求gallery的activity*/ private static final int PHOTO_PICKED_WITH_DATA = 3021; /*拍照的照片存储位置*/ private static final File PHOTO_DIR = new File(Environment.getExternalStorageDirectory() + /DCIM/Camera); private File mCurrentPhotoFile;/照相机拍照得到的图片 private void doPickPhotoAction() Context context = EditContact.this; / Wrap our context to inflate list items using correct theme final Context dialogContext = new ContextThemeWrapper(context, android.R.style.Theme_Light); String cancel=返回; String choices; choices = new String2; choices0 = getString(R.string.take_photo); /拍照 choices1 = getString(R.string.pick_photo); /从相册中选择 final ListAdapter adapter = new ArrayAdapter(dialogContext, android.R.layout.simple_list_item_1, choices); final AlertDialog.Builder builder = new AlertDialog.Builder( dialogContext); builder.setTitle(R.string.attachToContact); builder.setSingleChoiceItems(adapter, -1, new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog, int which) dialog.dismiss(); switch (which) case 0: String status=Environment.getExternalStorageState(); if(status.equals(Environment.MEDIA_MOUNTED)/判断是否有SD卡 doTakePhoto();/ 用户点击了从照相机获取 else showToast(没有SD卡); break; case 1: doPickPhotoFromGallery();/ 从相册中去获取 break; ); builder.setNegativeButton(cancel, new DialogInterface.OnClickListener() Override public void onClick(DialogInterface dialog, int which) dialog.dismiss(); ); builder.create().show(); /* * 拍照获取图片 * */ protected void doTakePhoto() try / Launch camera to take photo for selected contact PHOTO_DIR.mkdirs();/ 创建照片的存储目录 mCurrentPhotoFile = new File(PHOTO_DIR, getPhotoFileName();/ 给新照的照片文件命名 final Intent intent = getTakePickIntent(mCurrentPhotoFile); startActivityForResult(intent, CAMERA_WITH_DATA); catch (ActivityNotFoundException e) Toast.makeText(this, R.string.photoPickerNotFoundText, Toast.LENGTH_LONG).show(); public static Intent getTakePickIntent(File f) Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE, null); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f); return intent; /* * 用当前时间给取得的图片命名 * */ private String getPhotoFileName() Date date = new Date(System.currentTimeMillis(); SimpleDateFormat dateFormat = new SimpleDateFormat( IMG_yyyy-MM-dd HH:mm:ss); return dateFormat.format(date) + .jpg; / 请求Gallery程序 protected void doPickPhotoFromGallery() try / Launch picker to choose photo for selected contact final Intent intent = getPhotoPickIntent(); startActivityForResult(intent, PHOTO_PICKED_WITH_DATA); catch (ActivityNotFoundException e) Toast.makeText(this, R.string.photoPickerNotFoundText1, Toast.LENGTH_LONG).show(); / 封装请求Gallery的intent public static Intent getPhotoPickIntent() Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null); intent.setType(image/*); intent.putExtra(crop, true); intent.putExtra(aspectX, 1); intent.putExtra(aspectY, 1); intent.putExtra(outputX, 80); intent.putExtra(outputY, 80); intent.putExtra(return-data, true); return intent; / 因为调用了Camera和Gally所以要判断他们各自的返回情况,他们启动时是这样的startActivityForResult protected void onActivityResult(int requestCode, int resultCode, Intent data) if (resultCode != RESULT_OK) return; switch (requestCode) case PHOTO_PICKED_WITH_DATA: / 调用Gallery返回的 final Bitmap photo = data.getParcelableExtra(data); / 下面就是显示照片了 System.out.println(photo); /缓存用户选择的图片 img = getBitmapByte(photo); mEditor.setPhotoBitmap(photo); System.out.println(set new photo); break; case CAMERA_WITH_DATA: / 照相机程序返回的,再次调用图片剪辑程序去修剪图片 doCropPhoto(mCurrentPhotoFile); break; protected void doCropPhoto(File f) try / 启动gallery去剪辑这个照片 final Intent intent = getCropImageIntent(Uri.fromFile(f); startActivityForResult(intent, PHOTO_PICKED_WITH_DATA); catch (Exception e) Toast.makeText(this, R.string.photoPickerNotFoundText, Toast.LENGTH_LONG).show(); /* * Constructs an intent for image cropping. 调用图片剪辑程序 */ public static Intent getCropImageIntent(Uri photoUri) Intent intent = new Intent(com.android.camera.action.CROP); intent.setDataAndType(photoUri, im

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论