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

六安市住房和城乡建设委员会网站/长尾词挖掘工具爱站网

六安市住房和城乡建设委员会网站,长尾词挖掘工具爱站网,gzip wordpress,东莞最好的网站建设价格目录 1. 获取权限 2. 添加依赖 3. 引入 4. 简易扫码 (1) 启动扫码 (2) 获取扫描结果 5. 自定义扫码界面 (1) 自定义Activity的XML文件 (2) 自定义Activity的Java文件 (3) 使用setCaptureActivity()方法取代CaptureActivity 6. ZXing开启手电筒 1. 获取权限 请注意动…

目录

1. 获取权限

2. 添加依赖

3. 引入

4. 简易扫码

(1) 启动扫码

(2) 获取扫描结果

5. 自定义扫码界面

(1) 自定义Activity的XML文件

(2) 自定义Activity的Java文件

(3) 使用setCaptureActivity()方法取代CaptureActivity

6. ZXing开启手电筒


1. 获取权限

请注意动态申请及重写申请结果返回方法。

<uses-permission android:name="android.permission.CAMERA"/>

2. 添加依赖

//Gradle Scripts -> build.gradle(Module:app)
implementation 'com.google.zxing:core:3.4.1'
implementation 'com.journeyapps:zxing-android-embedded:4.2.0'

3. 引入

import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;

4. 简易扫码

(1) 启动扫码

通常,扫码是由一个按钮触发,跳转至扫码Activity(CaptureActivity)。

setDesiredBarcodeFormats()方法用于设置扫码的类型(不同类型间逗号分隔):

  1. Code 39 条形码

    • 数据容量:通常用于较短的文本字符串,支持数字、大写字母和一些特殊字符。
    • 字符集:包含数字 0-9、大写字母 A-Z 和一些特殊字符(如空格、破折号等)。
    • 用途:广泛用于工业、物流、标签等领域,用于标识物品或包装。
  2. Code 93 条形码

    • 数据容量:比 Code 39 更高,可以编码更多字符。
    • 字符集:支持所有的 ASCII 字符。
    • 用途:常用于标签、物流追踪、文档标识等领域,提供了更高的数据密度和安全性。
  3. Code 128 条形码

    • 数据容量:是一种高密度条形码,具有更高的数据编码能力。
    • 字符集:支持所有的 128 个 ASCII 字符,包括数字、字母、符号等。
    • 用途:广泛应用于零售、物流、运输等领域,用于编码大量字符和数据。
  4. UPC-A 条形码

    • 数据容量:用于编码商品标识符,可以编码 12 个数字。
    • 字符集:仅限数字。
    • 用途:主要用于零售业,标识商品,常见于北美地区。
  5. UPC-E 条形码

    • 数据容量:压缩版本的 UPC-A,可以编码 6 个数字。
    • 字符集:仅限数字。
    • 用途:通常用于小型商品包装,空间有限的情况下采用。
  6. EAN-8 条形码

    • 数据容量:编码 8 个数字。
    • 字符集:仅限数字。
    • 用途:类似 UPC-E,用于小型商品包装,空间有限的情况下采用。
  7. EAN-13 条形码

    • 数据容量:编码 13 个数字。
    • 字符集:仅限数字。
    • 用途:在全球范围内用于标识商品,常见于欧洲和其他地区
  8. QR码(Quick Response Code): 如前所述,这是一种由Denso Wave开发的二维码,最初设计用于跟踪汽车零部件。它被广泛应用于各种领域,尤其是移动支付和信息快速传递。

  9. Data Matrix: 这是另一种常见的二维码类型,它是由美国公司International Data Matrix(ID Matrix)于1989年创建的。Data Matrix常用于工业标识和物流管理。

  10. PDF417: 这是一种二维码,其名称源自它的编码规范,即PDF(Portable Data File)417。它常用于存储大量数据,如驾驶执照、护照和车辆注册证明等。

  11. Aztec Code: 这是一种用于存储数据的二维码,通常被用于票务和航空领域。

  12. MaxiCode: 这是由美国邮政服务用于自动识别包裹的一种二维码。

