推广

Android 接入扫描功能(CameraX + zxing)

iseeyu2年前 (2024-02-22)推广140

image

2、仿微信

image

通过设置style 为 ScanStyle.CUSTOMIZE 进行自定义样式设计:

ScanCodeConfig.create(MainActivity.this)
                                //设置扫码页样式 ScanStyle.NONE:无  ScanStyle.QQ :仿QQ样式   ScanStyle.WECHAT :仿微信样式  ScanStyle.CUSTOMIZE : 自定义样式
                                .setStyle(ScanStyle.CUSTOMIZE)
                                //扫码成功是否播放音效  true : 播放   false : 不播放
                                .setPlayAudio(true)
                                //设置音效音频
                                .setAudioId(R.raw.beep)
                                ////////////////////////////////////////////
                                //以下配置 在style为 ScanStyle.CUSTOMIZE 时生效
                               //设置扫码框位置 scanSize : 扫码框大小  宽高 1:1     offsetX : x轴偏移量    offsetY :y轴偏移量   单位 /px
                                .setScanSize(800, 0, -200)
                                //设置扫码框位置  left : 边框左边位置   top : 边框上边位置   right : 边框右边位置   bottom : 边框下边位置   isUsePx : 是否使用px单位   true : 使用(px)  fase : 不使用(dp)   默认false
//                                    .setScanRect(new ScanRect(50, 200, 300, 450), false)
                                //是否显示边框上四个角标 true : 显示  false : 不显示
                                .setShowFrame(true)
                                //设置边框上四个角标颜色
                                .setFrameColor(R.color.whilte)
                                //设置边框上四个角标圆角  单位 /dp
                                .setFrameRaduis(2)
                                //设置边框上四个角宽度 单位 /dp
                                .setFrameWith(4)
                                //设置边框上四个角长度 单位 /dp
                                .setFrameLenth(15)
                                //设置是否显示边框外部阴影 true : 显示  false : 不显示
                                .setShowShadow(true)
                                //设置边框外部阴影颜色
                                .setShaowColor(R.color.black_tran30)
                                //设置扫码条运动方式   ScanMode.REVERSE : 往复运动   ScanMode.RESTART :重复运动    默认ScanMode.RESTART
                                .setScanMode(ScanMode.REVERSE)
                                //设置扫码条扫一次时间  单位/ms  默认3000
                                .setScanDuration(3000)
                                //设置扫码条图片
                                .setScanBitmapId(R.mipmap.scan_wechatline)
                                //////////////////////////////////////////////
                                .buidler()
                                //跳转扫码页   扫码页可自定义样式
                                .start(ScanCodeActivity.class);

<meta charset=”utf-8″>

image

由于扫码界面一般会有很多不同的业务逻辑,所以可以根据需求自定义扫码界面:

自定义扫码界面流程:
1.新建Activity 继承 ScanCodeActivity

public class MyScanActivity extends ScanCodeActivity 

2.重写getLayoutId() 和 initData() 方法
getLayoutId返回你自己定义的布局文件id
initData() 和平常一样 初始化数据 监听等等
public class MyScanActivity extends ScanCodeActivity {

private AppCompatButton btnOpenFlash;

@Override
public int getLayoutId() {
    return R.layout.activity_myscan;
}

@Override
public void initData() {
    super.initData();
    btnOpenFlash = findViewById(R.id.btn_openflash);

    btnOpenFlash.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            isOpenFlash = !isOpenFlash;
            setFlashStatus(isOpenFlash);
            btnOpenFlash.setText(isOpenFlash ? "关闭闪光灯" : "打开闪光灯");
        }
    });
}

}
3.布局文件中先将下面代码复制进去:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rlparent"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
      <androidx.camera.view.PreviewView
        android:id="@+id/pvCamera"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
<!--开始自定义界面-->

</RelativeLayout>

PreviewView是扫码界面, 下面可以任意添加自己的布局了:
下面尝试一下:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rlparent"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">

<androidx.camera.view.PreviewView
    android:id="@+id/pvCamera"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<!--开始自定义界面-->

<androidx.appcompat.widget.AppCompatButton
    android:id="@+id/btn_openflash"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="打开闪光灯"
    android:layout_alignParentBottom="true"
    />

</RelativeLayout>

4.start()方法参数 替换成自定义的Activity:

ScanCodeConfig.create(MainActivity.this)
                                //设置扫码页样式 ScanStyle.NONE:无  ScanStyle.QQ :仿QQ样式   ScanStyle.WECHAT :仿微信样式
                                .setStyle(style)
                                //扫码成功是否播放音效  true : 播放   false : 不播放
                                .setPlayAudio(true)
                                .buidler()
                                //跳转扫码页   扫码页可自定义样式
                                .start(MyScanActivity.class);

预览一下:

image

<meta c<meta charset=”utf-8″>

<article class=”_2rhmJa”>

除了扫码功能外,还可以生成二维码:
1.单独的二维码:

Bitmap bitmap = ScanCodeConfig.createQRCode("star");

2.带logo的二维码:

Bitmap bitmap = ScanCodeConfig.createQRcodeWithLogo("star", BitmapFactory.decodeResource(getResources(), R.mipmap.timg));

3.生成带描边logo二维码

