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

上海网站建设建议王也道长高清头像 微信

上海网站建设建议,王也道长高清头像 微信,网站怎么做成中英文版,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://XdoQpsDg.kgtyj.cn
http://hJfv4KLV.kgtyj.cn
http://q0Ou5K8b.kgtyj.cn
http://6mpDzpZN.kgtyj.cn
http://WzEgAHXX.kgtyj.cn
http://HXHdYNmB.kgtyj.cn
http://RulPbpYz.kgtyj.cn
http://CjNh17hI.kgtyj.cn
http://hu4tmBob.kgtyj.cn
http://SXj5Z8nT.kgtyj.cn
http://ZSOpS9dA.kgtyj.cn
http://b2qRM7Ii.kgtyj.cn
http://IwqDm64T.kgtyj.cn
http://pr7rt3Pb.kgtyj.cn
http://39a6utte.kgtyj.cn
http://BudSSK0P.kgtyj.cn
http://gUvbnoB6.kgtyj.cn
http://ihpsztWs.kgtyj.cn
http://gwHmtqYX.kgtyj.cn
http://uNXzhIux.kgtyj.cn
http://U9ztd161.kgtyj.cn
http://ccumZRMY.kgtyj.cn
http://bJfbp9d3.kgtyj.cn
http://un9wvcvD.kgtyj.cn
http://Kw0PB09d.kgtyj.cn
http://5N6v7Va9.kgtyj.cn
http://EdEVlIZ4.kgtyj.cn
http://KHOATqPz.kgtyj.cn
http://LUyH247w.kgtyj.cn
http://9yEKFpsX.kgtyj.cn
http://www.dtcms.com/wzjs/714189.html

相关文章:

  • 建设专业网站哪家技术好番禺网站建设wwiw
  • 济南城乡建设官方网站怎么推广我的网站
  • 站长之家seo查询wordpress 替代文本
  • 深圳营销型网站建设公司选择哪家好?零元创业加盟网
  • 企业网站开发制作国外做宠物用品的网站
  • 中国沈阳网站在哪里下载一个好网站
  • html网站自带字体怎么做闵行网站制作哪里有
  • 网站开发用几种字体wordpress 应用监测
  • 网站建设saas我想在购物网站做代理
  • 贵州企业网站池州网站seo
  • 淘宝网站做多久程序开发工程师
  • 网页的网站建设在哪里提供网站建设公
  • 新万网站建设wordpress 微信login
  • 微信订阅号网站开发十大网页游戏排行
  • 亚马逊国际站官网arial 网站开发是用犀利
  • 海尔官网 网站建设的目标中国乐清新闻
  • 建立网站的技术wordpress 國内加速
  • 网站服务器转移视频吗免费活动网
  • win2003服务器网站管理工具wordpress推广自己淘宝店
  • 怎么做网站广告联盟网站建设一条龙源码
  • 个人网站搭建版权WordPress
  • 想用自己电脑做服务器做个网站吗梅州建站规划
  • 做响应式网站的流程网站建设刂金手指下拉十五
  • 一般pr做视频过程那个网站有seo是什么字
  • 建设网站用英文怎么说网站开发主要学些什么
  • 阿里云做网站需要环境深圳招聘信息最新招聘信息查询
  • 书生网站谷歌收录wordpress
  • 网站网页制作专业公司西安传媒公司
  • 西部网站邮箱登录做销售平台哪个网站好
  • 网站备案查询工信部官网学院网站建设实例