2015-09-24 27 views
0

我有一個單選按鈕。當我點擊單選按鈕時,相機使用相機拍攝圖像後打開。圖像未更新到圖像視圖。Android onclick單選按鈕相機意圖不工作

我已經在我的清單文件中使用了所有權限。

RB_PhotoStatus 
      .setOnCheckedChangeListener(new android.widget.RadioGroup.OnCheckedChangeListener() { 
       @Override 
       public void onCheckedChanged(RadioGroup group, 
         int checkedId) { 
        switch (checkedId) { 
        case R.id.yes: 
         //photoCollected = "Yes"; 
         // create intent with ACTION_IMAGE_CAPTURE action 
         Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
         startActivityForResult(intent, 0); 

         break; 

        case R.id.no: 
         photoCollected = "No"; 
         break; 
        } 

       } 
      }); 




@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 



      super.onActivityResult(requestCode, resultCode, data); 

      Bitmap bp = (Bitmap) data.getExtras().get("data"); 
      imageView1.setImageBitmap(bp); 


    } 
+0

是onActivityResult()被調用? imageView1如何定義? – Shine

回答

2

簡單地拍照!

這個答案解釋瞭如何使用現有的相機應用程序捕捉照片。

<manifest ... > 
    <uses-feature android:name="android.hardware.camera" 
        android:required="true" /> 
    ... 
</manifest> 

請求相機應用程序。

static final int REQUEST_IMAGE_CAPTURE = 1; 

private void dispatchTakePictureIntent() { 
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
     startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); 
    } 
} 

相機與活動覆蓋函數返回數據的意圖onActivityResult波紋管: -

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { 
     Bundle extras = data.getExtras(); 
     Bitmap imageBitmap = (Bitmap) extras.get("data"); 
     mImageView.setImageBitmap(imageBitmap); 
    } 
} 

欲瞭解更多信息如下波紋管給此鏈接:

http://developer.android.com/training/camera/photobasics.html

1

它不因爲Camera Intent不會返回整個BitMap,而只會返回創建文件的引用(Uri)。

Uri selectedImage = data.getData(); 

根據此URI可能重新載入使用BitmapFactory.decodeFile

0
private String mCurrentPhotoPath; 
final String state = Environment.getExternalStorageState(); 

     if (Environment.MEDIA_MOUNTED.equals(state)) { 

      final File image = create_directory(); 
      // Save a file: path for use with ACTION_VIEW intents 
      try { 
       mCurrentPhotoPath = image.getAbsolutePath(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

      final Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
       if (image != null) { 
        takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image)); 
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); 
       } else { 
        snackbar = Snackbar.make(findViewById(android.R.id.content), "An error has occurred", Snackbar.LENGTH_SHORT); 
        snackbar.setAction("Dismiss", clickListener); 
        snackbar.show(); 
       } 
      } 
     } 

public File create_directory() { 

     // Create an image file name 
     final String imageFileName; 
     final String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.ENGLISH).format(new Date()); 
     final String user_id = "1_"; 
     imageFileName = user_id + timeStamp + "_"; 

     final String proj_name = "test"; 
     final String folder_timeStamp = new SimpleDateFormat("yyyyMMdd", Locale.ENGLISH).format(new Date()); 
     final String path = "/TEST/" + proj_name + "/" + folder_timeStamp; 
     final File dr = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), path); 
     if (!dr.exists()) { 
      dr.mkdirs(); 
     } 
     File image = null; 
     try { 
      image = File.createTempFile(imageFileName, ".jpg", dr); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return image; 
    } 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == REQUEST_IMAGE_CAPTURE) { 
     if (resultCode == RESULT_OK){ 
     //do something with the image which is stored in mCurrentPhotoPath 
     } 
    } 
} 
1

在radiobuttonclick的位圖();

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 

startActivityForResult(cameraIntent, CAMERA_REQUEST); 

onActivityResult();

Uri originalUri = data.getData(); 
imageview.setImageURI(originalUri); 

,如果你想要得到的位圖,然後

bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), originalUri);