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);
    }
}

ただし、ビットマップは null です。photoPath をログに記録すると、次のようなファイル パスが表示されます。

/mnt/sdcard/DCIM/カメラ/20131216_195521_665.jpg

何か案は?

4

2 に答える 2

2

写真を撮影した後に Glass で発生する処理のため、onActivityResult呼び出し時にファイルが完全に書き込まれていない場合があります。

ファイルの準備が整うまで処理を延期するには、 javadocFileObserverで説明されているようにa を使用する必要があります。これを行うには、ファイル自体のイベントの指定されたパスの親ディレクトリを観察します。この例は、カメラ開発者ガイドのページの下部に記載されています。CameraManagerFileObserverCLOSE_WRITE

于 2013-12-17T04:46:08.227 に答える