2014-11-01 4 views
1

Google Glass 개발과 혼동되면서 여기 있습니다. 내 응용 프로그램은 현재 내장 카메라 기능과 GDK 사이트 (https://developers.google.com/glass/develop/gdk/camera)의 샘플 코드를 사용하여 사진을 찍고 있습니다. 사진을 찍을 때 사진이 찍히는 것처럼 보이지만 API를 사용하여 imgur 서버에 업로드하려고하면 FileNotFound 예외가 발생합니다. 또한 Android Studio의 파일 탐색기를 사용하려고하면 파일 경로에 이미지가없는 것 같습니다. 파일이 생성되지 않았거나 잘못된 경로에 어떻게 든 액세스하고있는 것처럼 보입니다. 나는 무엇을 잘못 할 수 있 었는가?Google Glass에서 앱 내에서 찍은 사진에 액세스 할 수 없습니다.

public void startRecog(){ 
     Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     Log.i(TAG,"Got to onActivity"); 
     Log.i(TAG,"Request code: " + requestCode + ", Result code: " + resultCode + ", what it wants: " + RESULT_OK); 
     if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK) { 
      Log.i(TAG,"Got inside the IF"); 
      String picturePath = data.getStringExtra(Intents.EXTRA_THUMBNAIL_FILE_PATH); 
      // String picturePath = data.getStringExtra(Intents.EXTRA_PICTURE_FILE_PATH); 

      Log.i(TAG,"The real path: " + picturePath); 
      processPictureWhenReady(picturePath); 
     } 

     super.onActivityResult(requestCode, resultCode, data); 
    } 

    private void processPictureWhenReady(final String picturePath) { 
     final File pictureFile = new File(picturePath); 

     if (pictureFile.exists()) { 
      // The picture is ready; process it. 
      Log.i(TAG,"Got in from the picture processing"); 
      new ImgurUploadTask(Uri.parse(picturePath), this).execute(); 
     } else { 
      // The file does not exist yet. Before starting the file observer, you 
      // can update your UI to let the user know that the application is 
      // waiting for the picture (for example, by displaying the thumbnail 
      // image and a progress indicator). 

      final File parentDirectory = pictureFile.getParentFile(); 
      FileObserver observer = new FileObserver(parentDirectory.getPath(), 
        FileObserver.CLOSE_WRITE | FileObserver.MOVED_TO) { 
       // Protect against additional pending events after CLOSE_WRITE 
       // or MOVED_TO is handled. 
       private boolean isFileWritten; 

       @Override 
       public void onEvent(int event, String path) { 
        if (!isFileWritten) { 
         // For safety, make sure that the file that was created in 
         // the directory is actually the one that we're expecting. 
         File affectedFile = new File(parentDirectory, path); 
         isFileWritten = affectedFile.equals(pictureFile); 

         if (isFileWritten) { 
          stopWatching(); 

          // Now that the file is ready, recursively call 
          // processPictureWhenReady again (on the UI thread). 
          runOnUiThread(new Runnable() { 
           @Override 
           public void run() { 
            processPictureWhenReady(picturePath); 
           } 
          }); 
         } 
        } 
       } 
      }; 
      observer.startWatching(); 
     } 
    } 

오류 나는 점점 오전 : 카메라 사용

코드

11-01 14:34:43.281 10449-10449/com.example.cerveau.recognizeplaces I/RecogPlaces﹕ Got to onActivity 
11-01 14:34:43.281 10449-10449/com.example.cerveau.recognizeplaces I/RecogPlaces﹕ Request code: 100, Result code: -1, what it wants: -1 
11-01 14:34:43.281 10449-10449/com.example.cerveau.recognizeplaces I/RecogPlaces﹕ Got inside the IF 
11-01 14:34:43.281 10449-10449/com.example.cerveau.recognizeplaces I/RecogPlaces﹕ The real path: /storage/emulated/0/storage/emulated/0/thumbnail_cache/t_thumb_20141101_143439_397.jpg 
11-01 14:34:43.281 10449-10449/com.example.cerveau.recognizeplaces I/RecogPlaces﹕ Got in from the picture processing 
11-01 14:34:43.288 10449-10704/com.example.cerveau.recognizeplaces E/ImgurUploadTask﹕ could not open InputStream 
    java.io.FileNotFoundException: No content provider: /storage/emulated/0/thumbnail_cache/t_thumb_20141101_143439_397.jpg 
      at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1049) 
      at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:904) 
      at android.content.ContentResolver.openInputStream(ContentResolver.java:629) 
      at com.example.cerveau.recognizeplaces.ImgurUploadTask.doInBackground(ImgurUploadTask.java:32) 
      at com.example.cerveau.recognizeplaces.ImgurUploadTask.doInBackground(ImgurUploadTask.java:16) 
      at android.os.AsyncTask$2.call(AsyncTask.java:302) 
      at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
      at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:240) 
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
      at java.lang.Thread.run(Thread.java:841) 

을 그리고 그래, 내가 내 AndroidManifest를 설정 올바른 권한을 가지고 생각을 ...

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="com.google.android.glass.permission.DEVELOPMENT" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.INTERNET" /> 

고마워요! Glass 개발을 위해 모든 단계에서 문제점을 계속 해결해 주며 끝까지 나를 실망하게합니다. 도와 주셔서 정말 고맙습니다.

답변

2
new ImgurUploadTask(Uri.parse(picturePath) 

이것은 사용자의 문제입니다. Uri.parse는 자격이 없기 때문에 저장소 경로 (예 : "/ storage/emulated/0/thumbnail_cache ...")에서 사용할 수 없습니다.

은 다음과 같이 열린 우리당을 만듭니다

Uri.fromFile(pictureFile) 

이 출력됩니다 유효한 열린 우리당 시작 "파일 : //"로.