1

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

有任何想法吗?

4

2 回答 2

2

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

您应该使用javadocFileObserver中描述的a来推迟您的处理,直到文件准备好之后。为此,请观察文件本身事件的给定路径的父目录。我们的相机开发者指南页面底部提供了一个示例。CameraManagerFileObserverCLOSE_WRITE

于 2013-12-17T04:46:08.227 回答
1

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

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

https://github.com/dazza222/GlassCameraSnapshot

于 2013-12-18T00:41:16.833 回答