在中国常用的条码格式为:EAN-13 和 UPC-A 。 

button.setOnClickListener(new View.OnClickListener() {public void onClick(View view) {IntentIntegrator intentIntegrator=new IntentIntegrator(MainActivity.this);//设置所需扫描的条码格式----可有多种,且可同时有条码和二维码intentIntegrator.setDesiredBarcodeFormats(IntentIntegrator.CODE_39,IntentIntegrator.CODE_93,IntentIntegrator.CODE_128,IntentIntegrator.UPC_A,IntentIntegrator.UPC_E,IntentIntegrator.EAN_8,IntentIntegrator.EAN_13);intentIntegrator.setBeepEnabled(true);//扫描成功是否有提示音intentIntegrator.setPrompt("扫描");//提示字符串intentIntegrator.setCameraId(0);//设置摄像头,0为背摄,1为正摄intentIntegrator.setOrientationLocked(false);//是否方向锁定intentIntegrator.setBarcodeImageEnabled(true);//是否保存扫描成功的图片intentIntegrator.initiateScan();//启动扫描器}
});

(2) 获取扫描结果

扫码界面本身也是Activity,所以想要获取扫码结果可重写onActivityResult()方法

//本码中TextView用于显示扫码结果
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {IntentResult intentResult=IntentIntegrator.parseActivityResult(requestCode, resultCode, data);//判断是否为扫码返回的if(intentResult!=null){//判断是否扫描成功if(intentResult.getContents()!=null){textView.setText(intentResult.getContents());}else {textView.setText("扫描无结果");}}super.onActivityResult(requestCode, resultCode, data);
}

5. 自定义扫码界面

扫码页面是由initiateScan()方法启动,不断查看源码可知,该方法本质是启动了一个名为CaptureActivity的页面

我们可以创建一个新的Activity并用setCaptureActivity()方法取代CaptureActivity。

为了使自定义的Activity具有CaptureActivity的能力,我们首先在Activity中设置一个com.journeyapps.barcodescanner.DecoratedBarcodeView控件,然后将CaptureActivity的Java代码复制到Activity的Java文件中并修改部分id即可。还可以在Activity添加更多的控件以满足我们的自定义需求。

(1) 自定义Activity的XML文件

app:zxing_preview_scaling_strategy="centerCrop"这个属性指定了预览图像的缩放策略。在这里,设置为 centerCrop,表示预览图像将按比例缩放并截取中间部分以适应。

app:zxing_use_texture_view="false"这个属性指定是否使用 TextureView 来显示相机预览。在这里,设置为 false,表示不使用 TextureView。不使用时为四周透明。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MyCaptureActivity"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><com.journeyapps.barcodescanner.DecoratedBarcodeViewandroid:id="@+id/decoratedBarcodeView"android:layout_height="150dp"android:layout_width="150dp"android:layout_centerInParent="true"app:zxing_preview_scaling_strategy="centerCrop"app:zxing_use_texture_view="false" /></RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

(2) 自定义Activity的Java文件

将CaptureActivity的Java代码复制并修改部分id

public class MyCaptureActivity extends AppCompatActivity {private CaptureManager capture;private DecoratedBarcodeView barcodeScannerView;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);barcodeScannerView = initializeContent();capture = new CaptureManager(this, barcodeScannerView);capture.initializeFromIntent(getIntent(), savedInstanceState);capture.decode();}/*** Override to use a different layout.** @return the DecoratedBarcodeView*/protected DecoratedBarcodeView initializeContent() {//此处修改//修改前setContentView(R.layout.zxing_capture);//修改前return (DecoratedBarcodeView)findViewById(R.id.zxing_barcode_scanner);setContentView(R.layout.activity_my_capture);return (DecoratedBarcodeView)findViewById(R.id.decoratedBarcodeView);}@Overrideprotected void onResume() {super.onResume();capture.onResume();}@Overrideprotected void onPause() {super.onPause();capture.onPause();}@Overrideprotected void onDestroy() {super.onDestroy();capture.onDestroy();}@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);capture.onSaveInstanceState(outState);}@SuppressLint("MissingSuperCall")@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {capture.onRequestPermissionsResult(requestCode, permissions, grantResults);}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {return barcodeScannerView.onKeyDown(keyCode, event) || super.onKeyDown(keyCode, event);}
}

