Android开发拍身份证带人像框和国徽框效果

news2024/11/23 7:14:40
Android开发拍身份证带人像框和国徽框效果

拍身份证时往往要带上外框辅助用户拍照,这也是很常见的需求。

一、思路

自定义Camera和自定义拍照的界面,把外框画上去,做个遮罩

二、效果图:

在这里插入图片描述在这里插入图片描述

Android开发教程实战案例源码分享-拍身份证带人像框和国徽框效果

三、关键代码:
// 联系:893151960
public class SecondActivity extends AppCompatActivity {

    private ImageView iv_result;
    private Context mContext;
    private ActivityResultLauncher<Intent> launcher;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mContext = this;

        launcher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
            if (result.getResultCode() == RESULT_OK && result.getData() != null) {
                String photoPath = result.getData().getStringExtra(CameraActivity.KEY_CONTENT_TYPE);
                Log.i("photoPath",photoPath);
                if (!TextUtils.isEmpty(photoPath)) {
                    Glide.with(mContext)
                            .load(photoPath)
                            .into(iv_result);

                }
            }
        });

        iv_result = findViewById(R.id.iv_result);

        findViewById(R.id.tv_photo).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                requestPermission(mContext, new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        startCameraActivity(mContext,CameraActivity.CONTENT_TYPE_ID_CARD_FRONT,launcher);
                    }
                }, checkSDK33(mContext) ? new String[]{
                        Manifest.permission.CAMERA,
                        Manifest.permission.READ_MEDIA_IMAGES
                } : new String[]{
                        Manifest.permission.CAMERA,
                        Manifest.permission.READ_EXTERNAL_STORAGE,
                        Manifest.permission.WRITE_EXTERNAL_STORAGE
                });
            }
        });


    }

    /**
     * 身份证取景拍照
     */
    public static void startCameraActivity(Context mContext,String type, ActivityResultLauncher<Intent> launcher) {
        Intent intent = new Intent(mContext, CameraActivity.class);
        //intent.putExtra(CameraActivity.KEY_CONTENT_TYPE,CameraActivity.CONTENT_TYPE_ID_CARD_FRONT);
        intent.putExtra(CameraActivity.KEY_CONTENT_TYPE,type);
        launcher.launch(intent);
    }

    public static boolean checkSDK33(Context context) {
        ApplicationInfo applicationInfo = context.getApplicationInfo();
        return Build.VERSION.SDK_INT >= 33
                && applicationInfo != null
                && applicationInfo.targetSdkVersion >= 33;
    }

    public static void requestPermission(final Context context, final View.OnClickListener successListener, String... permissions) {
        if (PermissionCheckUtil.checkPermissions(context,permissions)){
            if (null != successListener) {
                successListener.onClick(null);
            }
        } else {
            PermissionAppUtils.INSTANCE.requestPermission(context, permissions, new Consumer<Boolean>() {
                @Override
                public void accept(Boolean aBoolean) throws Throwable {
                    if (aBoolean){
                        if (null != successListener) {
                            successListener.onClick(null);
                        }
                    }
                }
            });
        }

    }
}
四、项目demo源码结构图:

在这里插入图片描述有问题或者需要源码的私信我

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

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

相关文章

深入理解计算机系统-Bomb Lab

使用 头歌 平台 GDB 调试器 反汇编函数

动力锂电池电芯壳体市场前景:预计2030年全球市场规模将达到49.2亿美元

动力锂电池罐起着传输能量、承载电解液、保护安全等重要作用&#xff0c;是锂电池的重要组成部分。 据QYResearch调研团队最新报告“全球动力锂电池电芯壳体市场报告2024-2030”显示&#xff0c;预计2030年全球动力锂电池电芯壳体市场规模将达到49.2亿美元&#xff0c;未来几年…

分布式算法

分布式场景下的核心问题 分布式场景下困扰我们的3个核心问题&#xff08;CAP&#xff09;&#xff1a;一致性、可用性、分区容错性。 1、一致性&#xff08;Consistency&#xff09;&#xff1a;无论服务如何拆分&#xff0c;所有实例节点同一时间看到是相同的数据。 2、可用性…

开源链动 2+1 模式 S2B2C 商城小程序:社交电商团队为王的新引擎

摘要&#xff1a;本文深入探讨在社交电商领域中&#xff0c;团队的重要性以及如何借助开源链动 21 模式 S2B2C 商城小程序&#xff0c;打造具有强大竞争力的团队&#xff0c;实现个人价值与影响力的放大&#xff0c;创造被动收入&#xff0c;迈向财富自由之路&#xff0c;同时为…

从汽车高速线束角度浅谈中控屏黑屏、闪屏及信号阈值低故障-之AEM线束测试仪应用案例

故障成因和解决方案 随着车载信息娱乐技术的迅速发展&#xff0c;中控屏已经成为现代汽车的标配。然而&#xff0c;许多主机厂和消费者在车辆使用过程中常常遇到中控屏出现黑屏、闪屏以及信号阈值低等问题&#xff0c;给使用带来了诸多困扰。本文将从汽车高速线束的角度&#…

GPU服务器本地搭建Dify+xinference实现大模型应用

文章目录 前言一、显卡驱动配置1.检测显卡2.安装驱动 二、安装nvidia-docker二、安装Xinference1.拉取镜像2.运行Xinference3.模型部署 三、安装Dify1.下载源代码2.启动 Dify3.访问 Dify 四、Dify构建应用1.配置模型供应商2.聊天助手3.Agent 前言 本文使用的GPU服务器为UCloud…

