当前位置 : 首页> android > android调用照相机拍照

android调用照相机拍照

时间:2016-10-19 16:42:22   已访问:284次
热门专业

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梦想。


推荐内容