2014-07-15 41 views
1

捕捉我能夠從畫廊或照相機拍攝的圖像,並把它放在與imageview的下面的代碼:從畫廊或相機檢查在imageview的圖片是從相機或畫廊

1.捕獲圖像:

private void captureImageInitialization() { 

    final String[] items = new String[] { "Take from camera", 
      "Select from gallery" }; 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.select_dialog_item, items); 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 

    builder.setTitle("Select Image"); 
    builder.setAdapter(adapter, new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int item) { // pick from 
                   // camera 
      if (item == 0) { 
       Intent intent = new Intent(
         "android.media.action.IMAGE_CAPTURE"); 
       startActivityForResult(intent, PICK_FROM_CAMERA); 

      } else { 
       // pick from file 
       /** 
       * To select an image from existing files, use 
       * Intent.createChooser to open image chooser. Android will 
       * automatically display a list of supported applications, 
       * such as image gallery or file manager. 
       */ 
       Intent intent = new Intent(); 

       intent.setType("image/*"); 
       intent.setAction(Intent.ACTION_GET_CONTENT); 

       startActivityForResult(Intent.createChooser(intent, 
         "Complete action using"), PICK_FROM_FILE); 
      } 
     } 
    }); 

    dialog = builder.create(); 
} 

2.展的ImageView:

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (resultCode != RESULT_OK) 
      return; 

     switch (requestCode) { 
     case PICK_FROM_CAMERA: 

      mImageCaptureUri = data.getData(); 
      imagepath = getPath(mImageCaptureUri); 
      bitmap = BitmapFactory.decodeFile(imagepath); 

      mImageView.setImageBitmap(bitmap); 
      // Log.d("camera ---- > ", "" + data.getExtras().get("data")); 
      new ProcessUploadAvatar2().execute(); 

      break; 

     case PICK_FROM_FILE: 
      /** 
      * After selecting image from files, save the selected path 
      */ 
      mImageCaptureUri = data.getData(); 
      imagepath = getPath(mImageCaptureUri); 
      bitmap2 = BitmapFactory.decodeFile(imagepath); 
      mImageView.setImageBitmap(bitmap2); 

      break; 

     } 
    } 

現在我的問題是如何檢查imageview中的圖像是否已被攝像頭或圖庫拍攝到onActivityResult()方法之外?我嘗試實現是這樣的:

public void NetAsync() { 

     if (mImageView.getDrawable() != null) { 

      if (mImageView = bitmap) { 
       new NetCheck().execute(); 
      } else if (mImageView = bitmap2) { 
       new ProcessUploadAvatar2().execute(); 
      } 
     } 

    } 
+0

如果你只是想'記住'如果一個位圖是從相機或文件中挑選出來的,那麼只需設置一個標籤,比如'imageView.setTag()'。但看看你的代碼:對於'pickings'你有'BitmapFactory.decodeFile(imagepath);'所以它們都是'來自文件'。有什麼關係?請更好地解釋你的目標。 'if(mImageView = bitmap)'那不會編譯嗎?和=是==?還有'來自畫廊'?你不知道用戶使用的選擇器。 – greenapps

+0

感謝提示 –

回答

0

您可以輕鬆地通過在onActivityResult()請求碼單檢查得到這個......我的意思是,你已經在調用攝像機發送的請求碼/ gallery intent ..

+0

如果您可以提供代碼片段,它將會很好。 – Roylee