在Google Glass上显示捕获的图像

时间:2013-12-17 03:49:35

标签: java android google-glass google-gdk

我尝试使用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

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

由于拍摄照片后在Glass上进行处理,因此在调用onActivityResult时可能无法完整写入文件。

您应该使用CameraManager javadoc中所述的FileObserver来推迟处理,直到文件准备就绪。为此,让FileObserver观察文件本身上CLOSE_WRITE事件的给定路径的父目录。我们camera developer guide中的页面底部提供了一个示例。

答案 1 :(得分:1)

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

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

https://github.com/dazza222/GlassCameraSnapshot