2013-12-17 30 views
1

我試圖用Glass Camera顯示捕獲的圖像並將其顯示在ImageView中。在Google Glass上顯示捕獲的圖像

這就是我現在做的事:

public void startCamera() 
{ 
    Intent captureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(captureIntent, 100);  
} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == 100 && resultCode == RESULT_OK && null != data) 
    { 
     String photoPath = data.getExtras().getString("picture_file_path");   
     BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inPreferredConfig = Bitmap.Config.ARGB_8888; 
     bitmap = BitmapFactory.decodeFile(photoPath, options);   
     mImageView.setImageBitmap(bitmap); 
    } 
} 

然而,位圖是空的。當我登錄了photoPath它給了我像一個文件路徑:

/mnt/sdcard/DCIM/Camera/20131216_195521_665.jpg

任何想法?

回答

2

由於在拍攝照片後發生在Glass上的處理,在調用onActivityResult時可能無法完全寫入文件。

CameraManager javadoc中所述,您應該使用FileObserver將處理推遲到文件準備好之後。爲此,請讓FileObserver遵守文件本身的CLOSE_WRITE事件的給定路徑的父目錄父目錄。我們的camera developer guide頁面底部提供了一個示例。

+0

的答案託尼感謝。但相機javadoc已過期。你能否更新鏈接? –

+0

鏈接已更新,並且我還添加了一個鏈接,指向我們現在爲此邏輯設置的代碼示例。 –

+0

託尼更新鏈接和答案。 :) –

1

正如Tony Allevato所說,問題在於您的程序沒有等待足夠長的時間來顯示文件。當我在XE11上進行實驗時,通常需要5-10秒才能在文件系統中讀取文件。出於某種原因,FileObserver也不適用於我,所以我實現了一個計時器,然後我編寫了自己的活動。

我們聽說GDK的下一個版本將使快照可用,所以你的問題可能會消失,然後你可以使用它。在此期間,你可能要考慮編寫自己的活動進行拍照,因爲我在這裏:

https://github.com/dazza222/GlassCameraSnapshot

相關問題