(3) 使用setCaptureActivity()方法取代CaptureActivity

button.setOnClickListener(new View.OnClickListener() {public void onClick(View view) {IntentIntegrator intentIntegrator=new IntentIntegrator(MainActivity.this);//设置所需扫描的条码格式----可有多种,且可同时有条码和二维码intentIntegrator.setDesiredBarcodeFormats(IntentIntegrator.EAN_13,IntentIntegrator.UPC_A);intentIntegrator.setBeepEnabled(true);//扫描成功是否有提示音intentIntegrator.setPrompt("扫描");//提示字符串intentIntegrator.setCameraId(0);//设置摄像头,0为背摄,1为正摄intentIntegrator.setOrientationLocked(false);//是否方向锁定intentIntegrator.setBarcodeImageEnabled(true);//是否保存扫描成功的图片//使用自定义的Activity                intentIntegrator.setCaptureActivity(MyCaptureActivity.class);intentIntegrator.initiateScan();//启动扫描器}
});

6. ZXing开启手电筒

扫码时经常需要使用手电筒,但是因为ZXing已经启动了一个相机所以无法使用CameraManager来开启手电筒;并且因为没有捕获通道所以也不能使用设置捕获请求开启手电筒。

但ZXing中的DecoratedBarcodeView控件类(即com.journeyapps.barcodescanner.DecoratedBarcodeView控件)提供了启动和关闭手电筒的方法可以在自定义的Activity中通过DecoratedBarcodeView开关手电筒。

启动手电筒:.setTorchOn()

关闭手电筒:.setTorchOff()

可以在自定义Activity的onCreate()中使用这些方法。

Button torchButton=findViewById(R.id.torchButton);
torchButton.setOnClickListener(new View.OnClickListener() {int i=0;public void onClick(View view) {if(i==0){//启动手电筒barcodeScannerView.setTorchOn();i=1;} else if (i==1) {//关闭手电筒barcodeScannerView.setTorchOff();i=0;}}});

http://www.whsansanxincailiao.cn/news/30242784.html

相关文章:

  • 做视频赚钱的网站/seo排名公司
  • 微信h5的制作方法/百度seo关键词优化推荐
  • 空间坐标系做图网站/关键词都有哪些
  • 一个域名建多个网站/百度搜索引擎广告位的投放
  • wordpress crm 插件/怎样优化网站
  • 苗木 网站模板/鸿星尔克网络营销
  • 网站提交入口/黑帽友情链接
  • b2b2c的网站/怎么优化网站关键词排名
  • 做网站系统如何保证自己的版权/传统营销与网络营销的区别
  • 铜川公司做网站/厂房网络推广平台
  • wordpress follow/江西seo推广
  • 网站后台如何做下载连接/学历提升哪个教育机构好一些
  • 找人做网站 源码被盗用/电商网络营销
  • 易站通这个网站怎么做/苏州百度搜索排名优化
  • 怎样写精品课程网站建设/百度识图查图片
  • 网站营销力/百度竞价推广账户优化
  • 菏泽住房和城乡建设部网站/重庆电子商务网站seo
  • 如何提高网站的用户粘度/权威发布
  • 广东seo网站推广代运营/教育机构培训
  • 中国建设信用卡网站/搜狗网址导航
  • 广告位网站建设/google搜索关键词热度
  • 做网站app怎么赚钱吗/竞价推广营销
  • 保山网站制作/头条站长平台
  • 制作一个网站的费用是多少钱/上海网站制作
  • 企业网站建设意义/外贸网站建设平台
  • 免登录直接玩的游戏/青岛seo优化
  • 百度seo站长/国家职业技能培训平台
  • 公司改名网站备案/北京网站推广营销策划
  • 如何做关于橱柜网站/百度seo排名优化是什么
  • 如何做企业网站php/北京厦门网站优化