最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android 超簡易Zxing框架 生成二維碼+掃碼功能

 更新時間:2020年09月11日 11:38:56   作者:一條屈依  
這篇文章主要介紹了Android 超簡易Zxing框架 生成二維碼+掃碼功能,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

zxing是一個二維碼的框架。

配置

1、

在這里插入圖片描述

implementation 'com.journeyapps:zxing-android-embedded:4.1.0'
如果報錯在這個文件的android下加上如下配置,讓其支持Java1.8,不然只有1.7、1.6
(可在'app'右鍵---->open module settings------>Module看到)

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }

2、

在這里插入圖片描述

<uses-sdk tools:overrideLibrary="com.google.zxing.client.android" /> 
<uses-permission android:name="android.permission.CAMERA"/>

記得點擊Sync Now

生成二維碼

步驟:
1、自定義一個負(fù)責(zé)生成二維碼的類,方便調(diào)用,返回一個Bitmap

要點:利用Zxing中的 BarcodeEncoderencodeBitmap方法

public Bitmap encodeBitmap(String contents, BarcodeFormat format, int width, int height, Map<EncodeHintType, ?> hints) throws WriterException

encodeBitmap方法

參數(shù) 內(nèi)容
contents 碼的內(nèi)容
format 碼的類型(二維碼、條形碼…)
width 碼的寬度
height 碼的高度
hints 碼的額外參數(shù)

Map<EncodeHintType, ?> hints碼的額外參數(shù)
這里列舉了一些常用的
這些都是Zxing中定義好的

參數(shù) 內(nèi)容
EncodeHintType.ERROR_CORRECTION 設(shè)置容錯率 L>M>Q>H 等級越高掃描時間越長,準(zhǔn)確率越高
EncodeHintType.CHARACTER_SET 設(shè)置字符集
EncodeHintType.MARGIN 設(shè)置邊距

QRcode類

package com.example.xianyu;
import android.graphics.Bitmap;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import com.journeyapps.barcodescanner.BarcodeEncoder;
import java.util.HashMap;
import java.util.Map;

public class QRcode{
  public Bitmap qrcode(String content){
  int width = 400;
  int height = 400;
    //HashMap設(shè)置二維碼參數(shù)
    Map map = new HashMap();
    //  設(shè)置容錯率 L>M>Q>H 等級越高掃描時間越長,準(zhǔn)確率越高
    map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
    //設(shè)置字符集
    map.put(EncodeHintType.CHARACTER_SET,"utf-8");
    //設(shè)置外邊距
    map.put(EncodeHintType.MARGIN,1);
    //利用編碼器,生成二維碼
    BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
    Bitmap bitmap = null;
    try {
      bitmap = barcodeEncoder.encodeBitmap(content, BarcodeFormat.QR_CODE, width, height,map);
    } catch (WriterException e) {
      e.printStackTrace();
    }
    return bitmap;
  }
}

2、在要生成二維碼的Activity,調(diào)用上述類,輸入二維碼內(nèi)容生成二維碼,之后顯示在ImageView組件上

MainActivity

public class MainActivity extends AppCompatActivity {
 ImageView Code;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Code = findViewById(R.id.iv_code);
    QRcode qrcode = new QRcode();
    Bitmap bitmap= qrcode.qrcode("CSDN");
    Code.setImageBitmap(bitmap);
    }

成功獲得二維碼內(nèi)容

在這里插入圖片描述

掃碼

步驟:
1、給點擊掃碼的組件添加點擊監(jiān)聽事件

2、在監(jiān)聽事件中,利用IntentstartActivityForResult跳到Zxing定義好的默認(rèn)的掃碼界面CaptureActivity中(也可以自定義掃碼界面)

3、重寫onActivityResult方法處理二維碼返回的內(nèi)容

要點:
其中的REQUEST_CODEZxing是定義好的,一定要使用這個CODE
不然在onActivityResult方法中解析二維碼將會不起作用

IntentIntegrator.parseActivityResult(requestCode, resultCode, data);

這段源碼可知REQUEST_CODE要相等才會進行二維碼解析,否則將會返回 null

public static IntentResult parseActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == REQUEST_CODE) {
      return parseActivityResult(resultCode, intent);
    }
    return null;
  }

設(shè)置監(jiān)聽:

Code.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
       Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
       startActivityForResult(intent,REQUEST_CODE);
     }
   });

重寫Activity中的onActivityResult得到二維碼內(nèi)容,我這里只是將獲得的內(nèi)容進行簡單的輸出

