2013-11-25 46 views
1

我使用GDK開發玻璃的應用程序,但我在開始的相機意圖谷歌玻璃GDK - 錯誤打開相機

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
startActivityForResult(intent, RESULT_FROM_CAMERA); 

問題和錯誤是:

11-24 19:21:30.925: E/StrictMode(591): class com.google.glass.camera.ApiTakePictureActivity; instances=2; limit=1 
11-24 19:21:30.925: E/StrictMode(591): android.os.StrictMode$InstanceCountViolation: class com.google.glass.camera.ApiTakePictureActivity; instances=2; limit=1 
11-24 19:21:30.925: E/StrictMode(591): at android.os.StrictMode.setClassInstanceLimit(StrictMode.java:1) 

任何建議?

+0

我剛開始相機開發並遇到同樣的問題。你設法解決它嗎? –

+0

不,我仍然有問題。該照片正在被拍攝並保存,但應用程序崩潰並且onActivityResult未被調用。嘗試在啓動意圖時使用「輸出」額外的照片文件的期望位置的值,並在創建意圖之前使用FileObserver,忽略onActivityResult –

+0

在我的情況下,它不會崩潰,但我無法訪問文件,相同的檢查adb上的文件,它存在。我會嘗試按照你的建議指定文件名。謝謝! –

回答

0

最後我已經解決了。異常仍然顯示,但它完美。使用額外的「輸出」不起作用,因爲它沒有被相機意圖使用。 OnActivityResult不起作用,因爲它沒有被調用... 我所做的是忽略onActivityResult,並使用FileObserver指向Camera文件夾並在創建新文件時等待事件。

final File photoFolder=new File(Environment.getExternalStorageDirectory() + File.separator + "DCIM/Camera"); 
fileObserver = new FileObserver(photoFolder.getAbsolutePath(), FileObserver.CREATE) 
     { 
      @Override 
      public void onEvent(int event, final String path) 
      { 
       if(event == FileObserver.CREATE) 
       { 
        fileObserver.stopWatching(); 
        // Do whatever 
       } 
      } 
     }; 
     fileObserver.startWatching(); 
-1

你似乎有多個實例打開

instances=2; limit=1 
+0

我只有一個地方,我開始相機意圖:S –

0

我想創建意圖時,你需要使用常量從android.provider.MediaStore:

 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(intent, RESULT_FROM_CAMERA); 
+0

謝謝,但我不' t認爲它會改變什麼,因爲該常數的值是「android.media.action.IMAGE_CAPTURE」 –

+0

你是否聲明瞭android.hardware.Camera類型的對象並調用camera.open()?如果是這樣,請將這些呼叫發出。我能夠通過簡單地包含這些來重現上述錯誤。我的代碼沒有它們。 – Darren

+0

不,我沒有聲明任何Camera對象,我只是使用上面兩行:S –