Bitmap bitmap = ScanCodeConfig.createQRcodeWithStrokLogo("star", SizeUtils.dp2px(getApplicationContext(), 200), BitmapFactory.decodeResource(getResources(), R.mipmap.timg), SizeUtils.dp2px(getApplicationContext(), 60), SizeUtils.dp2px(getApplicationContext(), 60), SizeUtils.dp2px(getApplicationContext(), 10), SizeUtils.dp2px(getApplicationContext(), 10), SizeUtils.dp2px(getApplicationContext(), 2), ContextCompat.getColor(MainActivity.this, R.color.colorAccent));

二维码宽高, logo宽高, 圆角都可以自行设置:

/**
     * 生成二维码
     *
     * @param text 需要生成二维码的文字、网址等
     * @param size 需要生成二维码的大小()
     * @return bitmap
     */
    public static Bitmap createQRCode(String text, int size) {

 /** 生成带logo 二维码
     * @param text  文字
     * @param size   二维码大小 1 :1
     * @param logo   logo
     * @param logoWith logo宽
     * @param logoHigh  logo高
     * @param logoRaduisX  logo x圆角
     * @param logoRaduisY  logo y圆角
     * @return
     */
    public static Bitmap createQRcodeWithLogo(String text, int size, Bitmap logo, int logoWith, int logoHigh, float logoRaduisX, float logoRaduisY){

 /** 生成带描边logo 二维码
     * @param text  文字
     * @param size   二维码大小 1 :1
     * @param logo   logo
     * @param logoWith logo宽
     * @param logoHigh  logo高
     * @param logoRaduisX  logo x圆角
     * @param logoRaduisY  logo y圆角
     * @param storkWith    描边宽度
     * @param storkColor   描边颜色
     * @return
     */
    public static Bitmap createQRcodeWithStrokLogo(String text, int size, Bitmap logo, int logoWith, int logoHigh, float logoRaduisX, float logoRaduisY, int storkWith, int storkColor){

除了生成二维码, 从相册识别二维码也是必不可少的:
调用以下方法, 把选中的图片uri传进去 就可以获取到二维码的内容了。。

 /**
     * 解码uri二维码图片
     * @return
     */
    public static String scanningImage(Activity mActivity, Uri uri) {

4.生成条形码

Bitmap barCode = ScanCodeConfig.createBarcode("234323423423", 500, 200, false);

可配置条形码的宽高,是否在条码下方显示内容。
注意:条码内容不可为 中文。

 /**
     * 生成条形码
     * @param content 要生成条形码包含的内容
     * @param widthPix 条形码的宽度
     * @param heightPix 条形码的高度
     * @param isShowContent  是否显示条形码包含的内容
     * @return 返回生成条形的位图
     */
    public static Bitmap createBarcode(String content, int widthPix, int heightPix, boolean isShowContent) {

github 内有app 下载链接

image

附上github链接:https://github.com/amggg/YXing

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/56470.html

相关文章

牢记seo排名优化规则,这样seo优化才能满足我们的实际需求。

牢记seo排名优化规则,这样seo优化才能满足我们的实际需求。

大多数新手在接触这件事的时候,他们很可能会考虑所有的,其实很多人最关心的就是SEO优化排名,在的过程中,如何让一个网站更加稳定,这是大家都想学的,我们只有做足够的优化才能使网站排名更好,因为这个大家在优化的过程中,会发现网站的排名不是上升而是下降,那么这种现象怎么会发生呢? 如果这种情况...

教你用“池子法则”写文案,高效表达产品卖点。

教你用“池子法则”写文案,高效表达产品卖点。

不知道你有没有发现这样一个现象: 有些文案工作效率很快,很短时间就能写出一个出彩的文案,他笔下的产品卖点能精准戳中用户痛点,像磁铁一样,牢牢吸住用户,让他们不自觉的把手伸进钱包; 也有一些文案,做了很长时间,也对文案感兴趣,平时也学了不少写作技巧,但是拿到产品后,始终不知道往哪个角度去写,半天也...

快手快跑

文 | 陆玖财经 也许因为快手和抖音相比,体量上似乎依然有差距;也许是依然在亏损的现实让投资者感到忧虑;也?许人们只是怀疑,快手2021年的速度能保持下去,还是昙花一现?2018年,抖音的日活用户数超过快手(1024.HK)...

怎么快速注销淘宝店铺

怎么快速注销淘宝店铺

先登录淘宝账号,点击联系客服选项,在这里选择商家服务中心,将鼠标放在账户专区,会出现很多选项,选择账户注销工具,选择注销原因,就可以申请注销店铺了。...

代码不简洁对SEO有什么影响

代码不简洁对SEO有什么影响

代码不简洁对SEO有什么影响?影响网站排名的因素有哪些? SEO做的即是关键词排名优化,网站排名不好,网站就没有流量,没有客户,没有订单…那么影响网站排名的因素有哪些呢?造成网站关键词排名转变的因素可能是你的网站自身存在问题,也可能是竞争对手比你做得更好,排名超出了你,尚有可能是搜寻...

值得推荐的网络营销策略是让客户自愿接受你的产品且自动转发素材。

值得推荐的网络营销策略是让客户自愿接受你的产品且自动转发素材。

随着移动互联网的兴起,朋友间的信息共享变得更加方便快捷。只需点击手机的转发按钮,您就可以轻松地转发信息,并与更多的亲友分享。那么,企业如何利用这一点进行营销,让用户主动转发推荐企业的产品信息呢?我们可以从以下几点开始: 1、创建品牌内容并为用户提供可直接转发的材料 有时,用户不介意...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片