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.       
        

 

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