2013-01-24 45 views
3

我正在調用相機並捕獲圖像,我必須逐一捕獲10張圖像並將它們存儲在SD卡上,然後才能將它們設置爲圖像視圖。請檢查我的下面的代碼,它不會設置爲圖像視圖。捕捉圖像並將其存儲到新文件夾中的SD卡上

我該如何將它存儲在SD卡上並檢索它以設置圖像視圖?如何在存儲之前命名圖像?

在第一個活動我打電話的相機:

protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    mContext = this; 
    init(); 
} 

private void init() { 
    String extStorageDirectory = Environment.getExternalStorageDirectory() 
      + "/testing"; 

    File xmlDirectory = new File(extStorageDirectory); 
    if (!xmlDirectory.exists()) 
     xmlDirectory.mkdirs(); 

    iv1 = (ImageView) findViewById(R.id.iv1); 
} 

private OnClickListener onBtnClicked = new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     switch (v.getId()) { 
      case PHOTO: 
       Intent selectImageIntent = new Intent(first.this, 
         second.class); 
       startActivityForResult(selectImageIntent, 1); 
       break; 
     } 
    } 
}; 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == 1) { 
     if (resultCode == RESULT_OK) { 
      String result = data.getStringExtra("result"); 

      Log.d("*****************", 
        "inside onactivityresult in main activity=" + result); 

      Bitmap bitmap = BitmapFactory.decodeFile(result); 
      iv1.setImageBitmap(bitmap); 
      iv1.setScaleType(ScaleType.FIT_XY); 
     } 
    } 
} 

而在我的第二個活動,我拍攝圖像,並把它傳遞給第一個活動:

private void init() { 
    picturePath = Environment.getExternalStorageDirectory() + "/Camera/" 
      + "test.jpg"; 
    System.out.println("thumbnail path~~~~~~" + picturePath); 
    File file = new File(picturePath); 
    outputFileUri = Uri.fromFile(file); 
} 


public void startCamera() { 
    Intent intent = new Intent(
      android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
    startActivityForResult(intent, IMAGE_CAPTURE); 
} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == IMAGE_CAPTURE) { 
     if (resultCode == RESULT_OK) { 
      Intent returnIntent = new Intent(); 
      returnIntent.putExtra("result", picturePath); 
      setResult(RESULT_OK, returnIntent); 
      finish(); 
     } 
    } 
} 

回答

0

它不是一個在其他方法中初始化對象的好習慣。

刪除此行iv1 = (ImageView) findViewById(R.id.iv1);init()方法並將您的OnCreate()更改爲下面的方法。

protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
//Initialize here 
    iv1 = (ImageView) findViewById(R.id.iv1); 

    mContext = this; 
    init(); 

} 

希望它能幫助你。

+0

不不工作仍然是相同的issure – cavallo

+0

@cavallo:你可以發佈你的logcat在這裏。 「 –

+0

」在「其他方法」中初始化對象不是一種好的做法。「 - 理由?想知道,因爲我也這樣做。 – MKJParekh

0

使用此代碼&把你的文件名&路徑,攝像機將捕捉圖像&店它與給定名稱

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      if (!APP_FILE_PATH_Media.exists()) 
      { 
       APP_FILE_PATH_Media.mkdirs(); 
      } 
     uriSavedImage =new File(APP_FILE_PATH_Media+ "/" + 
        "filename"+ ".jpeg"); 
     cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(uriSavedImage)); 
     startActivityForResult(cameraIntent, CAMERA_REQUEST); 

在onActivityResult()使用此代碼來設置ImageView的

try 
       { 
       BitmapFactory.Options options = new BitmapFactory.Options(); 
       options.inSampleSize = 1; 
       bm = BitmapFactory.decodeFile(uriSavedImage.getAbsolutePath(), options); 
       } 
       catch(Exception ee) 
       { 

       } 
相關問題