二維碼android開發
⑴ 在android開發中 什麼庫可以識別DM二維碼
1.1 准備工作
如果我們只做二維碼的生成,那麼只需要添加核心jar包即可,
1.2 二維碼生成
OK,添加完jar包之後我們就可以開始寫二維碼生成代碼了,二維碼本身就是一張Bitmap圖片,所以我們這里主要就是看怎麼樣來生成這張圖片,我在主界面添加一個按鈕和一個ImageView,當點擊按鈕時生成一張二維碼圖片顯示在ImageView上。布局如下:
[java] view plain print?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="org.mobiletrain.qrwriter.MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="generate"
android:text="生成二維碼"/>
<ImageView
android:id="@+id/iv"
android:layout_width="256dp"
android:layout_height="256dp"
android:layout_centerInParent="true"/>
</RelativeLayout>
當我點擊按鈕時生成二維碼圖片,那我們就來看看生成二維碼圖片的核心代碼:
[java] view plain print?
private Bitmap generateBitmap(String content,int width, int height) {
QRCodeWriter qrCodeWriter = new QRCodeWriter();
Map<EncodeHintType, String> hints = new HashMap<>();
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
try {
BitMatrix encode = qrCodeWriter.encode(content, BarcodeFormat.QR_CODE, width, height, hints);
int[] pixels = new int[width * height];
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
if (encode.get(j, i)) {
pixels[i * width + j] = 0x00000000;
} else {
pixels[i * width + j] = 0xffffffff;
}
}
}
return Bitmap.createBitmap(pixels, 0, width, width, height, Bitmap.Config.RGB_565);
} catch (WriterException e) {
e.printStackTrace();
}
return null;
}
首先這個方法接收三個參數,這三個參數分別表示生成二維碼的文本內容(你要把哪一個文本用二維碼圖片表示出來),第二個和第三個參數分別表示生成的二維碼圖片的寬和高。在這里,我們首先要獲得一個QRCodeWriter實例,該實例中有一個方法叫做encode,通過該方法對文本內容進行編碼,該方法共有五個參數,第一個參數表示生成二維碼的文本內容,第二個參數表示編碼格式,第三個參數表示生成的二維碼的寬度,第四個參數表示生成的二維碼的高度,第五個參數可選,可以用來設置文本的編碼,encode方法的返回值是一個BitMatrix,你可以把BitMatrix理解成一個二維數組,這個二維數組的每一個元素都表示一個像素點是否有數據。OK,接下來我們需要定義一個int數組用來存放Bitmap中所有像素點的顏色,可是我們又怎麼知道每一個像素點是什麼顏色呢?這個時候就需要我們遍歷BitMatrix了,如果BitMatrix上的點表示 該點有數據,那麼對應在Bitmap上的像素點就是黑色,否則就是白色。BitMatrix中的get方法的返回值為一個boolean類型,true表示該點有數據,false表示該點沒有數據。通過兩個嵌套的for循環將BitMatrix遍歷一遍,然後給pixels數組都賦上值,OK,pixels數組有值之後,接下來調用Bitmap的createBitmap方法創建一個Bitmap出來就可以了,createBitmap方法共接收6個參數,第一個參數表示Bitmap中所有像素點的顏色,第二個參數表示像素點的偏移量,第三個參數表示Bitmap每行有多少個像素點,第四個參數表示生成的Bitmap的寬度,第五個參數表示生成的Bitmap的高度,第六個參數表示生成的Bitmap的色彩模式,因為二維碼只有黑白兩種顏色,所以我們可以不用考慮透明度,直接使用RGB_565即可。OK,這樣的話我們就獲取到了二維碼的圖片了,最後我們再來看看點擊事件:
[java] view plain print?
public void generate(View view) {
Bitmap qrBitmap = generateBitmap("http://www.csdn.net",400, 400);
iv.setImageBitmap(qrBitmap);
}
⑵ android開發如何實現掃描某個設備上的二維碼下載應用,然後在該應用中掃描該二維碼實現對該設備的操作
APP通過掃描得到的二維碼信息來判斷接下來要幹嘛,
每一個二維碼里都有自己的信息(唯一的,信息不同二維碼也不同),,比如連接,掃二維碼下載原理是先掃描到的下載連接,然後通過連接下載APP,當然這個鏈接也可以是一個網頁,並且在網頁上顯示我們看到的車的信息又或者車的信息直接存在了二維碼里並通過APP直接顯示出來
⑶ android開發:三星手機掃描二維碼界面停留一段時間後ans崩潰了,怎麼解決
可進行以下操作:
1.重新開關機
2.卸載近期安裝的第三方軟體後觀察,初步排除是否為軟體沖突,如手機管家、游戲等軟體。
3.備份手機數據(電話簿、簡訊息、多媒體文件等),恢復出廠設置(進入手機設定--重置/隱私權/私人-恢復出廠設定)
如果恢復出廠設置問題依然存在,建議將手機送至就近的三星服務中心進行檢測及進一步處理。
⑷ android開發二維碼掃一掃需要什麼許可權
你好,
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" /> <!-- 使用照相機許可權 -->
<uses-feature android:name="android.hardware.camera.autofocus" /> <!-- 自動聚焦許可權 -->
在基於6.0以上系統開發的時候 ,需要申請用代碼申請許可權