当前位置 : IT培训网 > 移动开发 > android > android调用照相机拍照

android调用照相机拍照

时间:2016-10-19 16:42:22  来源:Android培训网  作者:IT培训网  已有:名学员访问该课程
1.调用系统的照相机程序。2.在onActivityResult中处理返回的data final Bitmap photo = data.getParcelableExtra("data"); 如果不需要做剪切处理就可以直接使用图片了,比如输出到ImageView上 imageView.setImageBitmap(photo); 如果需要做剪切处理,就继续向下执

1.调用系统的照相机程序


  1. Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  2. startActivityForResult(intent, TAKE_PHOTO_WITH_DATA);

2.在onActivityResult中处理返回的data final Bitmap photo = data.getParcelableExtra("data"); 如果不需要做剪切处理就可以直接使用图片了,比如输出到ImageView上 imageView.setImageBitmap(photo); 如果需要做剪切处理,就继续向下执行

3.做剪切处理


  1. Intent intent = new Intent("com.android.camera.action.CROP");
  2. intent.setType("image/*");
  3. intent.putExtra("data", data);
  4. intent.putExtra("crop", "true");
  5. intent.putExtra("aspectX", 1);
  6. intent.putExtra("aspectY", 1);
  7. intent.putExtra("outputX", 128);
  8. intent.putExtra("outputY", 128);
  9. intent.putExtra("return-data", true);
  10. artActivityForResult(intent, PHOTO_PICKED_WITH_DATA);

4.在onActivityResult中处理 与第二步相同。

完整代码:


  1. public class SdCardUriTestActivity extends Activity {
  2. /** Called when the activity is first created. */
  3. private Button btnTake = null;
  4. private ImageView lblImage = null;
  5.  
  6. private static final int PHOTO_PICKED_WITH_DATA = 3021;
  7. private static final int CAMERA_WITH_DATA = 3023;
  8.  
  9. @Override
  10. public void onCreate(Bundle savedInstanceState) {
  11. super.onCreate(savedInstanceState);
  12. setContentView(R.layout.main);
  13.  
  14. btnTake = (Button)findViewById(R.id.btnTake);
  15. lblImage = (ImageView)findViewById(R.id.lblImage);
  16. btnTake.setOnClickListener(new View.OnClickListener() {
  17.  
  18. @Override
  19. public void onClick(View v) {
  20. // TODO Auto-generated method stub
  21. Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  22. startActivityForResult(intent, CAMERA_WITH_DATA);
  23. }
  24. });
  25.  
  26. }
  27.  
  28. @Override
  29. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  30. // TODO Auto-generated method stub
  31. if(resultCode!=RESULT_OK)
  32. return;
  33. switch(requestCode){
  34. case CAMERA_WITH_DATA:
  35. final Bitmap photo = data.getParcelableExtra("data");
  36. if(photo!=null){
  37. doCropPhoto(photo);
  38. }
  39. case PHOTO_PICKED_WITH_DATA:
  40. Bitmap photo1 = data.getParcelableExtra("data");
  41. if(photo1!=null){
  42. lblImage.setImageBitmap(photo1);
  43. }
  44.  
  45. }
  46. }
  47.  
  48. protected void doCropPhoto(Bitmap data){
  49. Intent intent = getCropImageIntent(data);
  50. startActivityForResult(intent, PHOTO_PICKED_WITH_DATA);
  51. }
  52.  
  53. public static Intent getCropImageIntent(Bitmap data) {
  54. Intent intent = new Intent("com.android.camera.action.CROP");
  55. intent.setType("image/*");
  56. intent.putExtra("data", data);
  57. intent.putExtra("crop", "true");
  58. intent.putExtra("aspectX", 1);
  59. intent.putExtra("aspectY", 1);
  60. intent.putExtra("outputX", 128);
  61. intent.putExtra("outputY", 128);
  62. intent.putExtra("return-data", true);
  63. return intent;

 

IT培训网依托中国互联网行业蓬勃发展优势,为中国的软件开发学习者和IT从业人员提供培训学校、编程学习、经验交流、咨询解答等服务,帮助更多喜爱编程的人员实现自己的IT梦想。

顶一下
(1)
100%
踩一下
(0)
0%

IT培训0元试听 每期开班座位有限.0元试听抢座开始! IT培训0元试听

  • 姓名 : *
  • 电话 : *
  • QQ : *
  • 留言 :
  • 验证码 : 看不清?点击更换请输入正确的验证码

在线咨询在线咨询

温馨提示 : 请保持手机畅通,咨询老师为您
提供专属一对一报名服务。

------分隔线----------------------------
------分隔线----------------------------

推荐内容