我怎么能等到数据写入文件?

时间:2017-10-03 09:27:51

标签: android camera

我想从相机拍照,保存到文件并上传到服务器。我使用以下代码:

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, 
                           Uri.fromFile(mCurrentPhotoFile));
startActivityForResult(takePictureIntent, RESULT_IMAGE_CAPTURE);

 if (requestCode == RESULT_IMAGE_CAPTURE && resultCode == RESULT_OK && mCurrentPhotoFile != null) {
     uploadFile(mCurrentPhotoFile);
 }

但有时文件大小为0字节。我认为这是因为图片不会立即保存,我需要等待保存完毕。

我如何解决它?

1 个答案:

答案 0 :(得分:0)

您必须等到图片保存在图库中。您可以将图像上传到服务器。

所以下面的课程是在图库中保存后获取图片。

public class SingleMediaScanner implements MediaScannerConnection.MediaScannerConnectionClient {

    private MediaScannerConnection mMs;
    private File mFile;

    public SingleMediaScanner(Context context, File f) {
        mFile = f;
        mMs = new MediaScannerConnection(context, this);
        mMs.connect();
    }

    @Override
    public void onMediaScannerConnected() {
        mMs.scanFile(mFile.getAbsolutePath(), null);
    }

    @Override
    public void onScanCompleted(String path, Uri uri) {
        mMs.disconnect();

        System.out.println("path......"+path);
        System.out.println("uri......"+uri);

        // here you can upload image to server
        uploadFile(mCurrentPhotoFile);
    }
}

要执行上面的类,只需调用构造函数

new SingleMediaScanner(this, imageFile);