@Override
  protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
      IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
    if(result != null) {
      if(result.getContents() == null) {
        Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
      } else {
        Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
      }
    } else {
      super.onActivityResult(requestCode, resultCode, data);
    }
    }

總結(jié)

更多內(nèi)容請到github查看:https://github.com/zxing/zxing

到此這篇關(guān)于Android 超簡易Zxing框架 生成二維碼+掃碼功能的文章就介紹到這了,更多相關(guān)Android Zxing框架生成二維碼+掃碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android中兩個類讓你再也不用實現(xiàn)onActivityResult()

    Android中兩個類讓你再也不用實現(xiàn)onActivityResult()

    這篇文章主要給大家介紹了關(guān)于Android中兩個類讓你再也不用實現(xiàn)onActivityResult()的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧
    2018-08-08
  • Android之事件分發(fā)機制與沖突詳解

    Android之事件分發(fā)機制與沖突詳解

    這篇文章主要介紹了Android之事件分發(fā)機制與沖突詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • Android開發(fā)實現(xiàn)自定義Toast、LayoutInflater使用其他布局示例

    Android開發(fā)實現(xiàn)自定義Toast、LayoutInflater使用其他布局示例

    這篇文章主要介紹了Android開發(fā)實現(xiàn)自定義Toast、LayoutInflater使用其他布局,涉及Android自定義Toast與界面布局相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • Android開發(fā)Compose集成高德地圖實例

    Android開發(fā)Compose集成高德地圖實例

    這篇文章主要為大家介紹了Android開發(fā)Compose里使用高德地圖實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • Android實現(xiàn)音樂播放器歌詞顯示效果

    Android實現(xiàn)音樂播放器歌詞顯示效果

    這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)音樂播放器歌詞顯示效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Android自定義圖片集合

    Android自定義圖片集合

    這篇文章主要為大家分享了內(nèi)容相當(dāng)豐富的Android自定義圖片集合,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • android實現(xiàn)狀態(tài)欄添加圖標(biāo)的函數(shù)實例

    android實現(xiàn)狀態(tài)欄添加圖標(biāo)的函數(shù)實例

    這篇文章主要介紹了android實現(xiàn)狀態(tài)欄添加圖標(biāo)的函數(shù),較為詳細(xì)的分析了Android狀態(tài)欄添加及刪除圖標(biāo)的具體實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • Android仿QQ好友列表實現(xiàn)列表收縮與展開

    Android仿QQ好友列表實現(xiàn)列表收縮與展開

    這篇文章主要介紹了Android仿QQ好友列表實現(xiàn)列表收縮與展開,感興趣的小伙伴們可以參考一下
    2015-12-12
  • Android編程中沉浸式狀態(tài)欄的三種實現(xiàn)方式詳解

    Android編程中沉浸式狀態(tài)欄的三種實現(xiàn)方式詳解

    這篇文章主要介紹了Android編程中沉浸式狀態(tài)欄的三種實現(xiàn)方式,簡單描述了沉浸式狀態(tài)欄的概念、功能并結(jié)合實例形式詳細(xì)分析了Android實現(xiàn)沉浸式狀態(tài)欄的三種操作技巧與注意事項,需要的朋友可以參考下
    2018-02-02
  • Android簡單實現(xiàn)無限滾動自動滾動的ViewPager

    Android簡單實現(xiàn)無限滾動自動滾動的ViewPager

    這篇文章主要介紹了Android簡單實現(xiàn)無限滾動自動滾動的ViewPager,百度谷歌上面也有很多關(guān)于這方面的教程,但是感覺都略顯麻煩,而且封裝的都不是很徹底。所以試著封裝一個比較好用的ViewPager,實現(xiàn)思路一起通過本文學(xué)習(xí)吧
    2016-12-12

最新評論

汝阳县| 仙桃市| 高碑店市| 海安县| 临沂市| 广宗县| 建德市| 泰州市| 玉环县| 文成县| 闵行区| 土默特右旗| 珲春市| 西林县| 柘城县| 玉环县| 沙河市| 绥德县| 定安县| 龙泉市| 城步| 唐海县| 嘉黎县| 遵义县| 衡阳市| 土默特右旗| 丁青县| 阜阳市| 庆城县| 赣榆县| 那曲县| 嵊泗县| 丰原市| 安康市| 铅山县| 专栏| 南江县| 南和县| 宁乡县| 张掖市| 桐庐县|