当前位置: 首页 > article >正文

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

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.kler.cn/news/319050.html

相关文章:

  • Spring 全家桶使用教程
  • 问题:机器字长为n位的二进制数可以用补码来表示()个不同的有符号定点整数。
  • oracle 数据库中的异常和游标管理
  • SpringBoot开发——实现WORD文件的导入导出
  • ElasticJob个人总结
  • Python(爬虫)正则表达式
  • python-比较月亮大小/数组下标/人见人爱a+b
  • 音视频入门基础:FLV专题(5)——FFmpeg源码中,判断某文件是否为FLV文件的实现
  • 第300篇文章,第365天
  • 网上超市设计与实现:SpringBoot案例分析
  • 详解机器学习经典模型(原理及应用)——决策树
  • 智能化引领等保测评新时代:AI与大数据的深度融合
  • Doris的Routine Load方式消费Kafka数据进入Doris
  • Linux 一键部署Mysql 5.7.44
  • Spring源码-ConfigurationClassPostProcessor类解析spring相关注解
  • 从事新闻、出版、教育、药品和医疗器械、文化、广播电影电视节目等互联网信息服务小程序备案说明
  • AI 文生图快速入门教程:让 Stable Diffusion 更易于上手
  • vue基础面试题
  • 简单水印通过python去除
  • 数造科技荣获“2024爱分析·数据智能优秀厂商”
  • 传输大咖45 | 跨国传输大文件的高效、安全传输系统
  • 大数据Flink(一百二十一):Flink CDC基本介绍
  • 数据在内存中的存储(上)
  • Spring Boot 学习和使用
  • 大数据新视界 --大数据大厂之探索ES:大数据时代的高效搜索引擎实战攻略
  • 基于SpringBoot的CSGO赛事管理系统
  • 自动化等保测评:提升效率,降低成本的新路径
  • 科研绘图系列:R语言箱线图和连线图(boxplot linechart)
  • Vue.js 与 Flask/Django 后端配合:构建现代 Web 应用的最佳实践
  • uniapp实现触底分页加载