【问题标题】:Display captured image on Google Glass在 Google Glass 上显示拍摄的图像
【发布时间】:2014-01-21 22:48:20
【问题描述】:

我尝试使用 Glass Camera 显示捕获的图像并将其显示在 ImageView 中。

这就是我现在所做的:

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

有什么想法吗?

【问题讨论】:

    标签: java android google-glass google-gdk


    【解决方案1】:

    由于在您拍照后在 Glass 上进行处理,在调用 onActivityResult 时文件可能未完全写入。

    您应该按照CameraManager javadoc 中的说明使用FileObserver 将您的处理推迟到文件准备好之后。为此,请让FileObserver 观察文件本身的CLOSE_WRITE 事件给定路径的父目录。我们的camera developer guide 页面底部提供了一个示例。

    【讨论】:

    • 托尼感谢您的回答。但是Camera javadoc已经过期了。可以更新一下链接吗?
    • 链接已更新,我还添加了一个指向我们现在为这个逻辑准备的代码示例的链接。
    • Tony 更新链接和答案。 :)
    • 托尼,这个处理完成并且文件完全可用之前可能需要 10-15 秒是正常的吗?谢谢
    【解决方案2】:

    正如 Tony Allevato 所说,问题在于您的程序没有等待足够长的时间来显示文件。当我在 XE11 上对此进行试验时,通常需要 5-10 秒才能在文件系统中读取文件。由于某种原因,FileObserver 也不适合我,所以我实现了一个计时器,然后我编写了自己的活动。

    我们听说 GDK 的下一个版本将提供快照,因此您的问题可能会消失,因为您可以使用它。与此同时,您可能需要考虑编写自己的活动来拍照,就像我在这里所做的那样:

    https://github.com/dazza222/GlassCameraSnapshot

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      • 1970-01-01
      • 1970-01-01
      • 2014-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多