【问题标题】:Trouble capturing image on Google Glass在 Google Glass 上拍摄图像时遇到问题
【发布时间】:2014-01-06 22:48:23
【问题描述】:

我无法捕捉图像并将其保存到 Google Glass 上的外部存储设备中。我有以下代码。

    Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE, null);

    String imagePath = getPhotoPath();

    _imagePath = imagePath;
    File imageFile = new File(_imagePath);

    Uri imageUri = Uri.fromFile(imageFile);
    cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);

    startActivityForResult(cameraIntent, ACTION_CAPTURE_IMAGE);    

还有 getPhotoPath() 的代码

    private String getPhotoPath(){

    String photoPath = null;

    String state = Environment.getExternalStorageState();

    if (Environment.MEDIA_MOUNTED.equals(state)) {

        long captureTime = System.currentTimeMillis();

        photoPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/TOTAL_" + captureTime + ".jpg";
    }       

    return photoPath;
}

我已经验证 _imagePath 不为空,但是当我尝试在 onActivityResult() 中执行以下操作时

    File imageFile = new File(_imagePath);

    if(!imageFile.exists()){
    Log.d(LOG_TAG, "sendPhoto: FILE DOES NOT EXIST, imagePath=" + _imagePath);
    }

文件不存在。我可以通过在 Eclipse 中的 Google Glass 设备上查看文件资源管理器来验证它在存储中不存在。

我在项目清单中拥有 WRITE_EXTERNAL_STORAGE 权限,但仍有一些问题。

一条可能相关的 logcat 消息:

01-06 16:28:15.067: E/CachedFilesManager(634): Failed to change mode on file /mnt/sdcard/thumbnail_cache/t_thumb_20140106_162814_113.jpg
01-06 16:28:15.067: E/CachedFilesManager(634): java.io.IOException: Operation not permitted
01-06 16:28:15.067: E/CachedFilesManager(634):  at com.google.glass.fs.Filesystem.changeMode(Native Method)
01-06 16:28:15.067: E/CachedFilesManager(634):  at com.google.glass.util.CachedFilesManager.save(CachedFilesManager.java:433)
01-06 16:28:15.067: E/CachedFilesManager(634):  at com.google.glass.camera.CameraUtils.saveThumbnailToCachedFiles(CameraUtils.java:76)
01-06 16:28:15.067: E/CachedFilesManager(634):  at com.google.glass.camera.ApiTakePictureActivity$1.doInBackground(ApiTakePictureActivity.java:110)
01-06 16:28:15.067: E/CachedFilesManager(634):  at com.google.glass.camera.ApiTakePictureActivity$1.doInBackground(ApiTakePictureActivity.java:105)
01-06 16:28:15.067: E/CachedFilesManager(634):  at android.os.AsyncTask$2.call(AsyncTask.java:273)
01-06 16:28:15.067: E/CachedFilesManager(634):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
01-06 16:28:15.067: E/CachedFilesManager(634):  at java.util.concurrent.FutureTask.run(FutureTask.java:137)
01-06 16:28:15.067: E/CachedFilesManager(634):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
01-06 16:28:15.067: E/CachedFilesManager(634):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
01-06 16:28:15.067: E/CachedFilesManager(634):  at java.lang.Thread.run(Thread.java:856)

知道发生了什么吗?是否根本不允许写入 Glass 存储?似乎不太可能,但我不知道发生了什么。

【问题讨论】:

  • 你是在模拟器还是硬件上测试?
  • 没有模拟器,我有谷歌眼镜。

标签: android camera google-glass google-gdk


【解决方案1】:

Glass 不支持使用 EXTRA_OUTPUT 额外的意图来指定最终图像文件的路径。相反,请参阅GDK Camera Developer Guide 中的示例以了解如何检索保存的图像文件的路径并使用FileObserver 等待它被写出。

【讨论】:

  • 感谢您的快速响应。我应该更彻底地查看文档。
猜你喜欢
  • 1970-01-01
  • 2014-12-28
  • 1970-01-01
  • 2013-07-30
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多