android圖片識別二維碼
① Android實現二維碼掃描功能
1.//依賴注入
2.根據生命周期來對業務邏輯進行處理
1.布局的聲明
2.Activity生命周期來處理業務邏輯
3.手機震動方法處理(在掃描成功的方法中調用此方法就可以了)
private void vibrate() {
Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
vibrator.vibrate(200);
}
② 為什麼安卓手機掃描不出來二維碼
如果您使用的是華為手機,手機掃描二維碼沒有反應,請通過以下方式嘗試解決:
1.檢查手機網路狀況是否良好
掃描二維碼需在網路良好的情況下使用,請檢查手機網路狀況是否良好。
2.檢查應用是否開啟相機使用許可權
使用第三方軟體掃描二維碼,需要開啟該軟體相機使用許可權,開啟方法如下:
進入設置,搜索進入許可權管理,在許可權頁簽下找到調用攝像頭或者相機許可權,打開該應用的許可權開關。
3.二維碼是否完整
請確認下二維碼是否被損壞,或者二維碼是否正確(是不是要掃描的目標二維碼,有些二維碼掃描進入是一個鏈接)。
4.手機是否正常對焦
(1)請調整相機和二維碼的距離,不要離的太近。很近距離的情況下圖像稍微模糊,會導致識別成功率低。
(2)部分手機不顯示對焦框,需要在相機取景框點擊二維碼圖片,手動對焦成功後才能識別。
(3)確認下周圍的光線,如果光線比較暗,也會影響二維碼的掃描。
(4)請確認後置攝像頭是否正常。
5.檢查是否安裝了安全軟體
查看手機裡面是否安裝了其他三方的安全軟體,如有,建議您查看是否被安全軟體所攔截。
6.仍然無法解決?
可能是系統相機服務出現問題,建議您重啟手機再嘗試。
若問題依然存在,請提前備份好重要數據(QQ、微信等第三方應用需單獨備份),攜帶購機憑證前往華為客戶服務中心進行檢測處理。
相關鏈接如下:華為客戶服務中心維修備件價格查詢寄修服務預約服務
③ 公司做了一張很長的圖片,上面有多個二維碼,蘋果手機可以分別識別出來,安卓系統手機不能識別,怎麼辦
你可以重新製作二維碼,放在一個伺服器上面製作二維碼。
比如說打開軟體設置好二維碼的標簽尺寸大小,之後點擊軟體左側的工具欄中繪制二維碼,並在設置好的標簽紙上面繪制一個二維碼,滑鼠雙擊這個二維碼,彈出「圖形屬性」,在數據源裡面添加你想要二維碼展示的信息。
製作完成之後,在分別用蘋果手機和安卓手機掃一下這個信的二維碼圖片,就可以掃描出來了。
④ android端UC瀏覽器掃描手機本地帶有二維碼的圖片無法識別
您好,很高興為您服務!
麻煩提供下該二維碼的圖片繼續測試。使用安卓9.9.2版本的
UC瀏覽器
測試,掃描本地二維碼,並不會出現該情況。重啟下瀏覽器,再次掃描試試,還有,試下掃描其他二維碼能否正常。也麻煩提供下該二維碼圖片測試下。
如果仍有問題,請您繼續向我們反饋,我們會第一時間為您跟進。
⑤ 安卓平板電腦怎麼掃二維碼
安卓平板電腦沒有掃描二維碼的功能。可以在第三方軟體的幫助下掃描。具體方法如下:
1、首先需要在iPad桌面上找到「微信」應用程序,點擊打開微信應用程序,如下圖所示;
⑥ Android二維碼識別源碼,可有多種實現方式
這里簡單介紹一下ZXing庫。ZXing是一個開放源碼的,用java實現的多種格式的1D/2D條碼圖像處理庫,它包含了聯繫到其他語言的埠。Zxing可以實現使用手機的內置的攝像頭完成條形碼的掃描及解碼。該項目可實現的條形碼編碼和解碼。目前支持以下格式:UPC-A,UPC-E、EAN-8,EAN-13、39碼、93碼。ZXing是個很經典的條碼/二維碼識別的開源類庫,以前在功能機上,就有開發者使用J2ME運用ZXing了,不過要支持JSR-234規范(自動對焦)的手機才能發揮其威力。
下面是ZXing的demo運行,我這里創建了一個二維碼,內容是我博客的網址,大夥可以用微信的掃一掃功能,試一下。就可以直接打開我博客。
2、ZXing庫主要類
下面給大家介紹一下,ZXing庫裡面主要的類以及這些類的作用:
CaptureActivity。這個是啟動Activity 也就是掃描器。
CaptureActivityHandler 解碼處理類,負責調用另外的線程進行解碼。
DecodeThread 解碼的線程。
com.google.zxing.client.android.camera 包,攝像頭控制包。
ViewfinderView 自定義的View,就是我們看見的拍攝時中間的框框了。
3、使用ZXing生成二維碼
下面針對二維碼生成和解析做個簡單介紹,至於詳細的使用方法,建議大家還是自己看看源碼,使用起來很簡單,不過這個開源項目的代碼,值得好好看看。首先給出二維碼生成的方法:
View Code
上面就是二維碼生成的方法介面,如果你只是使用者方法,很簡單,只要傳入一個URL即可,就像我截圖裡面一樣,傳入一個合法的網址即可。或者像現在一些移動APP的推廣,把APP下載地址轉為二維碼,只要掃一下就可以下載相應的APP。這個也是目前比較流行的APP的推廣方式。
上面代碼做的事情不多,主要是調用ZXing庫裡面QRCodeWriter().encode的方法對我們傳進去的URL進行編碼,具體如何編碼,這個我這里就不詳細說,有興趣可以看ZXing的源碼。文章最後會給出ZXing的源碼和例子代碼。
4、掃描二維碼獲取信息
掃描獲取二維碼信息的工作稍微復雜一些,主要是需要編寫Camera的使用,這個跟我們一般使用Camera一樣,需要使用Surfaceview作為預覽,這一部我這里就不說了,這個應該不是太復雜。對於使用過Camera做預覽的朋友,應該是挺簡單的事情。獲取二維碼數據的關鍵處理是在Camera的自動對焦回調函數哪裡,調用ZXing的解碼介面。
View Code
這里稍微多說一句,由於解碼需要一定時間,所以ZXing的解碼調用,都是使用了Handler作為線程通信機制,解碼的工作都是放在獨立線程裡面使用的,如果你直接在主線程解碼,恐怕ANR問題是避免不了。
View Code
上面是解碼的線程處理不同狀態的時候需要注意的地方,我們這里只看獲取圖像成功的地方,成功獲取圖片解碼的實在DecodeThread裡面實現,DecodeThread裡面解碼成功後,會把數據序列化,然後保存到Bundle裡面,我們可以直接通過Bundle的序列化,獲取到圖片數據。同時會把解碼後的結果保存到MSG裡面,然後就可以根據實際情況進行處理,例如上面代碼,解碼成功後,會調用一個處理函數:
View Code
上面就是整個二維碼的解碼流程,裡面因為涉及很多Camera的使用,所以你如果需要使用二維碼識別,需要注意一下你的程序需要申請下面的許可權,一般的Camera使用以及Camera的自動對焦等。
View Code
5、結語
上面就是生成和識別二維碼的關鍵流程和代碼,有興趣的朋友可以自己查看ZXing的源碼,裡面有很多圖像分析的知識可以學習。具體使用也可以參考我下面給出的Demo。二維碼對於現在移動開發來說很是很常用的技術,所以有空可以了解一下,說不定什麼時候就用上了。另外,ZXing庫除了二維碼外,其實對於條形碼也是支持的,只是我這里沒有介紹。有需要的自己去看看源碼即可。
轉載
⑦ 安卓手機二維碼識別怎麼用
安卓手機一般都有自帶二維碼軟體的,但是貌似都一般好用啦
我都是用UC瀏覽器的二維碼功能的,打開瀏覽器之後用二維碼拍攝,就可以把電腦的網址直接讀進手機瀏覽器里,然後下載或瀏覽網頁什麼的,超爽~
求採納~
⑧ 在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開發 如何實現掃描本地二維碼圖片
開源的二維碼掃描庫主要有zxing和zbar,zbar在iPos平台上應用比較成熟,而在Android平台上主流還是用zxing庫,因此這里主要講述如何利用zxing進行二維碼開發。
如何將zxing的Android源碼導入工程。
在導入zxing的android源碼之前,先去官方下載zxing的源碼http://code.google.com/p/zxing/downloads/list。
這里以1.6版本為例,zxing 1.6源碼結構如下:
<?xmlversion="1.0"encoding="utf-8"?>
<manifestxmlns:android="http://schemas.android.com/apk/res/android"
package="com.qrcode"
android:versionCode="1"
android:versionName="1.0">
<uses-sdkandroid:minSdkVersion="7"/>
<uses-permissionandroid:name="android.permission.VIBRATE"/><!--震動許可權-->
<uses-permissionandroid:name="android.permission.CAMERA"/>
<uses-featureandroid:name="android.hardware.camera"/><!--使用照相機許可權-->
<uses-featureandroid:name="android.hardware.camera.autofocus"/><!--自動聚焦許可權-->
<applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
<activityandroid:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!--隱藏鍵盤--><!--全屏-->
<activity
android:configChanges="orientation|keyboardHidden"
android:name="com.zxing.activity.CaptureActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="stateAlwaysHidden">
</activity>
</application>
</manifest>這種情況大致就可以實現二維碼掃描了,想細化的話,還可以多看看安卓二維碼掃描開發相關的教程
⑩ 安卓(Android)手機如何使用二維碼
二維碼用某種特定幾何圖形按定規律平面(二維向)布黑白相間圖形記錄數據符號信息代碼編制巧妙利用構計算機內部邏輯基礎0、1比特流概念使用若干與二進制相應幾何形體表示文字數值信息通圖象輸入設備或光電掃描設備自識讀實現信息自處理:
二維條碼
/
二維碼能夠橫向縱向兩位同表達信息能面積內表達量信息二維碼何使用我見
Android
應用使用二維碼載前提
Android
手機要裝掃描(或識別)二維碼軟體Android平台見手機碼工具快拍(Quick拍)或條碼掃描器(Barcode
Scanner)我快拍例安裝快拍二維碼掃描工具打該軟體:打快拍二維碼掃描工具准網站二維碼:稍等片刻快拍自識別並掃描該
二維碼址:掃描完整快拍顯示該二維碼信息1處二維碼信息2號二維碼掃描結
apk
文件址點擊3號進行載:至快拍已經完使命(使用二維碼):識別二維碼並載址欄步
apk
文件址載完安裝即