2011-07-25 60 views
2

我用下面的代碼捕獲的Android的圖像:圖像捕捉問題移動

String fileName = "image.jpeg"; 
       //create parameters for Intent with filename 
       ContentValues values = new ContentValues(); 
       values.put(MediaStore.Images.Media.TITLE, fileName); 
       values.put(MediaStore.Images.Media.DESCRIPTION,"Image captured by camera"); 
       //imageUri is the current activity attribute, define and save it for later usage (also in onSaveInstanceState) 
       imageUri = getContentResolver().insert(
         MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); 
       //create new Intent 
       Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
       intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); 
       intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); 
       startActivityForResult(intent, CAMERA_PIC_REQUEST); 

拍攝圖像後,我用下面的代碼獲取圖像:

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
     { 
      super.onActivityResult(requestCode, resultCode, data); 
          if(requestCode == CAMERA_PIC_REQUEST) 
       { 
        if(resultCode == Activity.RESULT_OK) 
        { 
         if(imageUri == null) 
          imageUri = data.getData(); 
         String filePath = getPath(imageUri); 
         UploadContentToServer(filePath, "image.jpeg"); 
         //getBytesFromFile(filePath); 
        } 
       } 
} 

它在HTC橫向模式下的所有設備中都能正常工作。

我在我的應用程序中使用肖像模式。但是當我在HTC中以橫向模式拍攝圖像時,我正在拍攝imageUri null。 如何解決這個問題,它只在HTC設備。

+0

當您的設備處於橫向模式時,您是否有任何強制關閉? –

+0

不,實際上在應用程序中我已經設置了定位肖像,只有imageUri爲空 – Sandy

+0

嗨沙我還有一個問題,如果你的設備是在肖像模式,你得到imageUri? –

回答

2

當我試圖用相機捕捉圖像時,我在我的星系s2上遇到了同樣的問題。嘗試在intent中指定真實路徑,然後在onActivityResult中獲取路徑。直接從Intent數據提取uri對我來說也不適用於圖像捕捉。

這裏是我的意思的例子:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd-HHmmss"); 
fileName = dateFormat.format(new Date()) + ".jpg"; 
File photo = new File(Environment.getExternalStorageDirectory(), fileName); 
Intent cameraintent = new Intent("android.media.action.IMAGE_CAPTURE"); 
cameraintent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo)); 
imageURICamera = Uri.fromFile(photo); 
startActivityForResult(cameraintent, 1); 

現在在onActivityResult再次獲得照片:

realPath = Environment.getExternalStorageDirectory() + "/" + fileName; 
+0

謝謝,它的作品:) – Sandy

+0

不客氣 – Arcadia

+0

我用它不能說它是否會工作,但非常有幫助 –

0

適用於HTC Desire HD,下面的方法處理。

protected Uri createUriFromPhotoIntentForHtcDesireHD(Intent intent, Uri uri) { 
    FileOutputStream fos = null; 
    try { 
     Bitmap bitmap = (Bitmap) intent.getExtras().get("data"); 
     File outputDir = getCacheDir(); 
     File outputFile = File.createTempFile("Photo-", ".jpg", outputDir); 
     fos = new FileOutputStream(outputFile); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fos); 
     uri = Uri.fromFile(outputFile); 
    } catch (IOException e) { 
     Ln.e(e, "Error creating temp file for HTC Desire HD"); 
     e.printStackTrace(); 
    } finally { 
     try { 
      if (fos != null) { 
       fos.close(); 
      } 
     } catch (IOException e) { 
      Ln.e(e, "Error closing temp file for HTC Desire HD"); 
     } 
    } 
    return uri; 
}