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

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

1、H5调用相机的回调:

      binding.fragmentWebWebview.setWebChromeClient(new WebChromeClient() {@Overridepublic boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) {openCamera();filePathCallbacks = filePathCallback;return true;}});

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

    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、拍完照片,处理照片的回调信息,并采用鲁班缩框架压缩图片

    @Overridepublic 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() {@Overridepublic void onStart() {Log.i("get_path", "开始压缩");}@Overridepublic void onSuccess(File file) {Log.i("get_path", "文件名:" + file.getName() + "  压缩成功   路径:" + file);Uri tempUri = Uri.fromFile(file);filePathCallbacks.onReceiveValue(new Uri[]{tempUri}); //将照片给H5filePathCallbacks = null;File orinalFile = new File(originalPicPath); //删除原图片if (orinalFile.exists()) {orinalFile.delete();}// 这个不是在主线程,跟新ui ,切换到主线程}@Overridepublic void onError(Throwable e) {LogUtils.log("压缩失败:" + e);}}).launch();}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/8206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024Windows11最新安装pyspider

1、创建conda虚拟环境 conda create -n _pyspider python==3.6虚拟环境建好后会自动有 wheel库2、配置phantom浏览器 参考phantom安装 3、conda安装pycurl conda install pycurl4、一次性安装各种依赖 requirements.txt内容如下: Flask==0.10 Jinja2==2.7 chardet==3.0.…

【MQTT】服务端、客户端工具使用记录

目录 一、服务端 1.1 下载 1.2 相关命令 &#xff08;1&#xff09;启动 &#xff08;2&#xff09;关闭 &#xff08;3&#xff09;修改用户名和密码 1.3 后台管理 &#xff08;1&#xff09;MQTT配置 &#xff08;2&#xff09;集群概览 &#xff08;3&#xff09;…

livox雷达斜装修改

fast_lio中的mid360.yaml中的外参 extrinsic_est_en: false # true: enable the online estimation of IMU-LiDAR extrinsicextrinsic_T: [ -0.011, -0.02329, 0.04412 ]extrinsic_R: [ 1, 0, 0,

基于内容的推荐方法有哪些实施难点

1、特征提取的复杂性&#xff1a; 基于内容的推荐方法依赖于从用户行为和物品属性中提取的有效特征。然而&#xff0c;对于文本、视频、音频等多媒体内容&#xff0c;特征提取往往较为复杂&#xff0c;需要专业的领域知识和高效的算法。此外&#xff0c;提取的特征的质量直接影…

如何使用SkyWalking收集分析分布式系统的追踪数据

Apache SkyWalking 是一个开源的观测性工具&#xff0c;用于收集、分析和展示分布式系统的追踪数据。SkyWalking 支持多种语言的追踪&#xff0c;包括但不限于 Java、.NET、Node.js 等。以下是使用 SkyWalking 工具实现数据采集的详细步骤&#xff1a; 1. 下载和安装 SkyWalkin…

数据挖掘算法原理与实践:决策树

第2关&#xff1a;决策树算法原理 任务描述 本关任务&#xff1a;根据本关所学知识&#xff0c;完成 calcInfoGain 函数。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 信息熵&#xff1b;条件熵&#xff1b;信息增益。 信息熵 信息是个很抽象的概念。…

代码随想录算法训练营第六十一天| 739. 每日温度,496.下一个更大元素 I

题目与题解 739. 每日温度 题目链接&#xff1a;739. 每日温度 代码随想录题解&#xff1a;739. 每日温度 视频讲解&#xff1a;单调栈&#xff0c;你该了解的&#xff0c;这里都讲了&#xff01;LeetCode:739.每日温度_哔哩哔哩_bilibili 解题思路&#xff1a; 最好想的就是暴…

Flink面试整理-Flink常见API

Apache Flink 提供了多种 API,使开发者能够方便地实现复杂的数据处理和分析任务。以下是 Flink 中一些常见的 API: DataStream API:用于构建实时流处理应用程序。支持事件时间(Event Time)、摄取时间(Ingestion Time)和处理时间(Processing Time)的概念。提供丰富的操…

风电厂数字孪生3D数据可视化交互展示构筑智慧化电厂管理体系

随着智慧电厂成为未来电力企业发展的必然趋势&#xff0c;深圳华锐视点紧跟时代步伐&#xff0c;引领技术革新&#xff0c;推出了能源3D可视化智慧管理系统。该系统以企业现有的数字化、信息化建设为基础&#xff0c;融合云平台、大数据、物联网、移动互联、机器人、VR虚拟现实…

Android 右键 new AIDL 无法选择

提示 (AIDL File)Requires setting the buildFeatures.aidl to true in the build file&#xff09; 解决方式&#xff1a; 在app的build.gradl中 adnroid{} 添加&#xff1a; buildFeatures{aidl true}

Oracle-一次TX行锁堵塞事件

问题背景&#xff1a; 接用户问题报障&#xff0c;应用服务出现大量会话堆积现象&#xff0c;数据库锁堵塞严重&#xff0c;需要协助进行问题定位和排除。 问题分析&#xff1a; 登录到数据库服务器上&#xff0c;首先查看一下数据库当前的等待事件情况&#xff0c;通过gv$ses…

Java|用爬虫解决问题

使用Java进行网络爬虫开发是一种常见的选择&#xff0c;因为Java语言的稳定性和丰富的库支持使得处理网络请求、解析HTML/XML、数据抓取等任务变得更加便捷。下面是一个简单的Java爬虫示例&#xff0c;使用了Jsoup库来抓取网页内容。这个示例将展示如何抓取一个网页的标题。 准…

教你零成本,免费使用comfyui复现remini爆火的黏土风格转绘(附完整教程)

在五一假期期间,一款名为Remini的AI照片编辑软件在小红书上迅速走红,其独特的“丑萌”黏土风格滤镜深受广大博主和用户的喜爱,引发了一波热潮,让人们玩得不亦乐乎。 Remini软件提供的这种视觉效果虽然看起来有点“丑萌”特效,然而,正是这种独树一帜的画风,使得Remini迅速…

【Django学习笔记(十)】Django的创建与运行

Django的创建与运行 前言正文1、安装Django2、创建项目2.1 基于终端创建项目2.2 基于Pycharm创建项目2.3 两种方式对比 3、默认项目文件介绍4、APP5、启动运行Django5.1 激活App5.2 编写URL和视图函数对应关系5.3 启动Django项目5.3.1 命令行启动5.3.2 Pycharm启动5.3.3 views.…

C++缺省参数、函数重载、引用

一、缺省参数 1.1缺省参数概念 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时&#xff0c;如果没有指定实参则采用该形参的缺省值&#xff0c;否则使用指定的实参。 void func(int n 0) {cout << n << endl; }int main() {func();func…

【经验01】spark执行离线任务的一些坑

项目背景: 目前使用spark跑大体量的数据,效率还是挺高的,机器多,120多台的hadoop集群,还是相当的给力的。数据大概有10T的量。 最近在出月报数据的时候发现有一个任务节点一直跑不过去,已经超过失败次数的阈值,报警了。 预警很让人头疼,不能上班摸鱼了。 经过分析发现…

Apache Knox 2.0.0使用

目录 介绍 使用 gateway-site.xml users.ldif my_hdfs.xml my_yarn.xml 其它 介绍 The Apache Knox Gateway is a system that provides a single point of authentication and access for Apache Hadoop services in a cluster. The goal is to simplify Hadoop securit…

LANCET:常见统计使用错误+规避建议!

国际顶级医学期刊《柳叶刀》&#xff08;The Lancet&#xff09;最近发表了一篇实用的通讯文章&#xff08;Correspondence&#xff09;&#xff0c;该篇Correspondence基于过去3年内对提交给《柳叶刀》的1000多篇manuscripts进行审核的经验&#xff0c;总结了科研report中常见…

IOC 和 DI

IOC&#xff08;Inversion of Control&#xff0c;控制反转&#xff09;和DI&#xff08;Dependency Injection&#xff0c;依赖注入&#xff09;是面向对象编程中的两个重要概念&#xff0c;它们之间有密切的关联。 IOC&#xff08;控制反转&#xff09;&#xff1a; IOC是一种…

【系统架构师】-UML-用例图(Use Case)

1、概述 用于表示系统功能需求&#xff0c;以及应用程序与用户或者与其他应用程序之间的交互关系。 2、组成 参与者&#xff08;Actors&#xff09;&#xff1a;与系统交互的用户或其他系统。用一个人形图标表示。用例&#xff08;Use Cases&#xff09;&#xff1a;系统需要…