App拍照,照片压缩存储到app内部,同步更新手机系统相册

H5页面调用安卓相机拍照,然后在H5页面显示:

1、H5调用相机的回调:

java 复制代码
      binding.fragmentWebWebview.setWebChromeClient(new WebChromeClient() {
            @Override
            public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) {
                openCamera();
                filePathCallbacks = filePathCallback;

                return true;
            }
        });

2、开始拍照,图片存储到手机app的缓存目录中,你可以存到sdcard中

java 复制代码
    protected void openCamera(String currentComptUuid) {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

        File appDir = new File(parentPath + "/" + currentComptUuid);
        if (!appDir.exists()) {
            appDir.mkdir();
        }
        String fileName = System.currentTimeMillis() + ".jpg";
        File file = new File(appDir, fileName);
        originalPicPath = file.getPath();

        mCameraUri = FileProvider.getUriForFile(this, getPackageName() + ".fileprovider", new File(originalPicPath));
        intent.putExtra(MediaStore.EXTRA_OUTPUT, mCameraUri);
        startActivityForResult(intent, 0x22);
    }

3、拍完照片,处理照片的回调信息,并采用鲁班缩框架压缩图片

java 复制代码
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (resultCode != -1) { //如果取消拍照
            filePathCallbacks.onReceiveValue(null);
            filePathCallbacks = null;
            return;
        }

        switch (requestCode) {
            case 0x22:
                //图片压缩 不然会很大
                File appDir = new File(originalPicPath); //原图片地址
                if (!appDir.exists()) {
                    appDir.mkdir();
                }

                refrshAlbum(originalPicPath); //同步更新手机相册

                imageZips(this, originalPicPath, appDir.getParent());

                break;
        }
    }

    public void refrshAlbum(String path) {
        try {
            File imageFile = new File(path);
            MediaStore.Images.Media.insertImage(this.getContentResolver(),
                    path, imageFile.getName(), "description");
        } catch (Exception e) {
            LogUtils.log("refrshAlbum:" + e);
        }
    }


    protected String originalPicPath; //原始图片地址


    protected void imageZips(Context context, String photos, String targetPath) {//图片压缩
        Luban.with(this)
                .load(photos)
                .ignoreBy(600)
                .setTargetDir(targetPath) //压缩后文件目录, 如果希望替换原图就不要这行
                .filter(path -> !(TextUtils.isEmpty(path) || path.toLowerCase().endsWith(".gif")))
                .setCompressListener(new OnCompressListener() {
                    @Override
                    public void onStart() {
                        Log.i("get_path", "开始压缩");
                    }

                    @Override
                    public void onSuccess(File file) {
                       Log.i("get_path", "文件名:" + file.getName() + "  压缩成功   路径:" + file);


                       Uri tempUri = Uri.fromFile(file);
                       filePathCallbacks.onReceiveValue(new Uri[]{tempUri}); //将照片给H5
                        filePathCallbacks = null;

                        File orinalFile = new File(originalPicPath); //删除原图片
                        if (orinalFile.exists()) {
                            orinalFile.delete();
                        }
                        // 这个不是在主线程,跟新ui ,切换到主线程
                    }

                    @Override
                    public void onError(Throwable e) {
                        LogUtils.log("压缩失败:" + e);
                    }
                }).launch();
    }
相关推荐
ages_1231 天前
AI销售手机技术架构深度解析:从MDM终端管控到LLM业务赋能的完整闭环
人工智能·智能手机·ai销售手机·ai拓客·ai员工手机·剪流ai员工手机
wujian83111 天前
AI手机版怎么直接生成word?用“AI 导出鸭”把碎片时间变成专业文档
人工智能·ai·chatgpt·智能手机·word·ai导出鸭
花先锋队长1 天前
华为发布全球首款阔直板手机Pura X View,续航轻薄兼得,首发搭载鸿蒙7,为内容而生!
华为·智能手机·harmonyos
独守一片天2 天前
鸿蒙车机手机协同服务生态
华为·智能手机·harmonyos
今天测什么3 天前
连连控移动端远控实测:手机跨机操控,到底是不是 “可用级”?
智能手机·办公软件·远程办公·远程软件·软件测评
IT小白杨3 天前
短视频多账号运营环境管理指南:指纹浏览器与云手机技术解析
大数据·经验分享·web安全·智能手机·音视频·指纹浏览器
2601_966563524 天前
愤怒的小鸟单机版 去广告 安卓+PC端离线纯净版 益智耐玩小游戏 不需联网 老旧手机都可以玩 怀旧手机小游戏
android·智能手机
极客猴子4 天前
多人发言自动区分的录音转文字APP:AI发言人识别实测
人工智能·智能手机·语音识别
Old Uncle Tom5 天前
手机银行用户画像设计
人工智能·智能手机
AndyHuang19766 天前
手机热点组建无线局域网:NAT原理与多设备组网实战指南
智能手机