Android调用手机拍照以及从相册选择照片 不指定


Android调用手机拍照以及从相册选择照片 不指定

该功能主要实现上传图片到服务器,选择图片的方式有两种,一种是从手机相册中选择,另一种是调用手机摄像头拍照。如图:

1.jpg

Java 代码复制内容到剪贴板
  1.     
  2. /*用来标识请求照相功能的activity*/        
  3. private static final int CAMERA_WITH_DATA = 1001;        
  4. /*用来标识请求gallery的activity*/        
  5. private static final int PHOTO_PICKED_WITH_DATA = 1002;  
Java 代码复制内容到剪贴板
  1.     
  2. private Bitmap bitMap;       //用来保存图片      
  3. private boolean hasImage;    //是否已经选择了图片  
Java 代码复制内容到剪贴板
  1.     
  2. /**     
  3.      * 拍照获取图片     
  4.      *      
  5.      */      
  6.     protected void doTakePhoto() {      
  7.         try {      
  8.             Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);      
  9.             startActivityForResult(cameraIntent, CAMERA_WITH_DATA);      
  10.         } catch (ActivityNotFoundException e) {      
  11.             e.printStackTrace();      
  12.         }      
  13.     }      
  14.           
  15.     /**     
  16.      * 从本地手机中选择图片     
  17.      */      
  18.     private void doSelectImageFromLoacal(){      
  19.         Intent localIntent = new Intent();      
  20.         localIntent.setType("image/*");      
  21.         localIntent.setAction("android.intent.action.GET_CONTENT");      
  22.         Intent localIntent2 = Intent.createChooser(localIntent, "选择图片");      
  23.         startActivityForResult(localIntent2, PHOTO_PICKED_WITH_DATA);      
  24.     }  

然后需要重写onActivityResult()方法,判断是否那种方式获取的图片。

Java 代码复制内容到剪贴板
  1.     
  2. protected void onActivityResult(int requestCode, int resultCode, Intent data) {      
  3.         if (resultCode != RESULT_OK)      
  4.             return;      
  5.         switch (requestCode) {      
  6.         case PHOTO_PICKED_WITH_DATA: //从本地选择图片      
  7.             if (bitMap != null && !bitMap.isRecycled()) {      
  8.                 bitMap.recycle();      
  9.             }      
  10.             Uri selectedImageUri = data.getData();      
  11.             if(selectedImageUri != null){      
  12.                 try {      
  13.                     bitMap = BitmapFactory.decodeStream(getContentResolver().openInputStream(selectedImageUri));      
  14.                 } catch (FileNotFoundException e) {      
  15.                     e.printStackTrace();      
  16.                 }      
  17.                 //下面这两句是对图片按照一定的比例缩放,这样就可以完美地显示出来。有关图片的处理将重新写文章来介绍。    
  18.                 int scale = ImageThumbnail.reckonThumbnail(bitMap.getWidth(), bitMap.getHeight(), 500600);      
  19.                 bitMap = ImageThumbnail.PicZoom(bitMap, (int) (bitMap.getWidth() / scale), (int) (bitMap.getHeight() / scale));      
  20.                 imageView.setImageBitmap(bitMap);      
  21.                 imageView.setVisibility(View.VISIBLE);      
  22.                 hasImage = true;      
  23.             }      
  24.             break;      
  25.         case CAMERA_WITH_DATA:  //拍照      
  26.             Bundle bundle = data.getExtras();      
  27.             bitMap = (Bitmap)bundle.get("data");      
  28.             if (bitMap != null)      
  29.                 bitMap.recycle();      
  30.             bitMap = (Bitmap) data.getExtras().get("data");      
  31.             int scale = ImageThumbnail.reckonThumbnail(bitMap.getWidth(), bitMap.getHeight(), 500600);      
  32.             bitMap = ImageThumbnail.PicZoom(bitMap, (int) (bitMap.getWidth() / scale), (int) (bitMap.getHeight() / scale));      
  33.             imageView.setImageBitmap(bitMap);      
  34.             imageView.setVisibility(View.VISIBLE);      
  35.             hasImage = true;      
  36.             break;      
  37.         }      
  38.     }      
  39.       
        

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章