千家信息网

Android中如何开发一个证件照DIY小程序

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"Android中如何开发一个证件照DIY小程序",在日常操作中,相信很多人在Android中如何开发一个证件照DIY小程序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法
千家信息网最后更新 2026年11月03日Android中如何开发一个证件照DIY小程序

这篇文章主要介绍"Android中如何开发一个证件照DIY小程序",在日常操作中,相信很多人在Android中如何开发一个证件照DIY小程序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Android中如何开发一个证件照DIY小程序"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1 开发准备

1.1 在项目级gradle里添加华为maven仓

  打开AndroidStudio项目级build.gradle文件。
  

增量添加如下maven地址:

buildscript {    repositories {                maven {url 'http://developer.huawei.com/repo/'}    }    }allprojects {    repositories {               maven { url 'http://developer.huawei.com/repo/'}    }}

1.2 在应用级的build.gradle里面加上SDK依赖

  把人脸识别的SDK和基础SDK引入

dependencies{   // 引入基础SDK   implementation 'com.huawei.hms:ml-computer-vision:1.0.2.300'   // 引入人脸检测能力包   implementation 'com.huawei.hms:ml-computer-vision-image-segmentation-body-model:1.0.2.301'     }

1.3 在AndroidManifest.xml文件里面增量添加模型自动下载

  要使应用程序能够在用户从华为应用市场安装您的应用程序后,自动将最新的机器学习模型更新到用户设备,请将以下语句添加到该应用程序的AndroidManifest.xml文件中:

                       

1.4 在AndroidManifest.xml文件里面申请相机和存储权限


2 代码开发关键步骤

2.1 动态权限申请

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    if (!allPermissionsGranted()) {        getRuntimePermissions();    }}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,                                       @NonNull int[] grantResults) {    super.onRequestPermissionsResult(requestCode, permissions, grantResults);    if (requestCode != PERMISSION_REQUESTS) {        return;    }    boolean isNeedShowDiag = false;    for (int i = 0; i < permissions.length; i++) {        if (permissions[i].equals(Manifest.permission.READ_EXTERNAL_STORAGE) && grantResults[i] != PackageManager.PERMISSION_GRANTED) {            // 如果相机或者存储权限没有授权,则需要弹出授权提示框            isNeedShowDiag = true;        }    }    if (isNeedShowDiag && !ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CALL_PHONE)) {        AlertDialog dialog = new AlertDialog.Builder(this)                .setMessage(getString(R.string.camera_permission_rationale))                .setPositiveButton(getString(R.string.settings), new DialogInterface.OnClickListener() {                    @Override                                        public void onClick(DialogInterface dialog, int which) {                        Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);                        intent.setData(Uri.parse("package:" + getPackageName())); // 根据包名打开对应的设置界面                        startActivityForResult(intent, 200);                        startActivity(intent);                    }                })                .setNegativeButton(getString(R.string.cancel), new DialogInterface.OnClickListener() {                    @Override                                        public void onClick(DialogInterface dialog, int which) {                        finish();                    }                }).create();        dialog.show();    }}

2.2 创建图像分割检测器

  可以通过图像分割检测配置器"MLImageSegmentationSetting"创建图像分割检测器。

MLImageSegmentationSetting setting = new MLImageSegmentationSetting.Factory()                .setAnalyzerType(MLImageSegmentationSetting.BODY_SEG)                .setExact(true)                .create();        this.analyzer = MLAnalyzerFactory.getInstance().getImageSegmentationAnalyzer(setting);

2.3 通过android.graphics.Bitmap创建"MLFrame"对象用于分析器检测图片

  可以通过图像分割检测配置器"MLImageSegmentationSetting"创建图像分割检测器。

MLFrame mlFrame = new MLFrame.Creator().setBitmap(this.originBitmap).create();

2.4 调用"asyncAnalyseFrame "方法进行图像分割。

// 创建一个task,处理图像分割检测器返回的结果。 Task task = analyzer.asyncAnalyseFrame(frame); // 异步处理图像分割检测器返回结果 Task task = this.analyzer.asyncAnalyseFrame(mlFrame);            task.addOnSuccessListener(new OnSuccessListener() {                @Override                public void onSuccess(MLImageSegmentation mlImageSegmentationResults) {                    // Transacting logic for segment success.                    if (mlImageSegmentationResults != null) {                        StillCutPhotoActivity.this.foreground = mlImageSegmentationResults.getForeground();                        StillCutPhotoActivity.this.preview.setImageBitmap(StillCutPhotoActivity.this.foreground);                        StillCutPhotoActivity.this.processedImage = ((BitmapDrawable) ((ImageView) StillCutPhotoActivity.this.preview).getDrawable()).getBitmap();                        StillCutPhotoActivity.this.changeBackground();                    } else {                        StillCutPhotoActivity.this.displayFailure();                    }                }            }).addOnFailureListener(new OnFailureListener() {                @Override                public void onFailure(Exception e) {                    // Transacting logic for segment failure.                    StillCutPhotoActivity.this.displayFailure();                    return;                }            });

2.5 更换图片背景。

this.backgroundBitmap = BitmapUtils.loadFromPath(StillCutPhotoActivity.this, id, targetedSize.first, targetedSize.second);BitmapDrawable drawable = new BitmapDrawable(backgroundBitmap);this.preview.setDrawingCacheEnabled(true);this.preview.setBackground(drawable);this.preview.setImageBitmap(this.foreground);this.processedImage = Bitmap.createBitmap(this.preview.getDrawingCache());this.preview.setDrawingCacheEnabled(false);

到此,关于"Android中如何开发一个证件照DIY小程序"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

检测 图像 程序 开发 检测器 学习 应用 证件 文件 应用程序 权限 人脸 可以通过 图片 基础 增量 方法 更多 模型 用户 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技有限公司 互联网是第几次科技革命的成果 广州大一互联网络科技有限公司 融贸通互联网科技 互联网科技咨询 西藏七维空间互联网科技有限公司 须眉科技是互联网公司吗 互联网科技寓意 常德市电业局互联网科技部 互联网校园科技培训 互联网科技有哪些公司 苏州五指互联网络科技有限 互联网5g黑科技有哪些 健康食品互联网创新科技园项目 图游互联网科技 宁波跨境商互联网科技有限公司 云鲸互联网络科技有限公司 互联网科技接地气 米泉互联网科技专业怎么样 北京品多多互联网科技有限公司 互联网科技工作委员会副主任毛军 科技制造互联网公司 互联网 科技公司 为想互联网科技 太原新华互联网科技学校怎么样 成都玖崟互联网科技有限公司乐商圈怎么样 互联网为啥属于高科技 湖南一路畅行互联网科技 中国科技和美国互联网 北京军民互联网科技公司
0