Android 调用系统相机

最近碰到一个android 调用系统相机拍照问题
调用相机代码网上随便找到很多

    Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    Uri uri = Uri.fromFile(new File(imagePath));
    intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);
    startActivityForResult(intent,RESULT_CAPTURE_IMAGE);

定义一个文件路径,new File,要确保文件夾都存在
然后果在onActivityResult去取文件
在这一步碰到一个奇葩问题,小米4手机拍完点确认后,取到的文件是空的
要等个几秒钟才有,其它手机并没有这个问题
最后用Observable.interval间隔时间去取直到取到的方案解决问题
不用Rx也可以用for等循环去取
附个代码片段):

    subscription = Observable.interval(500L, TimeUnit.MILLISECONDS).map(new Func1<Long, Long>() {
                public Long call(Long aLong) {
                    long size = 0L;
                    if (file.exists() && file.length() > 0L) {
                        size = file.length();
                    }
                    return size;
                }
            }).filter(new Func1<Long, Boolean>() {
                public Boolean call(Long aLong) {
                    return aLong != 0L;
                }
            }).compose(activity.<Long>bindToLifecycle()).observeOn(AndroidSchedulers.mainThread()).subscribeOn(Schedulers.io()).subscribe(new Action1<Long>() {
                public void call(Long aLong) {
                    //处理逻辑
                    subscription.unsubscribe();
               });

标签: android, action_image_capture, 系统相机