MySQL: 数据类型介绍

文章目录 数据类型数值类型字符串类型日期类型 数据类型 数值类型 分为整型和浮点型: BIT类似于数据结构中的位图,BIT可以认为是一组二进制bit位. BIT(10)表示这个类型里就存最多10个bit位. 虽然TINYINT和SMALLINT更节省空间,但是还是更推荐使用INT或者BIGINT. 如果存储空间…

MySql语言操作数据库---增删改查数据库,表,数据

思维导图 SQL语言共分为四大类&#xff1a; 数据定义语言DDL:数据定义语言DDL用来创建数据库中的各种对象-----[库]、[表]、[视图]、[索引]、 数据操纵语言DML:(1) 插入&#xff1a;INSERT (2) 更新&#xff1a;UPDATE (3) 删除&#xff1a;DELETE 数据查询语言DQL:数据查询语…

Android 深层链接利用

为了能够从我们的应用程序打开另一个应用程序&#xff0c;我们通常通过声明我们想要访问的 Activity 类的名称来实现这一功能。但是&#xff0c;如果我们要打开的 Activity 在其清单文件中设置了android:exported"false" &#xff0c;则无法使用此方法。而其中一种替…

人工智能有助于解决 IT/OT 集成安全挑战

思科的一项研究表明&#xff0c;信息技术 (IT) 和运营技术 (OT) 融合所带来的安全问题可以通过人工智能 (AI) 解决&#xff0c;尽管该技术也可能被恶意行为者利用。 该报告由思科和 Sapio Research 联合发布&#xff0c;对 17 个国家的 1,000 名行业专业人士进行了调查&#x…

基于Java,SpringBoot和Vue的仓库管理商品管理电商后台管理系统

摘要 基于Java、Spring Boot和Vue的仓库管理系统是一个现代化的库存管理解决方案&#xff0c;旨在提高仓库运营效率和准确性。系统采用Java作为后端开发语言&#xff0c;结合Spring Boot框架简化配置和部署过程&#xff0c;实现业务逻辑和数据处理。前端使用Vue.js构建用户界面…

2024.9.25 数据分析学习

资料&#xff1a; 【开课吧哩堂】数据挖掘项目之用户流失预警系统_哔哩哔哩_bilibili 五万字 | Spark吐血整理&#xff0c;学习与面试收藏这篇就够了&#xff01;-腾讯云开发者社区-腾讯云 (tencent.com) 黑马程序员Spark全套视频教程&#xff0c;4天spark3.2快速入门到精通…

**CentOS7安装配置mysql**

CentOS7安装配置mysql 首先先将mysql57-community-release-el7.rpm解压出来 rpm -ivh mysql57-community-release-el7.rpmls /etc/yum.repos.d/ -l // 检查是否解压成功安装mysql yum install -y mysql-community-server可能会出现 GPG 密钥过期 rpm --import https://r…

一个可以免费上传样本图册的网站

在数字化时代&#xff0c;图像和样本图册的重要性不言而喻。无论是设计师、摄影师、艺术家还是普通用户&#xff0c;都需要一个可靠的平台来上传、分享和存储自己的作品。今天&#xff0c;给大家推荐一个可以免费上传样本图册的网站——【FLBOOK】&#xff0c;它为用户提供了无…

UE学习篇ContentExample解读------Blueprint_Communication-上

文章目录 总览描述批次阅览1.1 Basic communication with a target blueprint1.2 Basic communication via actor casting1.3 Blueprint communication via actor casting to child Blueprint1.4 Communicating with all actors of a specific class 概念总结致谢&#xff1a; …

关于预处理详解 #define 宏 #和##

#和## #运算符 #运算符将宏的⼀个参数转换为字符串字⾯量。它仅允许出现在带参数的宏的替换列表中。 #运算符所执⾏的操作可以理解为”字符串化“。 当我们有⼀个变量 int a 10; 的时候&#xff0c;我们想打印出&#xff1a; the value of a is 10 . 就可以写&#xff…

MySQL函数:流程函数

1.IF函数 基本语法&#xff1a;IF(expr1,expr2,expr3) 功能&#xff1a;如果value为true&#xff0c;返回t&#xff0c; 否则返回f 例如&#xff1a;这个里面expr1里面是false&#xff0c;返回的是Error&#xff0c;如果是true&#xff0c;返回OK select if(false, OK, Err…

开通微信视频号直播的流程

首先我们要了解什么是视频号&#xff1f; 视频号其实就是腾讯家的“抖音”/“快手”&#xff0c;可以发布视频和直播&#xff08;包括直播带货&#xff09;。 微信视频号不同于订阅号、服务号&#xff0c;它是一个全新的内容记录与创作平台&#xff0c;也是一个了解他人、了解…

适合二开的web组态软件

技术文档 官网网站&#xff1a;http://www.hcy-soft.com 体验地址&#xff1a;by组态[web组态插件] 可以广泛应用于化工、石化、制药、冶金、建材、市政、环保、电力等几十个行业。 一、产品简介 BY组态是完全自主研发的集实时数据展示、动态交互等一体的全功能可视化平台。帮…

OJ在线评测系统 后端基础部分开发 完善CRUD相关接口

完善相关接口 判斷编程语言是否合法 先从用户的请求拿到Language package com.dduo.dduoj.service.impl;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dduo.dduoj…