美文网首页
自定义相册中,小米MI Note Pro 调用拍照返回,退出相册

自定义相册中,小米MI Note Pro 调用拍照返回,退出相册

作者: 奥创没电了 | 来源:发表于2019-12-03 10:44 被阅读0次

    拍照返回,相册里展示正常,可选中刚拍的,进行下一步操作。退出相册后,在打开相册,发现刚才拍的找不到了,在系统相册中,可以看到刚才拍的。目前是在小米Note pro机型上发现,暂无其他手机验证。多种调试分析后,确定问题就是查询媒体库MediaStore文件,找不到。对照了下知乎开源相册Matisse,运行这个demo是正常的:

    https://github.com/zhihu/Matisse
    

    页面挺丑的,不过不影响,用的是查库刷新库。

    发现拍完后 onActivityResult 中,获取照片路径后,并没有用到传统的

    sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));
    

    而是在实现MediaScannerConnection.MediaScannerConnectionClient接口中,使用:

      MediaScannerConnection mMsc,
      mMsc.connect();  
      mMsc.scanFile(mPath,null);
      mMsc.disconnect();
    

    这样的扫描连接类。

    经过测试,拍完退出,再进相册,正常了,可能再某些机型上会有略微的延迟数百ms,不太确定,不过不影响。

    代码不多,直接附上:

    public class SingleMediaScanner implements MediaScannerConnection.MediaScannerConnectionClient {
    
    private MediaScannerConnection mMsc;
    
    private StringmPath;
    
    private ScanListenermListener;
    
    public interface ScanListener {
          void onScanFinish();
    }
    public SingleMediaScanner(Context context, String mPath, ScanListener mListener) {
        this.mPath = mPath;
        this.mListener = mListener;
        this.mMsc =new MediaScannerConnection(context,this);
        this.mMsc.connect();
    }
    
     @Override public void onMediaScannerConnected() {
            mMsc.scanFile(mPath,null);
    }
    
    @Override
     public void onScanCompleted(String mPath, Uri mUri) {
        mMsc.disconnect();
        if (mListener !=null) {
            mListener.onScanFinish();
      }
    }
    

    }

    使用时 和 sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file))); 一样,都是在拍照完成后,通知刷新媒体库该文件路径:

    new SingleMediaScanner(this.getApplicationContext(), path,new SingleMediaScanner.ScanListener() {
          @Override 
          public void onScanFinish() {
          Log.i("SingleMediaScanner","scan finish!");
        }
    });
    

    可以直接下一行继续操作。扫描完的回调,一般场景暂时用不到。

    相关文章

      网友评论

          本文标题:自定义相册中,小米MI Note Pro 调用拍照返回,退出相册

          本文链接:https://www.haomeiwen.com/subject/oyqcgctx.html