2012-12-09 137 views
0

我想從我的application.It正在開放的Android系統自身的攝像頭應用程序!但是我有一個問題,當我想要得到這樣的信息,Android的保存捕捉的圖像以Android相機拍攝的

- 圖像ID

- 圖像顯示名稱

- 影像標題

- 圖像數據

- 影像尺寸

- 圖像拍攝日期

應存儲在MediaStore.I成功地讓圖像的path.After,我必須讓信息像上面,但是當我嘗試獲取信息,應用程序將引發異常。

部分我的代碼是這樣的:

while(cursor.moveToNext()) 
    { 
     Date date = new Date(Long.valueOf(cursor.getString(5))); 
     SimpleDateFormat dateF = new SimpleDateFormat("yyyy/MM/dd"); 
     SimpleDateFormat timeF = new SimpleDateFormat("HH:mm"); 

     imageListInfo.add(
       cursor.getString(0) + ";" 
       + cursor.getString(1) + ";" 
       + cursor.getString(2) + ";" 
       + cursor.getString(3) + ";" 
       + cursor.getString(4) + ";" 
       + dateF.format(date) + ";" 
       + timeF.format(date) 
       ); 
    } 

之前,我捕獲並保存從默認攝像機應用程序從我的應用程序調用的照片尚未收到任何問題。

我覺得有一個問題應該解決。我怎樣才能保存圖像與其信息捕獲的照片,而無需從我的應用程序調用?

編輯:提前

越來越ID,當它發生的情況 「cursor.getString(0)」 代碼

android.database.StaleDataException: Attempting to access a closed CursorWindow.Most probable cause: 
cursor is deactivated prior to calling this method. 
at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:139) 
at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50) 
at android.database.CursorWrapper.getString(CursorWrapper.java:114) 
at com.canberk.data.warehouse.BaseActivity.indexingForImageMediaStore(BaseActivity.java:313) 
at com.canberk.data.warehouse.BaseActivity$BackGroundWorker.doInBackground(BaseActivity.java:109) 
at com.canberk.data.warehouse.BaseActivity$BackGroundWorker.doInBackground(BaseActivity.java:1) 
at android.os.AsyncTask$2.call(AsyncTask.java:264) 
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
at java.lang.Thread.run(Thread.java:856) 

感謝

+0

使用LogCat檢查與您的異常相關的Java堆棧跟蹤。如果您不瞭解堆棧跟蹤,請通過「編輯」鏈接將其添加到您的問題中。另請注意,在任何給定設備上不需要默認相機應用程序將生成的圖像放入「MediaStore」中。 – CommonsWare

回答

1

您的堆棧跟蹤看起來像自解釋:您正在訪問從indexingForImageMediaStore()關閉Cursor

+0

光標關閉的含義是什麼?是我必須使用內部內容的uri而不是外部內容嗎?但是我可以用外部內容找到uri,除非我從我的應用程序捕獲新照片:) – COvayurt

+0

@COvayurt:「光標的含義是什麼關閉?」 - 這意味着你調用了'close()'。 – CommonsWare

+0

你能告訴我怎麼修復它?因爲它不會錯。它通常工作時,我不會捕獲照片。我看過mediastore數據庫,發現捕獲的照片。有一些缺失的元素,如「尺寸「」datetaken「」寬度「」高度「...我用默認相機applicaiton拍攝的照片元素沒有從我的應用程序調用沒有缺少的元素。 – COvayurt

2

但我有一個問題,當我想要獲得像...應該存儲在MediaStore的信息

那麼,該數據只在MediaStore時,用戶直接調用Camera應用程序拍攝照片。當應用程序被Intent調用以將照片返回給您的應用程序時,圖像數據可能會保存在您請求的位置,但沒有任何內容隱含存儲在MediaStore中。

如果您的應用程序請求照片中的常用技術,是應該做的INSERT INTO MediaStore首先你要關聯的初始元數據,這將返回Uri可以傳遞到相機的應用程序,用於存儲所拍攝的圖像。然後在返回後,如果您需要輸入附加元數據(如圖像大小),則可以讀取此信息並更新數據庫。

+0

我可以將照片保存在我想要的位置,但是在查看最近拍攝的照片時存在問題。如果我沒有用我的應用程序捕捉照片,這個異常不會出現。 – COvayurt

相關問題