日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

让你的APP轻松加上扫描二维码功能

發(fā)布時間:2023/12/8 编程问答 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 让你的APP轻松加上扫描二维码功能 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在這個二維碼橫行的年代,如果一個APP連掃描二維碼的功能都沒有是會被恥笑的。今天小老虎教小白們?nèi)绾螢樽约旱腁PP添加掃描二維碼功能和生成二維碼,并做到外部掃描跳轉(zhuǎn)網(wǎng)頁,內(nèi)部掃描跳轉(zhuǎn)具體Activity。


1.準備好ZXING包

ZXing是一個開放源碼的,用Java實現(xiàn)的多種格式的1D/2D條碼圖像處理庫,它包含了聯(lián)系到其他語言的端口。Zxing可以實現(xiàn)使用手機的內(nèi)置的攝像頭完成條形碼的掃描及解碼。Zxing庫的主要部分支持以下幾個功能:核心代碼的使用、適用于J2SE客戶端的版本、適用于Android客戶端的版本(即BarcodeScanner)、Android的集成(通過Intent支持和BarcodeScanner的集成)等。
本人用的是AndroidStudio,所以只要簡單地遠程依賴下載就OK了,也可以選擇和eclipse一樣用導入第三方類庫。導包不會的話請自行百度一下,這里就不一一科普了。

2.生成二維碼

1.僅供APP內(nèi)部使用的二維碼
只供內(nèi)部使用的話只要簡單的內(nèi)容去區(qū)分不同用戶和不同內(nèi)容就好,舉個栗子:
比如說我要內(nèi)部掃描添加好友,我就用一個“user”和userID來形成二維碼就好了,我們用zxing提供的EncodingHandler.createQRCode方法生成一張二維碼(返回的是bitmap),第一個參數(shù)是要形成二維碼的字符串,第二個參數(shù)是二維碼的長度(它的鞭長= = )。

Bitmap qrCodeBitmap = EncodingHandler.createQRCode("http://qrcode/user/"+info.userID, 450);

2.可供微信,QQ等APP掃描跳轉(zhuǎn)網(wǎng)頁,也可以進行內(nèi)部跳轉(zhuǎn)
這個直接用你要跳轉(zhuǎn)的網(wǎng)頁的url生成二維碼就OK,這樣外部掃描就直接跳到那個網(wǎng)頁了,那內(nèi)部呢?我們下面會說到!

3.掃描二維碼和內(nèi)部進行頁面跳轉(zhuǎn)

1.掃描二維碼
這里的掃描直接跳到zxing包下的CaptureActivity,里面的handleDecode方法會有一個參數(shù)rawResult,這個就是掃描所獲取的信息,只要調(diào)用rawResult.getText就可以得到掃描所得的字符串。這里我做了一些處理,把得到的字符串用setResult發(fā)出去,一會再說怎么處理,先貼一波代碼

@Overridepublic void handleDecode(Result rawResult, Bundle bundle) {super.handleDecode(rawResult, bundle);String resultString = rawResult.getText();KLog.d("scann result: " + resultString);if (resultString.equals("")) {Toast.makeText(CaptureActivity.this, "掃描失敗", Toast.LENGTH_SHORT).show();} else{Intent resultIntent = new Intent();Bundle data = new Bundle();data.putString("result", resultString);resultIntent.putExtras(data);this.setResult(RESULT_OK, resultIntent);}CaptureActivity.this.finish();}

2.判斷并跳轉(zhuǎn)
我們在MainActivity重寫onActivityResult方法,在這里進行處理跳轉(zhuǎn)。
剛才我們生成app內(nèi)部二維碼最后是“/+id”,那么我們先把最后一個“/”后面的id拿到手,像這樣:

//解析是否掃描用戶的二維碼id = Long.valueOf(scanResult.substring(scanResult.lastIndexOf('/') + 1));

然后我們再用URI的 Uri.parse把服務(wù)器返回的url轉(zhuǎn)成uri,再獲取是否含有特定字段,有的話再獲取其id,無論是跳轉(zhuǎn)外部還是跳轉(zhuǎn)內(nèi)部,只要先判斷字符串是否含有key就OK了,下面是方法的完整代碼

private void handleScanResult(String scanResult) {if (StringUtils.isEmpty(scanResult)) {return;}long id = 0;try {//解析是否掃描用戶的二維碼id = Long.valueOf(scanResult.substring(scanResult.lastIndexOf('/') + 1));} catch (NumberFormatException formatException) {try {//解析是否跳轉(zhuǎn)網(wǎng)頁二維碼Uri url = Uri.parse(scanResult);if ("club_detail".equals(url.getQueryParameter("qrcode_type"))) {String clubId = url.getQueryParameter("clubId");id = Long.parseLong(clubId);}} catch (Exception e) {e.printStackTrace();}} catch (Exception e) {e.printStackTrace();}if (id == 0) {return;} @Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (resultCode == RESULT_OK) {switch (requestCode) {case MainMeTabFragment.KEY_REQUEST_CODE:Bundle bundle = data.getExtras();String scanResult = bundle.getString("result");//處理二維碼handleScanResult(scanResult);default:break;}}

這次的內(nèi)容就到此結(jié)束了,如果想要這部分完整代碼的請在評論留下郵箱,我重新寫一份完整的Demo發(fā)給有需要的朋友 o(∩_∩)o

總結(jié)

以上是生活随笔為你收集整理的让你的APP轻松加上扫描二维码功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。