2010-07-23 61 views
0

我正在使用以下代码通过相机捕获图像,然后显示它。通过摄像头捕获后显示图像时出现问题?

问题,我面临的是当我拍照并按完成按钮它不显示在我的活动中拍摄的图像。

它只是显示空白图像字段。

任何人指导我我犯了什么错误?可能是路径相关的问题,但我不确定。

protected Button _button; 
    protected ImageView _image; 
    protected TextView _field; 
    protected String _path; 
    protected boolean _taken; 

    protected static final String PHOTO_TAKEN = "photo_taken"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.main); 

     _image = (ImageView) findViewById(R.id.image); 
     _field = (TextView) findViewById(R.id.field); 
     _button = (Button) findViewById(R.id.button); 
     _button.setOnClickListener(new ButtonClickHandler()); 

     _path = Environment.getExternalStorageDirectory() + "/images/media/make_machine_example.png"; 

     //media/external/images/media/2 


    } 

    public class ButtonClickHandler implements View.OnClickListener 
    { 
     public void onClick(View view){ 
      Log.i("MakeMachine", "ButtonClickHandler.onClick()"); 
      startCameraActivity(); 
     } 
    } 

    protected void startCameraActivity() 
    { 
     Log.i("MakeMachine", "startCameraActivity()"); 
     File file = new File(_path); 
     Uri outputFileUri = Uri.fromFile(file); 

     Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 

     startActivityForResult(intent,0); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
     Log.i("MakeMachine", "resultCode: " + resultCode); 
     switch(resultCode) 
     { 
      case 0: 
       Log.i("MakeMachine", "User cancelled"); 
       break; 

      case -1: 
       onPhotoTaken(); 
       break; 
     } 
    } 

    protected void onPhotoTaken() 
    { 
     Log.i("MakeMachine", "onPhotoTaken"); 

     _taken = true; 

     BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inSampleSize = 4; 


     Bitmap bitmap = BitmapFactory.decodeFile(_path, options); 

     _image.setImageBitmap(bitmap); 

     _field.setVisibility(View.GONE); 
    } 

回答

0

这就是我一直在寻找

目录结构,我得到通过我的捕捉开放的数据,现在我能够显示图像。

不需要使用硬编码的图像路径。

public String getRealPathFromURI(Uri contentUri) { 

    // can post image 
    String [] proj={MediaStore.Images.Media.DATA}; 
    Cursor cursor = managedQuery(contentUri, 
      proj, // Which columns to return 
      null,  // WHERE clause; which rows to return (all rows) 
      null,  // WHERE clause selection arguments (none) 
      null); // Order-by clause (ascending by name) 
    int column_index = 
    cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 

    return cursor.getString(column_index); 
}