亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

zxing掃碼實(shí)踐:CameraX取幀、解碼調(diào)優(yōu)與避坑指南

zxing掃碼實(shí)踐:CameraX取幀、解碼調(diào)優(yōu)與避坑指南 簡介這是一份面向安卓開發(fā)者的二維碼與條形碼掃描實(shí)現(xiàn)示例基于ZXing開源庫配套完整可運(yùn)行工程與說明文檔。資源共1874個(gè)文件壓縮包18.42MB主要包含Java源碼、安卓資源文件、構(gòu)建配置及APK成品其中.java、.xml、.gradle文件便于查看集成邏輯.jar與.dex文件是庫依賴和編譯產(chǎn)物可對(duì)照實(shí)際運(yùn)行效果學(xué)習(xí)。已有2535人瀏覽學(xué)習(xí)。壓縮包內(nèi)含MyApplication示例應(yīng)用演示了從Gradle依賴引入、自定義掃描界面、相機(jī)預(yù)覽到解碼結(jié)果回調(diào)的完整流程附帶《說明使用文檔.docx》對(duì)集成步驟、常見權(quán)限問題和掃碼體驗(yàn)優(yōu)化做了整理。讀者可通過閱讀源碼與文檔快速掌握在Android項(xiàng)目中集成ZXing、處理掃描結(jié)果以及加入閃光燈和掃描區(qū)域指示等功能適合移動(dòng)開發(fā)入門或需要在項(xiàng)目中落地掃碼功能的工程師。1. 把掃碼能力接進(jìn)項(xiàng)目zxing 解碼庫的真實(shí)邊界很多 App 的需求清單里二維碼掃描和條形碼掃描看著不起眼真做起來才知道牽扯到預(yù)覽、圖像格式、解碼策略一堆細(xì)節(jié)。我最早接觸 zxing是被拉去給一個(gè)識(shí)別率極低的內(nèi)部工具“擦屁股”——那套方案對(duì)圖片二值化處理不干凈稍微有點(diǎn)反光就罷工后來把解析層換成 zxing 的 MultiFormatReader問題才壓住。zxing 能做的是從攝像頭幀或靜態(tài)圖片中定位條碼、做旋轉(zhuǎn)矯正、二值化和解碼兼容 QR Code、Code 128、EAN-13、UPC-A 等常見碼制并返回條碼內(nèi)容和格式。它不負(fù)責(zé)相機(jī)預(yù)覽 UI更不包含商品信息查詢。它的最佳受眾是客戶端的掃碼登錄/掃碼支付開發(fā)者、服務(wù)端批量解析條碼的后端以及想快速驗(yàn)證識(shí)別率的測(cè)試工程師。2. 不急著接代碼zxing 的解碼鏈路與依賴邊界2.1 從像素到結(jié)果二值化、定位、解碼在干什么掃碼識(shí)別的復(fù)雜度不在“讀出來”這一步而在“怎么從真實(shí)世界的圖像里把碼分離出來”。zxing 的處理管線大致是亮度源 → 二值化 → 定位 → 解碼。第一步是提取 LuminanceSource亮度源。zxing 不關(guān)心色彩只要每個(gè)像素的灰度亮度。手機(jī)攝像頭拍照出來的是 YUV、NV21 或 RGBA 數(shù)據(jù)直接用 Y 分量亮度做輸入是最省內(nèi)存的做法。如果拿 Bitmap則通過 getPixels 取到像素?cái)?shù)組后做一次灰度轉(zhuǎn)換。第二步是二值化。真實(shí)環(huán)境下光照不均勻同一個(gè)碼上半部分亮、下半部分在陰影里很常見。如果全圖用同一個(gè)閾值黑色模塊會(huì)被一刀切成兩半解碼自然失敗。所以 HybridBinarizer 把圖像切成 8x8 的子塊逐塊計(jì)算亮度統(tǒng)計(jì)值找出局部閾值再把相鄰塊的閾值做平滑。大多數(shù)手機(jī)掃碼場(chǎng)景都用它。GlobalHistogramBinarizer 更快但對(duì)光照波動(dòng)敏感適合可控光線的服務(wù)端圖片。第三步是定位。zxing 需要在二值圖上找到條碼區(qū)域。QR Code 靠三個(gè)角上的“回”字形定位圖案鎖定方向線性條碼則依賴邊緣梯度和黑白條紋寬度的比例關(guān)系做掃描線搜索。第四步是解碼。對(duì)應(yīng)每一種格式有專門的 Reader 實(shí)現(xiàn)比如 QRCodeReader 會(huì)按版本和糾錯(cuò)等級(jí)去還原數(shù)據(jù)塊Code128Reader 根據(jù)起始符和終止符推算信息。MultiFormatReader 會(huì)在內(nèi)部把支持的 Reader 挨個(gè)嘗試直到某一種解碼成功或全部失敗。真正需要設(shè)計(jì)的地方就在這里多格式同時(shí)解碼會(huì)讓你省事但也會(huì)帶來不必要的耗時(shí)。把這套鏈路理解清楚后面所有參數(shù)和坑都有了解釋不會(huì)有“加個(gè)開關(guān)就好”的玄學(xué)。2.2 依賴怎么選core、javase、android 模塊差異zxing 項(xiàng)目分多個(gè)模塊我只說常用的三條路徑??蛻舳酥灰獯a能力依賴core包自己做相機(jī)預(yù)覽。相機(jī)幀數(shù)據(jù)的采集、旋轉(zhuǎn)、裁剪由 CameraX 或 Camera2 處理zxing 只負(fù)責(zé)從幀里找碼。一般寫法是把幀轉(zhuǎn)成 PlanarYUVLuminanceSource再交給 HybridBinarizer 和 MultiFormatReader 去解碼。桌面端或服務(wù)端批量識(shí)別圖片依賴javase包。它提供了 BufferedImageLuminanceSource可以直接讀java.awt.image.BufferedImage同時(shí)帶了命令行工具能一次跑一個(gè)目錄下的所有圖片。對(duì)批量生產(chǎn)圖片模擬測(cè)試非常實(shí)用。至于 zxing 的 android 模塊很多老項(xiàng)目還在用它把 Camera、取景框、解碼 Activity 都封裝好了。如果你接手的是一個(gè)歷史包袱重的項(xiàng)目可能還會(huì)見到CaptureActivity這種類但如果這是新項(xiàng)目我更建議只引 core 配合自有 UI 來做。原因很簡單android 模塊的設(shè)備適配邏輯停更很久現(xiàn)代機(jī)型攝像頭輸出格式差異大它封裝的 Camera 接口未必能處理最后還是要自己改。依賴模塊典型使用場(chǎng)景需要自己準(zhǔn)備的部分coreAndroid 客戶端實(shí)時(shí)識(shí)別相機(jī)預(yù)覽、取幀、旋轉(zhuǎn)、UIjavase服務(wù)端/桌面批量識(shí)別圖片JVM 運(yùn)行環(huán)境、圖片路徑處理android老項(xiàng)目掃碼頁面快速改造相機(jī)權(quán)限、生命周期適配android-integration跳轉(zhuǎn)外部掃碼 App外部 App 的安裝與兼容性2.3 版本與運(yùn)行環(huán)境匹配別盲目升新版我常用的做法是根據(jù)最低系統(tǒng)版本定庫版本。zxing core 3.5.x 分支對(duì) JDK 版本有要求如果服務(wù)端還在 Java 8選太新的版本可能編譯不過Android 項(xiàng)目把 minSdk 提到 21 以上基本順暢minSdk 低于 19 時(shí)會(huì)遇到 API 不支持的風(fēng)險(xiǎn)。這里給不出一個(gè)“萬能版本”但可以反向判斷在依賴配置里寫死大版本號(hào)鎖一個(gè)穩(wěn)定小版本不要在項(xiàng)目交付前順手改版本——我吃過一次虧升級(jí)后解碼耗時(shí)波動(dòng)變大最后查出來是新版本里的多格式解碼線程配置不同導(dǎo)致。提示版本升級(jí)后最少要做一輪真機(jī)回歸不要只跑單元測(cè)試。掃碼這種功能模擬器上通過不代表實(shí)拍也能過尤其是低端機(jī)的圖像采集延遲和設(shè)備旋轉(zhuǎn)角度。2.4 調(diào)優(yōu)的最關(guān)鍵入口DecodeHintType 參數(shù)zxing 的解碼行為不是寫死的通過DecodeHintType可以顯著改變識(shí)別率和速度。這幾個(gè)參數(shù)我?guī)缀趺看味加脜?shù)作用我的建議POSSIBLE_FORMATS限定只嘗試哪些碼制能多省就多省全格式解碼會(huì)拖慢速度TRY_HARDER用更細(xì)的掃描線、更多輪次去定位弱光或條碼破損時(shí)打開平時(shí)關(guān)掉CHARACTER_SET指定解碼后的字符串編碼中文二維碼要設(shè) UTF-8ALSO_INVERTED允許對(duì)反色條碼白碼黑底解碼外貿(mào)單據(jù)和部分產(chǎn)品包裝會(huì)用到ALLOWED_EAN_EXTENSIONSEAN/UPC 附加碼的位數(shù)書本條碼常見按需開啟值得多說一句POSSIBLE_FORMATS不是越多越好。同一幀圖像里如果同時(shí)開了 QR、Data Matrix、PDF417、Code 128MultiFormatReader 會(huì)逐個(gè)嘗試每多一種格式耗時(shí)就多一截。我平時(shí)的習(xí)慣是業(yè)務(wù)上明確只掃二維碼就只傳BarcodeFormat.QR_CODE需要兼容一維碼時(shí)再補(bǔ)CODE_128和EAN_13。全格式解碼只留在調(diào)試模式里用上線前務(wù)必收緊。3. 把 zxing 接進(jìn)項(xiàng)目CameraX 取幀與解碼邏輯落地3.1 取到 Y 平面別拿到 Bitmap 再轉(zhuǎn)換先看依賴。項(xiàng)目里除了 zxing core還需要攝像頭取幀的庫。CameraX 是現(xiàn)代 Android 項(xiàng)目里比較穩(wěn)妥的選擇它把 Camera2 的細(xì)節(jié)封得比較干凈ImageAnalysis 可以直接拿到 YUV 幀。implementation(androidx.camera:camera-core:1.3.0) implementation(androidx.camera:camera-camera2:1.3.0) implementation(androidx.camera:camera-lifecycle:1.3.0) implementation(com.google.zxing:core:3.5.2)依賴就這四個(gè)。注意到我刻意沒有引 zxing 的 android 模塊因?yàn)橛?CameraX 自己取幀控制力更強(qiáng)。CameraX 的 ImageAnalysis 每一幀都是一份ImageProxy里面包含三個(gè)圖像平面Y、U、V。解碼只需要亮度也就是 Y 平面。Y 平面并不是一個(gè)簡單的ByteArray(width * height)。它的rowStride可能大于圖像寬度因?yàn)閿z像頭硬件會(huì)做行對(duì)齊每行末尾補(bǔ)幾個(gè)字節(jié)的 padding。如果直接用buffer.remaining()取全部字節(jié)亮度源行尾會(huì)串入 padding 數(shù)據(jù)圖案錯(cuò)位識(shí)別率直接掉一截。正確做法是逐行復(fù)制fun extractYArray(imageProxy: ImageProxy): ByteArray { val width imageProxy.width val height imageProxy.height val yPlane imageProxy.planes[0] val yBuffer yPlane.buffer val rowStride yPlane.rowStride val yArray ByteArray(width * height) var row 0 var offset 0 while (row height) { yBuffer.position(row * rowStride) yBuffer.get(yArray, offset, width) offset width row } return yArray }這段代碼是在做“去 padding”的操作。rowStride是每一行在內(nèi)存里實(shí)際占用的字節(jié)數(shù)width是有效像素寬度二者不一定相等。逐行把有效數(shù)據(jù)拷貝進(jìn)目標(biāo)數(shù)組后面 zxing 拿到的亮度源就是干凈平整的。如果設(shè)備支持也可以直接用ImageProxy.PlaneProxy的rowStride做整圖映射但逐行復(fù)制是最不容易踩坑的思路性能開銷在解碼面前可以忽略。3.2 分析器里構(gòu)造亮度源和解碼器拿到 Y 數(shù)組之后下一步是構(gòu)造 zxing 需要的數(shù)據(jù)結(jié)構(gòu)。這里有個(gè)常見誤區(qū)直接把 Y 數(shù)組當(dāng)成RGBLuminanceSource來用。RGBLuminanceSource接收的是 RGBA 像素?cái)?shù)組傳 Y 數(shù)據(jù)進(jìn)去等于讓解碼器把灰度值當(dāng)成顏色通道去解讀結(jié)果永遠(yuǎn)不對(duì)。YUV 幀必須用PlanarYUVLuminanceSource。class ScannerAnalyzer : ImageAnalysis.Analyzer { private val hints mapOf( DecodeHintType.POSSIBLE_FORMATS to listOf( BarcodeFormat.QR_CODE, BarcodeFormat.CODE_128, BarcodeFormat.EAN_13 ), DecodeHintType.TRY_HARDER to true, DecodeHintType.CHARACTER_SET to UTF-8 ) private val reader MultiFormatReader().apply { setHints(hints) } private var onResult: ((String, String) - Unit)? null override fun analyze(imageProxy: ImageProxy) { val width imageProxy.width val height imageProxy.height val yArray extractYArray(imageProxy) val source PlanarYUVLuminanceSource( yArray, width, height, 0, 0, width, height, false ) val bitmap BinaryBitmap(HybridBinarizer(source)) try { val result reader.decodeWithState(bitmap) onResult?.invoke(result.text, result.barcodeFormat.name) } catch (_: NotFoundException) { // 當(dāng)前幀沒找到條碼繼續(xù)預(yù)覽不打斷 } catch (_: ChecksumException) { // 定位到了但校驗(yàn)失敗常見于遮擋或角度太大 } finally { imageProxy.close() } } }核心邏輯就是三步Y(jié) 數(shù)組 → 亮度源 → 二值圖 → 解碼。PlanarYUVLuminanceSource構(gòu)造函數(shù)里的六個(gè)數(shù)字分別是yArrayData, width, height, left, top, cropWidth, cropHeight, reverseHorizontal。這里的left/top是 0先做全圖解碼。decodeWithState會(huì)復(fù)用MultiFormatReader內(nèi)部狀態(tài)比每次都 new 一個(gè) Reader 省分配。imageProxy.close()必須放在 finally 里漏掉的話 CameraX 會(huì)一直認(rèn)為幀還在處理中畫面逐漸變卡。需要注意MultiFormatReader不是線程安全的。如果同一個(gè)ScannerAnalyzer實(shí)例在多個(gè)執(zhí)行線程里跑解析會(huì)出現(xiàn)奇怪的崩潰我一般會(huì)給解碼方法加一個(gè)synchronized或者直接保證ImageAnalysis使用單線程 Executor。3.3 綁定預(yù)覽并處理結(jié)果回調(diào)分析器寫好后需要在頁面里把Preview和ImageAnalysis都綁定到同一個(gè)ProcessCameraProvider上。val analysis ImageAnalysis.Builder() .setOutputImageFormat(ImageAnalysis.OUTPUT_IMAGE_FORMAT_YUV_420_888) .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST) .build() analysis.setAnalyzer(Executors.newSingleThreadExecutor(), scannerAnalyzer) cameraProvider.bindToLifecycle( lifecycleOwner, CameraSelector.DEFAULT_BACK_CAMERA, preview, analysis )STRATEGY_KEEP_ONLY_LATEST很關(guān)鍵。它表示分析器處理不過來時(shí)直接丟棄中間幀只處理最新幀。這樣解碼慢一點(diǎn)只會(huì)降低識(shí)別幀率不會(huì)讓預(yù)覽越來越卡。如果選STRATEGY_BLOCK_PRODUCER相機(jī)采集會(huì)被阻塞畫面直接掉幀。另一個(gè)點(diǎn)OUTPUT_IMAGE_FORMAT_YUV_420_888要顯式指定否則不同設(shè)備默認(rèn)輸出格式不一致有的會(huì)給你 RGBA分析代碼就得寫兩套分支。結(jié)果回調(diào)到 UI 層后還要做防抖。不然一個(gè)碼被連續(xù)識(shí)別幾十次掃碼頁面會(huì)抖得像抽風(fēng)private var lastScanAt 0L private fun onScanResult(text: String, format: String) { val now System.currentTimeMillis() if (now - lastScanAt 2000L) { return } lastScanAt now viewModel.onScanCompleted(text, format) }兩秒閾值是我常用的經(jīng)驗(yàn)值。識(shí)別完成后如果業(yè)務(wù)需要繼續(xù)掃下一個(gè)碼過兩秒再恢復(fù)解析如果不需要可以在拿到結(jié)果后直接解綁分析器避免后臺(tái)繼續(xù)耗電。許多項(xiàng)目在這里偷懶結(jié)果掃碼完成后相機(jī)還在偷偷逐幀分析發(fā)熱和內(nèi)存問題都從這兒來。4. 掃碼實(shí)戰(zhàn)中的避坑與排查四條最典型的現(xiàn)場(chǎng)問題4.1 豎屏場(chǎng)景識(shí)別率低到懷疑人生現(xiàn)象手機(jī)明明是豎著拿的取景框里二維碼顯示也正常但識(shí)別率低到 10% 以下尤其是一維條碼幾乎全滅。橫屏旋轉(zhuǎn)手機(jī)反而能掃出來。原因攝像頭傳感器是橫著安裝的CameraX 輸出的 Y 平面數(shù)據(jù)方向并不等于手機(jī)屏幕方向。zxing 拿到的亮度源是傳感器原始方向二維碼有定位圖案轉(zhuǎn)幾個(gè)角度還能勉強(qiáng)識(shí)別Code 128、EAN-13 這類線性條碼對(duì)方向極其敏感角度不對(duì)就完全解不出來。解決在構(gòu)造亮度源之后根據(jù)imageProxy.imageInfo.rotationDegrees對(duì)亮度源做旋轉(zhuǎn)。常見做法是判斷 90、180、270 三個(gè)旋轉(zhuǎn)角對(duì)應(yīng)調(diào)用rotateCounterClockwise()。注意這個(gè)方法會(huì)重新拷貝一次圖像內(nèi)存放到解碼前的 try 塊里就行不用單獨(dú)緩存。我一般會(huì)寫一個(gè)函數(shù)把旋轉(zhuǎn)邏輯包起來避免每個(gè)分析器里都堆一段 if-else。注意有些設(shè)備rotationDegrees會(huì)返回 0 或 180但預(yù)覽畫面依然是正的這是因?yàn)?CameraX 在預(yù)覽路徑上已經(jīng)做了坐標(biāo)系轉(zhuǎn)換。分析器拿到的幀不一定和預(yù)覽方向一致一定要以ImageInfo.rotationDegrees為準(zhǔn)不要以預(yù)覽顯示效果為準(zhǔn)。4.2 弱光環(huán)境下連續(xù)翻車現(xiàn)象暗光場(chǎng)景下畫面里明明能看到二維碼輪廓但識(shí)別過程反復(fù)失敗偶爾成功一次要卡好幾秒。同樣的代碼在白天自然光下非常流暢。原因光線不足時(shí)傳感器會(huì)提高增益來補(bǔ)償曝光噪點(diǎn)被一并放大。HybridBinarizer 的局部閾值對(duì)這種噪點(diǎn)圖穩(wěn)定性有限黑色模塊邊緣會(huì)被噪點(diǎn)打斷導(dǎo)致定位失敗。解決兩條路并行。第一條是產(chǎn)品層面加手電筒按鈕讓用戶主動(dòng)補(bǔ)光這是市面上大多數(shù)掃碼 App 的做法第二條是代碼層面開TRY_HARDER它會(huì)用更密集的掃描線去搜索識(shí)別率有提升但耗時(shí)也會(huì)增加。我一般還會(huì)順便檢驗(yàn)一下圖像質(zhì)量先算 Y 數(shù)組的平均亮度低于某個(gè)閾值就直接跳過本幀不執(zhí)行解碼。這個(gè)閾值我習(xí)慣定在 64 到 96 之間太亮也不行全是白板的時(shí)候解碼純屬浪費(fèi) CPU。val avgBrightness yArray.average().toInt() if (avgBrightness 64) { imageProxy.close() return }這段代碼放在構(gòu)造亮度源之后可以有效過濾掉過暗的幀。平均亮度的計(jì)算成本不高但能避免大量無效解碼。所謂“掃碼暗光翻車”多半不是 zxing 不行而是把每幀都拿去硬啃實(shí)際該放棄的幀沒放棄。4.3 某些條碼反復(fù)掃不出來現(xiàn)象同一個(gè)二維碼相冊(cè)里的截圖掃出來了攝像頭對(duì)著屏幕掃不出來換一臺(tái)手機(jī)卻能掃出來。或者 Code 128 條碼打出來的標(biāo)簽上面能掃下面那截掃不出。原因原因有好幾層按概率排序。第一POSSIBLE_FORMATS沒把這種格式加進(jìn)去第二二維碼在畫面里占比太小zxing 定位完發(fā)現(xiàn)面積不夠直接放棄第三條碼被產(chǎn)品包裝的曲面遮擋邊緣有斷裂第四商家自己生成的條碼質(zhì)量差模塊邊緣不整齊。解決先在POSSIBLE_FORMATS里補(bǔ)上對(duì)應(yīng)格式這是最容易被忽略的一步。如果格式?jīng)]問題試著把取景框裁剪到畫面中間區(qū)域只對(duì) ROI 做解碼。ROI 區(qū)域越小條碼在解碼圖里的相對(duì)占比越大識(shí)別率會(huì)明顯提升。做法是改PlanarYUVLuminanceSource的left/top/cropWidth/cropHeight參數(shù)。裁剪的時(shí)候ROI 的寬度和高度最好是偶數(shù)部分設(shè)備的 YUV 數(shù)據(jù)對(duì)奇數(shù)寬度會(huì)報(bào)錯(cuò)。如果是對(duì)著屏幕掃碼還有一個(gè)常見問題屏幕本身會(huì)閃爍產(chǎn)生明暗條紋。解決思路是把分析器的曝光時(shí)間調(diào)長一點(diǎn)或者用硬件層面的電頻同步但這一般較難做到。我實(shí)際更常用的是讓用戶把手機(jī)稍微拉遠(yuǎn)一點(diǎn)減少摩爾紋干擾。4.4 內(nèi)存抖動(dòng)與日志刷屏現(xiàn)象掃碼頁面打開 5 分鐘內(nèi)存漲得很明顯Logcat 里不斷出現(xiàn)ArrayIndexOutOfBoundsException或者大量NotFoundException堆棧。原因ImageAnalysis的每一幀都是一次內(nèi)存分配Y 數(shù)組、亮度源、二值圖全部要建對(duì)象。如果imageProxy.close()沒有執(zhí)行緩存幀不斷堆積。NotFoundException本身是正常的——哪一幀沒有碼都會(huì)拋這個(gè)異常但有些項(xiàng)目直接在分析器里打了Log.e導(dǎo)致 logcat 幾十條幾百條地刷。解決第一imageProxy.close()放 finally第二NotFoundException和ChecksumException屬于“預(yù)期內(nèi)失敗”不需要寫日志第三控制分配頻率。MultiFormatReader.decodeWithState內(nèi)部會(huì)復(fù)用 Reader 的對(duì)象池但我們的 Y 數(shù)組和亮度源是每次都要新建的這部分省不掉。更好的辦法是降低分析幀率比如ImageAnalysis只處理每兩幀中的一幀。實(shí)驗(yàn)數(shù)據(jù)上解碼成功率并不會(huì)明顯下降內(nèi)存和電量的改善卻很直接。5. 進(jìn)階從相冊(cè)選圖解析與反向生成二維碼5.1 相冊(cè)選圖的解碼路徑除了攝像頭實(shí)時(shí)識(shí)別很多業(yè)務(wù)場(chǎng)景還需要從相冊(cè)里選一張圖片解析比如截圖里的收款碼、文檔里的條形碼。靜態(tài)圖片的解碼和實(shí)時(shí)幀不同它沒有 YUV 數(shù)據(jù)拿到手的是 Bitmap。這時(shí)要把像素?cái)?shù)組喂給RGBLuminanceSource。fun decodeImage(bitmap: Bitmap): Result? { val width bitmap.width val height bitmap.height val pixels IntArray(width * height) bitmap.getPixels(pixels, 0, width, 0, 0, width, height) val source RGBLuminanceSource(width, height, pixels) val bitmapImage BinaryBitmap(HybridBinarizer(source)) return MultiFormatReader().apply { setHints(mapOf( DecodeHintType.POSSIBLE_FORMATS to listOf(BarcodeFormat.QR_CODE), DecodeHintType.TRY_HARDER to true )) }.decode(bitmapImage) }這段代碼和攝像頭路徑的主要區(qū)別在亮度源。RGBLuminanceSource內(nèi)部的像素格式必須是 RGBA_8888所以bitmap.getPixels之前先確認(rèn) Bitmap 的配置是 ARGB_8888。如果源頭是黑白圖或 RGB_565轉(zhuǎn)一下格式再做不然像素值解析會(huì)混亂。相冊(cè)圖片有可能很大解碼前先做壓縮把長邊壓到 1024 左右再解析速度會(huì)快很多識(shí)別率也不會(huì)降。5.2 生成二維碼把BitMatrix畫成圖很多時(shí)候掃碼功能是雙向的——不僅要讀碼還要展示一個(gè)二維碼給別人掃。zxing 的生成接口藏在MultiFormatWriter里它返回一個(gè)BitMatrix也就是一個(gè)布爾矩陣需要自己把它畫到 Bitmap 上。fun createQrBitmap(content: String, size: Int 512): Bitmap { val bitMatrix MultiFormatWriter().encode( content, BarcodeFormat.QR_CODE, size, size ) val bitmap Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888) for (x in 0 until size) { for (y in 0 until size) { val color if (bitMatrix[x, y]) Color.BLACK else Color.WHITE bitmap.setPixel(x, y, color) } } return bitmap }參數(shù)上size指的是輸出圖像的像素寬高不是二維碼實(shí)際模塊數(shù)。zxing 會(huì)根據(jù)內(nèi)容和容量決定二維碼的版本也就是模塊數(shù)量然后在傳入的size范圍內(nèi)自動(dòng)縮放。如果內(nèi)容很長比如帶了一長串 URL生成出來的二維碼會(huì)有很多小模塊建議增大size避免掃描失敗。反向生成時(shí)還有個(gè)坑默認(rèn)生成的 BitMatrix 二維碼四周邊距很窄有些掃碼工具會(huì)識(shí)別失敗。解決方式是手動(dòng)加白邊把BitMatrix繪制到更大的白色 Bitmap 中間四周各留 8 到 16 像素。另外邏輯上生成二維碼時(shí)最好在 UI 線程外操作。encode過程對(duì)長文本內(nèi)容耗時(shí)可能在幾十毫秒到幾百毫秒之間如果在主線程直接調(diào)用頁面會(huì)掉幀。直接用Executors.newSingleThreadExecutor()包一層即可。掃碼功能做久了我養(yǎng)成一個(gè)習(xí)慣每次接入新項(xiàng)目都會(huì)先列一個(gè)驗(yàn)證清單攝像頭實(shí)時(shí)解碼、相冊(cè)靜態(tài)圖解碼、批量生成后再解碼三條鏈路分開測(cè)。那次因?yàn)橹辉谡鏅C(jī)上驗(yàn)證了實(shí)時(shí)掃碼、沒測(cè)相冊(cè)路徑結(jié)果圖片解析漏了RGBLuminanceSource的格式轉(zhuǎn)換上線當(dāng)天就被用戶翻到相冊(cè)掃碼的問題。從那以后每條鏈路我都會(huì)強(qiáng)制走一遍尤其是“生成→解碼→對(duì)比原文”的閉環(huán)能少走很多彎路。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
尤物一级在线免费观看| 少妇精品久久| 狠狠图片青青草| 99久久精品国产高潮| 日本成a人v网站在线观看| 丝袜亚洲91| 国产欧美精品日韩区二区麻豆天美| 欧美性爱精品七区| 五十路熟女人妻一区二区在线观看| 日韩欧美被操黄免费观看| 欧美在线视频99| 免费簧片在线观看| 日本在线激情一区二区三区| 成人免费不卡在线视频| 成 人片 黄色大片| 蜜桃av综合网发布| 无码黑人精品一区二区三区三| 91人妻在线视频| 美女黄页网站| 男人综合网| 亚洲丝袜二区在线| 97在线免费视频观看| 天天综合网合集91| 91成人亚洲色图| 久久久成人精品| 久草草一二三四区久久| 亚洲精品 欧美精品| 超AV色女| 夜夜夜久久| 激情色播| 亚洲天堂,男人| 99久久久99久久91熟女| 五月婷婷综合网| 九九热免费国产视频婷婷伊人五月| 久久99视频| 色婷视频| 九九99久久| 爽 好舒服 无码刺激久久| 久久东京伊人一本到鬼色| 国产专区第一页| 亚洲人妻中文高清| 综合久| 日韩久久激情精品| 精品网站9999| 大香蕉伊在线久草麻豆天堂故事| 午夜无码熟妇丰满人妻| 肥佬影院91| 99热这里只有精品18| 精品传媒在线一区| 色综合V| 中文字幕一区二区在线日韩精品| 亚洲成人福利电影免费 | 丁香六月综合激情| 日韩av女优在线免费一区| 日韩无码嘿咻黑热久| 中文字幕丝袜人妻| 99福利社| 天天综合网日韩| 日韩字幕一区| 亚洲成人网站在线观看| 亚洲自拍欧美国产首页网曝 | 色综合91好| 天天上日日上日韩精品| 日韩免费大片一级播放| 超碰在线人妻| 亚洲天堂情色| 夜夜高潮夜夜爽夜夜爱爱一区 | 一区二区三区在线资源| 天天日天天操VV| 怡红院亚洲怡春院av| 凹凸精品熟女在线观看| 人人操人人插人www| 日韩成人大片在线观看| 999九九精品| 欧美啪啪色吧在线| 丝袜剧情| 中文字幕艹艹| 久久精品国产精品一区| 五月激情影院| 97jingpin| 久久九九97| 国产无码三级视频在线观看| 欧美日韩人人精品| 啊啊啊水好多| 九月丁香综合网| 美国美女AV在线| 久久伦理视频久久大香蕉视频| 骚鸭AV| 亚洲精品国产无码高清| 日韩欧亚太美不卡| 久久久久久性爱免费视频| 五十路三级片| 欧美se亚洲| 超碰九7| 乱伦av.com| 厕所偷拍在线| 欧美999| 91超级碰| 久久久涩| 岛国艾薇凹凸视频天堂| 99热导航| 亚洲欧洲日本精品中文a∨| 日本3级一区二区免费| 麻豆a'v电影| 亚洲色图尤物视频| 最新亚洲风情电影| 亚洲av影音先锋| 日本黄色裸日本黄色裸体 | 日韩欧美tv一区二区在线观看| 大香蕉123| 欧美亚洲清纯| 国产情侣自拍在线播放| 午夜精品人妻二区三区| 人妻日日干| 亚洲一区二区 麻豆传媒| 免费人成毛片乱码| 尹人免费观看视频在线| 吉川爱美98堂在线| 人妻人人做人人澡人人爽欧美一区| 欲色影视综合吧| 91久久九九精品国产综合| 天天日B狠狠操| 美女网站91| 爱爱动态120秒| 久草新在线| 国产无遮挡| 国产日韩精品人妻久久久久色欲网站| 欧美激情片一区二区| 极品销魂美女一区二区| 97人人中文网| 国产成年免费大片黄在线观看| 欧美日韩一干二干| 婷婷久久综合久| 日韩三级伊人| 久神马| 日韩在线观看字幕精品| 青草伊人网| 色婷婷99| 色欲三区| 中出人妻中文字幕91在线| 抽插无码高清一区| 精品一区二区国产日韩| 9长久久精品| 亚洲偷拍自拍在线视频| 欧美AB在线| 大香蕉 222| 一区二区视频你懂的| 亚洲 自拍偷拍 欧美| 狠狠躁天天躁日日躁97| 99操视频| 啪啪性爱免费视频| 欧美第二页午夜| 婷婷综合五月| 婷婷在线视频在线观看| 骚鸭AV| 国产亚洲 中文欧美久久| 18禁精品网站在线看| 大香蕉草草| 婷婷情色综合网| 一区二区三区高清天码| 青娱乐福利99| 国产精品一区在线播放| 亚洲最大的黄色电影网站。 | 97爱啪| 九九热免费国产视频婷婷伊人五月| 亚洲天堂五月天国产| 国产精品69久久久久久久| 精品四五区| 一区二区三区四区免费视频| 日韩成人私密一级精品av| 97网址97| 久久久久久中文版| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 中文字幕五月婷婷免费| 天啪| 国产熟女自拍| 97视频免费在线| 330Dv国产女人终合视频极品人与兽 | 日韩9999| 成人A片男人的天堂| 99九九精品| 天天摸夜夜添无码小视频| 欧洲视频在线| 亚洲影视第一页| 中文字幕av久久爽Av| 6080yy午夜理论三级一区二区三区无码| 免费福利视频中文字幕| 第四色奇米影视777| 亚洲婷婷综合网| 东京热91| 精品十八在线观看| 日本精品加勒比海一区| 色综合 加勒比| 97超碰这里只有精品| 99re这里只有精品中心播放 | 大香蕉中文201| 色偷偷男人的天堂麻豆| 日日摸日日弄日日拍| 日韩精品影视| 欧美在线|亚洲| 天天操天天7| 久久精品视| 丝袜美女诱惑 91 视频| 好看的久久不射无码影视影院| 青青草在线视频欧美| 亚洲中文字幕乱码无码一区二区| 少妇与黑人高潮在线| 天天操av懂色| 人妻天天爽夜夜爽精品2| 亚殴在线| 亚洲自拍欧美国产首页网曝| 色www精品视频在线观看| 97精品视频免费| 亚洲。日韩。欧美| 欧美日韩人妻婷婷一区| 韩日精品福利视频一区不卡在线免| 加勒比AV网| 久久綜合很很很| 五月天久久婷婷亚洲| 国产精品电影推荐| 色99久草| 91丨豆花丨熟女| 日韩欧美中文| 伊人网av| 色香91| 久热精品在线| 搡老女人911熟妇老熟女| 内射夫妻三片| 91精品无码人妻系列| 欧美视频中文字幕区| 这里只有精品视频在线| 不卡超碰护士AV在线免费播放| 超碰日本97美女人妻人人玩人人爱 | 加勒比综合a∨| 99热在线只有精品| 亚洲精品国产熟女| 婷婷色色五月| 超碰日韩美妻| 一区二区高清视频| 人妻日日干| 丁香五月偷拍| 色拍偷亚洲| 日本欧美不卡| 天天操夜夜嗨| 96精品在线| 色色综合97| 亚洲深夜福利| 国产人伦a片信息免费片| 另类在线| 美女爽爽爽刺痛洞洞| 国产精品久久久久久久久久久久久久吹| 日本成a人v网站在线观看| 日本操逼视频不卡直接放| 国产精品无码论坛| 热久久九九热| 无码78| 天天日天天干天天整| 六月婷激情福利天堂69| 精品二区三四区五电影 | 精品人成视频在线观看| 一级免费啪啪片| 国产传媒美日韩av| 欧亚无码视频| 韩日精品四区| 超碰久久.com| 熟女色综合久久| 天天透伊人| 精品视频一区二区| 大香蕉一线视频| 久久綜合很很很| 999久久久九九九九| 中文字幕性感少妇av| 亚洲天堂第一页| 亚洲欧美首页| 日本精品一区三区| 夜夜爽夜夜操| 色噜噜狠狠色综无码久久合欧美| 国产自偷| 婷婷中文网| 60秒免费小视频| 女人与公拘交酡2020视频| 久久久久国产一区二| 麻豆 欧美 日韩| 亚州欧美另类| 五月丁香成人网| 亚洲图片视频小说| 骚逼一区二区| 狠狠色伊人亚洲综合网站色| AV 少妇 人妻 偷拍| 国产精品农村妇女精品| 超碰91在线| av草草在线电影| 国产一区二区啪啪视频| 天天舔日美女视频| 婷婷成人久久久精品| 亚洲欧美情色| 另类亚洲图色| 蜜臀操逼黄色视频操的好爽| 黑白配性爱AV成| 91九色网| 强奸乱伦亚洲第一页| 99国产精品久久久在线播放| 92人人操人人| 无遮挡男女激烈动态图| 丰满人妻一区二区三区| 欧美91精品国产自产| 国产91影院| 久久久久久久久久久久黄色| 亚洲强奸乱伦影视网| 欧色网址| 国产AV线| 欧美少妇性乱| 国产女人和拘做爰视频 | 精品国产99| aaaa少妇高潮大片| 精品人妻中文字幕4399| 97无码视频在线播放| 久草综合网| 国产中文精品一区二区在线观看| 嫩草影院永久在线制服丝袜| A级片一区| 2020中文字幕| 久久精品国产久精国产| 好一吊区二区| 日韩欧美午夜视频在线| 蜜臀av中文字幕| 欧美精品成人在线播放| 2019午夜福利视频| 久久精品国产亚洲AV片多多| 丝袜色综合| 国产激情av女片自拍| 亚洲AV色图一区| 中文久久爆乳| 女人18精品一区二区三区| 国内偷自视频区视频综合| 日韩AV中文字幕电影| V A在线| 亚洲AO在线| 日本成人A片免费看| 欧美日日人人天天| 国产操逼网站亚洲一级黄色| 曰本精品久久久| 日本色色视频网站| 日韩八十路老熟女| 欧美日韩人人精品| www99热| 一区二区精品日韩欧美在线观看| juliaann欧美丝袜办公室| 97色爱| 日本三级R| 国产家庭乱伦表演| 欧美96在线|欧| 中文字幕88av在线| 熟女人妻av在线资源,黄色的资源| 18禁在线视频| 97超碰人人操人人操| 97精品一区| 人妻在线大香蕉| 99热精品在线| 综合啪啪| 人妻少妇久久| 亚洲色图第一页| 天堂伊人久久| 综合网97| 精品人妻一二三四区视频| 最新加勒比丝袜在线| 国产超碰| 99热色精品| 婷婷久草一区二区三区| 97超碰jingpin| 婷婷色五月激情| 一区三区啪啪| 色婷婷香蕉| 97国产成人精品免费视频| 一区二区三区黄片免费观看| 亚洲图片欧洲图片aⅴ| 黑人精品成人一区二区三区 | 亚洲第2页| 日韩精品黄片免费观看| 中字乱伦AV| 美女天天干| 91天堂| 中国AAAAAA黄色片| 亚洲精品一二区| 嫩草影院在线观看精品| 五月丁香色色网| 国产激情av女片自拍| 久久婷婷五月天| 精产国品一区二三产品| 亚洲双插| 青青伊人这里只有精品| 婷婷综合五月| 日本人妻天堂网站在线播放| 超碰在线综合97| 1240青青草一区二区三区视频天爱| 国产精品直播在线观看直播| 717影院理论午夜伦八戒| 亚洲成人av色网| 精品综合久久久久久97| 欧美黄色手机在线观看| 欧美人妻一区| 日韩欧美资源| 亚州人妻| 日本一级特级毛片视频| 思思热在线视频精品| 麻豆成人av| 夜夜嗨视频| 激情深爱五月天| 极品尤物在线观看| 人人操人人精品影片| 日本韩国国产精品一区| 国产视频一区二区在线观看| 亚洲男人在线观看天堂| 日亚韩精品视频二区三| 小骚逼被操的爽不爽| 久久受www免费人成| 少妇蜜汁| 国产91啪| 制服诱惑亚洲一区二区三区在线观看| 精品国产91内射久久| 91爽啪| 特色a在线上| 久久久久性熟视频| 91在线超高颜值国产| 久久只有精品一区二区三区| 亚洲av国产av综合av卡| 鸥美插入视频| 免费av大片| 九九九九九九精品| 国产夜夜艹| 天天谢天天干| 欧美久久人体| 艹我哪美一区无码| 亚洲欧美一区二区网址| 内射黑丝袜| 亚洲精品三| 91香蕉国产尤物视频| 超碰夫妻97| 精品一区二区成人| 超碰九区| 亚洲高清在线se| oumeisetu综合| 91社区拍啪人妻| 麻豆久久精品亚洲精品88| 少妇与黑人高潮在线| 亚欧成人中文字幕一区| 丁香七月婷婷| 色臀AV| 亚洲交换| 亚洲综合一| 91蜜臀熟女| 亚洲一区二区三区欧美日韩| 狠狠色伊人亚洲综合网站色| 97超碰9| 97中文字幕一区| 玖玖爱一区在线| 男人的天堂2018东京热啪啪啪| 啪啪视频亚洲第一| 综合伊人激情| 一级AV性爱| 2024黄色视频| 97在线视频免费观看| 高清孕妇孕交 交孕妇| 久久一区无码| 熟妇人妻一区二区| 97人人爱人人做人人乐| 91性生活久久久| 激情图片伦理国产一区二区日韩| 97色伦欧美| www. 男人天堂成人在线| 天天欧美色| 美女啊啊啊啊pc| 色色色色色色色色色色色色色色综合 | Julia在线播放亚洲久久| 操逼国产免费| 99无码视频| 欧美综合骚| 91老司机在线视频免费观看 | 国产97在线视频| 欧洲视频在线| 国产最火爆久久国产网站网站| 尹人免费观看视频在线| 亚洲欧洲综合成人av一区| 在线免费观看日韩一区| 草莓精品视频在线免费观看| 国产精品久久久久亚洲av| 丁香五月天堂| 免费看污网址| 日本一区不卡| 乱伦Av网| 神马精品视频| 精品少妇高潮久久| 麻豆国产97在线| 中文字幕亚洲热播人妻| 美女97超碰| 香蕉大久久久| 91视频伊人| 亚洲精品97久久中文字幕| 夜夜嗨一区| 国产综合在线视频网站| 天天天天干| 日本九九久久99| 欧美姓爱综合网| 欧美黄片免费在线观看视频| 国产熟女一区二区丰满| 国产精品久久久久久久无码AV| 亚洲无码?第一页| 日本一二区免费| 尤物视频新赏网鲜网色诱网| 国产午夜无码片在线观看影视| 翘臀vidoes| 加勒比综合88| 免费观看的av| 9丨久久九九九| 91人妻爽爽人人做人人澡| 风间由美日韩欧美久久| 色婷婷综合视频| 97爱啪| 家庭乱伦性爱av| 乱伦熟女论坛| 婷婷综合在线观看| 亚洲A曰本VA欧美VA视频| 色综合美国| 亚洲乱妇p22| 色色色色色色色色色色色色色色综合| 91内射| 人人摸人人干| AV污污污污| 亚洲无码?第一页| 国产精品成久久久久午夜午夜| 国产高清无码一区三区二区| 亚洲 另类 丝袜 自拍 动漫| 久草免费福利在线播放| 人妻内射一区二区在线视频| 国产h片在线观看视频| 精品一久久久| 国产精品青草综合久久| 国产高清午夜成人在线观看| 97一本大道亚洲一区| 天堂8在线新版官网| 久久久久久裸体| www.色婷婷| 日日操免费视频| 中文字幕视频免费| 搡老女人老妇女老妇老熟女怎么读| 97综合国产| 麻豆国产成人精品| 蜜色网色哟哟| 99性爱| 免费黄色A片| 欧美中文综合| 综合网少妇| 亭亭在线资源| 色www精品视频在线观看| 国产怡红院| 欧美啪啪女女| 亚洲天堂 视频你懂的| 操国产逼| 黑人娇小av在线播放 | 免费久久一级毛片大黄| 亚洲欧美人妻| 97极品无码| 日韩91网| 四虎在线视频| 亚洲精品九九九| 亚洲色图综合| 日韩欧美大片免费高清啪啪| 精品一区二区三区丰满熟女-亚洲欧美一区| 天美传媒AV国产在线| 99国产精品免费| 国产精品suv一区| 97精品视频免费| 婷婷综合在线观看| 夜夜高潮夜夜爽高清视频一| 久久大线蕉一区| 国产性爱欧美性爱在线| 大香交| 免费视频观看60秒| 999久久久| 午夜国产综合视频在线观看| 国语国产操逼伊人AV网| 天天天天天天天天天天干美女 | 东京热视频网| 久久亚洲精品成人av| 5月婷婷6月六月丁香| 蜜臀少妇一区二区| 亚州中文字幕超碰97| 久操电影网| 日本人妻中文字幕精品| 亚洲高清无码AAA久久久精品| 欧美啪啪女女| 学生妹天天看| 亚洲āv网址在线观看| 久久久久久亚洲中文| 免费精品福利在线观看| 欧美97在线观看| 欧美91在线| 福利在线观看一区二区| 内射日韩大臀美女| 亚洲图片欧美偷拍| 亚洲AV成人无码久久精品播放| 猛交交| 91九色丰满高潮| 青娱乐休闲视频在线观看| 国产热RE99久久6国产精品首| 天美一二三在线观看Av| yazhououmeizongya| 欧美在线91| 成视频在线观看免费看| 人妻无码一区二区三区久久99| 秋霞网—男女啪啪亚洲免费体验区| 久久人妻精品| 精品熟妇视频一区二区| 3D污黄视频在线观看| 10000部十八禁看电影| 色呦呦国产精品免费看| 亚洲春色激情小说| 特色a在线上| 小草三级久久观看| 99热| 日日日色色色色色| 多乙久久久久久| 青青草成人视频在线观看二区| 成人AV超碰免费在线| 有码人妻系列| 欧洲综合无码| 农村妇女精品一区二区| 成人精品久久久午夜福利| 久久精品视频28| 欧美国产伊人久久久久| 97在线日韩中文字幕| 激情综合色| 免费A片三p视频| 久久久久9999妇女| 国产第25页在线观看| 亚洲国产福利视频| 在现视频女上位好爽| 欧美性爱精品七区| 超碰97首页| 欧美性生活免费网| 97亚洲中文| 91 亚洲情侣偷拍 久久| 欧美第一页性| 日韩av在线免费网站| 欧美性高潮| 黑人与人妻| 久热久一区二区三区| 色网在线视频观看免费| 91亚洲高清| 9ⅰ久久久天天| 美腿丝袜高跟网免费视频免费视频| 一区二区三区 日韩欧美| 欧美操逼录像国产黄色国产| 亚洲综合性网址| 超碰欧美| 青青五月天| 日韩青久久| 9999亚洲精品| 色老久久| 五月天日日操夜夜操| 国产久久一区二区| 青青草大香蕉在线视频| 久久e6只有精品| http://qxhbdz.com| 91丨熟女丨丰满熟女| 黄片免费看的| 久久精品国产96精品亚洲拳交| 中文色综合| 久96热在线观看视频| 国产亚洲色停停久久99精品91| 诱惑网综合| 少妇熟女视频一二三区| 欧美日韩美女精品久草一区二区三区| 精品一国2| 99久久9| 国产97色在线 | 亚洲| 91热色| 农村妇女精品一二区| 久久久性爱视频| 在线亚洲丝袜视频网站| 丰满精品人妻少妇久久字幕| 蜜臀th| 亚洲天堂男人的天堂| 欧美91在线| AV一起草在线| 夂久色| 91天射| 国产精品久久久久9999小说| 国产小u女在线观看| 秋霞欧美性爰视频| 97超碰天天爱天天爱| 久久久久人| 亚洲开心网| 家庭乱伦网站国产| 亚洲射综合网| 亚洲中文字幕熟女少妇一区二区| 思思视频免费看网站| 日韩欧美tv一区二区在线观看| 九九性爱网| 婷婷av在线中文字幕| 久久久久九九九| 老鸭窝亚洲毛片| 高清不卡 中文 人妻| 白丝av| 志村玲子视频一区二区| 日韩一级二级三级免费看完整版国语版 | 亚洲精品美女久久久久久久久| 久久一留热品黄| 日本九九久久99播| 少妇久久久久久| 免费观看欧美日韩操逼视频| 国产怡红院| 天天插网| 欧美色偷拍| 国产综合日韩伦理| 久久色激情一区二区三区| 成人无码欧美一级A片狼牙直播| 国语精品内射在线观看| 91精品久久久久久| 免费看久久久性性| 精品国产a∨一区天美传媒| 久久久久国产一区二| 999久久久久久久久| 色色色天美视频| 亚洲精品乱码久久久久久蜜桃麻豆| 韩国三级理论在线| 亚洲熟女综合网| 无码9区| 亚洲熟妇极品| 天天谢天天干| 国模91| 欧美天天拍| 欧美日韩不卡a片| 天天天干977| 日韩情色视频| 狠狠色噜噜狠狠狠狠狠色综合久久 | 天天看综合网| 亚洲激情综合另类男同| 四虎免费在线播放| 97中文超碰| 日韩黄色一区二区三区| 91视频精品| 人人妻人人澡人人爽久久av| 加勒比日本在线 | 97国产亚洲中文在线| 亚洲色啪| 免费的黄片wwwwww| se吧提供91精品国产91久久久久久| 国产乱码久久久久久| 超碰三级秋霞| 亚洲精品成人激情在线| 欧美成熟性爱精品| 亚洲色人| 亚洲色图一区二区三区| 97超碰人操| 四虎免费看黄| 有码免费观看| 99久久无色码| 精品区9| 无遮挡猛进视频免费无限观看| 少妇人妻好深太紧了vr91| 国产精品久久久亚洲第一牛牛_在线观看 | 78超碰| 97这里有精品| 羞涩视频| 国产偷人伦激情在线观看| 日韩精品人妻中文字幕不卡乱码| 国产精品探花色| 亚洲免费在线探花| 精品人妻一区二区视频| 日韩性爱毛片操骚逼| 久久精品日韩| 91影库| AA特级绝黄| 91超级碰碰碰| 在线天堂999| 日韩/97| 久插综合| 亚洲精品97中文字幕| 一区,二区,三区视频| 加勒比性爱成人在线| 91日韩网站| 久久69| 少妇人妻太紧太深av| 手机看片1024你懂的国产| 五月婷丁香| 高树玛利亚无码流出| 精品国产网站| 青青草国产一区二区三区| 99精品综合久久久久五月天| 射久久| 99日精品欧美国产| 婷婷五月天成人网| 日日夜夜草草草| 玖玖久久久| 成人三级片无码| 欧美综合加勒比在线| av影院十区| 色欲av一区二区三区蜜芽| 鸡巴插逼视频| 人妻在线臀日韩| aV中文麻| 欧美人妻一区| 99re不伦| 操逼A∨| 日本久久999| 91人人| 色色色欧美| 欧美性第1页| 国产午夜无码片在线观看影视| 久久久久久久久久久久黄色| 加勒比伊人| 美女露胸露屁股| 亚洲综合九九| 欧亚综合一卡二卡中文字幕| 国内精品99999| 女人爽到高潮潮喷18禁网站| 久久成人东京热人妻| 色色色色综合网| 国产精品久久泡妞网站| 国产久久久9999| 亚洲码在线中文在线观看| 亚洲码和欧洲精品激情系列| 成人亚欧免费视频| 亚洲性感丝袜诱惑在线观看| 国产精品99久久久www| 欧洲精品二区| 蜜臀AV成人精品蜜臀AV久久| 天天弄天天操| 国语精品av| 91丝袜美腿网站| 久久精品国产亚洲AV高级北京| 欧美情色男人的天堂| 综合操逼| 黄色视频高清无码网站| 丝袜视频网国产90| 日韩午夜国产| 婷婷九月| 欧美综合娱乐久久| 亚洲欧美日韩精品久| 97久操| 精爱久久| 久操B网| 激情五月天网站| 97在线免费观看| 综合天天。| 国产农村妇女精品一二区| 久久久久国产精品喷潮免费观看臀| 新91视频.cmp| 亚洲精品久久久久久| 99啪啪视频| 中出91| 九九综合久久| 久久九九视频九九视频| 蜜臀99久久精品久久久久| 国内外毛片在线观看| 综合网亚| 欧美激情超碰777| 精品久久在线区一区| 91中文在线| 丁香六月激情| 91GD.COM| 亚洲少妇色| 亚洲丝袜色| www…国产操逼| 午夜福利 成人 91| 秋霞网无码| 综合色欧美| 国产精品另类一区大香蕉| 天综合网欧美| 久久久成人精品| 97精品全部| 欧洲综合色图| 久久性爱视频99| 亚洲一区日韩精品| 国产乱伦亚洲| 丁香婷婷激情五月天无毒不卡 | 久久精彩免费视频| 婷婷五月天福利| 青青草密桃在线播放| 色呦呦、国产精品| 欧美色图 人妻| 少好三P| 91精品导航| 啪啪啪东京| 精品久久久亚洲AV成人网站| 亚洲日韩精品在线播放| yazhousetuoumei| 婷婷性网| 麻豆国产视频精品观看| 亚洲人人操| www. 男人天堂成人在线| 97免费在线观看| 国岛片视频| 久久久久久夜夜夜夜夜| 97久操| 在线观看黄色电话| 密臀AV在线| 亚洲色婷婷久久91| 大香樵伊人网| 国产精品农村妇女| 亚洲精品日日夜夜52| 国产SV一线| 看日韩黄片| www.狠狠干.coom | 久久乐| 欧洲视频在线| 成人黑料社久久| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 精吧天堂| 国产AV激情无码久久无码| 亚洲色图加勒比| 国产精品不卡高清在线观看| 东京热男人的天堂网| 91性情| 极品粉嫩一区二区| 国产在线视频午夜精华在| 91色艳| 久久久一区二区三区三州| 日韩AV色图| 欧美 日韩 亚洲 春色| 国产又大又粗又长视频在线| 免费试看60秒| 亚洲熟久久| 五月丁香色色网| 天天干天天操天天操夜夜操天天操| 深田咏美亚洲精品福利社| 国产精品伦理| 中文字幕55555| 亚洲精品尤物yw在线影院| 综合大香蕉美。| 婷婷色综合| 日韩中文字幕精品一区在线| 久久久亚洲熟妇资源| 国产馆极品诱惑| 亚洲女毛多水多21P| 亚洲一区中文字幕| 亚洲天堂另类美腿| 中文操嬖片。| 五月天我淫我色av| 91亚洲综合在线| 日韩精品第3页| 色播五月丁香| 国精精品无码一二三区水多多| 91丝袜美女视频| 久久激情四射婷婷丁香五月天| 亚洲综合888| 亚洲av强奸乱伦| 曰韩成人免费视频| 五月天伊人| 国产又粗又又黄又猛| 青娱乐亚洲自拍| 国产精品探花色| 日本女人久久久| 91热热色| 美女91| 精品人妻一区二区三区不卡断 | 亚洲日韩精品在线播放| 免费观看的黄色的网站| 爽极品影院| a一区二区三区乱码在线| 校园春色 欧美| 性综合网| 亚洲av综合伊人久久| 91久久| 国产精品亚洲高清在线| 久草精品国产99| 色综合V| 亚洲午夜福利在线影院| 日日碰狠狠添天天爽超| 欧美日本国产日韩激情视频| 黄色电影观看久久9| 99久久精品国产高潮| 1024日韩| 抽查国产福利主播| 情色五月天网| 97国产精品一区二区传媒公司| 亚洲狠| 2018天天干在线视频| 欧美顶级黄色大片免费| 国产精品久久久久综合| 久久久久密| 操死我了啊啊啊| 欧美日韩色| 国产在线综合福利网站| 亚洲 日韩 丝袜 熟女 变态| 色色激情五月天| 亚洲欧洲无码97久久精品| 日韩精彩视频| 人人操我人人干| 色五月首页| 啊啊啊不要好爽日韩无码一区| 久久久涩| 综合操逼| 老鸭窝黄色视频网站| 久久αⅴ| 操婷婷逼| 中文欧丝袜诱惑| 亚洲色系另类精品国产| 亚洲高清在线| 国产99999久久精品| 亚瑟国产精品久久无码| 天天干天天操天天拍| 亚洲影视高清第一页| 污污汅18禁网站在线永久免费观看| 97干com| 男人亚洲天堂| 综合色图,成人综合网| 久久9久久| 激情五月婷| 亚洲无码一区成人免费午夜| 亚欧性爱在线无码| 精品国产乱码久久久久久免费| 日本熟女中文字幕一区| 欧美日韩大陆黑人少妇99| 永久电影三级在线观看| 草久久久| 国产精品久久久久久无码红治院| 天天综合网1| 人妻 丝袜美腿 中文字幕| h色99999| www.av在线观看| 综合五月天| 97人人爱人人做人人乐| 丝袜美腿制服人妻二区中文字幕 | av网页一区二区三区| 午夜精品久久久久久久99| 亚洲成?V人片在线观看福利| 俞拍久久国应视频| 欧美色图亚洲色图成人在在线| 久热影视| 91黄射| 天堂麻豆天美| 日本午夜久久电影| 100啪啪视频大全| 美女91网址| 美国久久一二三四| 国产99 中文字幕日韩小视频| 亚洲丝袜诱惑| 国产女人9999| 四虎AV无码| 欧美疯狂做爰xxxx| 天天做日日做| 秋霞Av理论一级在线| 国产日韩中文字幕欧美| 日日干日日操五月天伦理视频| 免费的黄片wwwwww| 久久精品福利影院| 精品人妻一二三| 日韩欧美三级| 五月天人妻综合| 日韩av色图| 欧美日韩国产电影| 精品国产自在在线99| 99热在线播放| 日韩中文字幕二区| 自拍偷拍2025在线观看| 在线看片国产精品每日更新| 日韩免费看在线黄色片| 亚洲在线| 超碰免费97| 亚洲一区操| 国产第12页| 性爱乱伦视频免费| 成在线人在线观看视频| 日本潮催一卡操| 欧美黄色大片在线观看 | 床上啊啊啊一区二区三区| 无遮挡h肉动漫在线观看| 小视频玖玖| 1769国内精品视频| 色黄色美女大长腿午夜视频| 一区二区三区美女超清| 视频一区二区免费在线| 收看日本人日bb| 久久久精品电影| 国产 亚洲 丝袜 制服| 黄色av一区二区在线| 国产精品一二三区福利| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 在线 亚洲 网爆 自拍| 人人澡综合涩| 亚洲成人AB| 秋霞操逼片| 久久国内| 欧美熟妇精品黑人巨大一二三区| 亚熟hd视频在线| 麻豆天美在线| 成人av福利在线观看| 91人妻Pr| 亚州色国| 久插综合| 欧美偷拍| 日本午夜福利影院| 成人精品视频一区二区| 抽插一区二区视频| 亚洲不卡三级手机播放| 精品国产www久久| 中文字幕人妻色偷偷久久皮 | 999综合网| 日韩欧美国产一区二区三区四区| 欧美极品少妇交| 欧美少妇高潮视频| 国产区91柔拿会所技师| 日韩AV色图| 中文字幕一区二区视频在线观看| 天天日天天干天天整| 欧美另类自拍 | 欧美一二级| 人干人人人操人人摸| 在线视频五十市| 黄色片一区二区三区四区五区| 久久的网站啊啊啊啊啊| 中文字幕乱码在线| 久久久艹艹艹| 羞涩视频| 青青草黑寡妇男人天堂| 黄色片A级一区二区三区| 欧美大片一区二区三区 | 福利在线黄片| 九九九九热只有精品| 五月丁香六月婷| 天久久久噜噜噜久久国产精品爽爽| 欧美婷婷| a片 xxxx受爽视频| 老司机免费视频在线91| 黄色电影在线播放综合网站| 久久久久元码视频| 日本岛国黄色网址| 白丝一区| 中文字幕伊人| 五月天开心网| 91av一区二区在线观看| 欧美91久久久久| 男人的天堂2010| 日本性爱少妇| 国产一区二区三区免费视频在性观看 | 大香蕉婷婷| 在线国产福利网址导航| 嗯嗯啊好爽| 欧美极品少妇| 岛国小电影| 久久天堂婷婷网| 91足交| 热思思免费视频| 欧美色九九| 色香综合天天影视综合| 日日干夜夜操视频h| 成人丁香五月| 久久亚洲AV成人精品无码| 成人五月天丁香激情综合| 色偷偷综合91久久噜噜| 久久最新视频免费观看| 不卡在线一区,精品一区二区三区中| 日韩乱伦AⅤ| 亚洲国产欧美一区二区潘金莲| 人妻熟女一区二区在线视频| 99re在线视频| 日本久久999| 韩日巨乳美女免费视频在线观看|