diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt index c979f26b..eb87b934 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt @@ -670,7 +670,7 @@ object AngConfigManager { if (TextUtils.isEmpty(conf)) { return null } - return Utils.createQRCode(conf) + return QRCodeDecoder.createQRCode(conf) } catch (e: Exception) { e.printStackTrace() diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/QRCodeDecoder.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/QRCodeDecoder.kt index 250f84df..027573a5 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/QRCodeDecoder.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/QRCodeDecoder.kt @@ -5,6 +5,7 @@ import android.graphics.BitmapFactory import com.google.zxing.* import com.google.zxing.common.GlobalHistogramBinarizer import com.google.zxing.common.HybridBinarizer +import com.google.zxing.qrcode.QRCodeWriter import java.util.* /** @@ -13,6 +14,36 @@ import java.util.* object QRCodeDecoder { val HINTS: MutableMap = EnumMap(DecodeHintType::class.java) + /** + * create qrcode using zxing + */ + fun createQRCode(text: String, size: Int = 800): Bitmap? { + try { + val hints = HashMap() + hints[EncodeHintType.CHARACTER_SET] = "utf-8" + val bitMatrix = QRCodeWriter().encode(text, + BarcodeFormat.QR_CODE, size, size, hints) + val pixels = IntArray(size * size) + for (y in 0 until size) { + for (x in 0 until size) { + if (bitMatrix.get(x, y)) { + pixels[y * size + x] = 0xff000000.toInt() + } else { + pixels[y * size + x] = 0xffffffff.toInt() + } + + } + } + val bitmap = Bitmap.createBitmap(size, size, + Bitmap.Config.ARGB_8888) + bitmap.setPixels(pixels, 0, size, 0, 0, size, size) + return bitmap + } catch (e: Exception) { + e.printStackTrace() + return null + } + } + /** * 同步解析本地图片二维码。该方法是耗时操作,请在子线程中调用。 * diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt index 48e9c488..cd8acd49 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt @@ -4,13 +4,7 @@ import android.content.ClipboardManager import android.content.Context import android.text.Editable import android.util.Base64 -import com.google.zxing.WriterException -import android.graphics.Bitmap -import com.google.zxing.BarcodeFormat -import com.google.zxing.qrcode.QRCodeWriter -import com.google.zxing.EncodeHintType import java.util.* -import kotlin.collections.HashMap import android.content.ClipData import android.content.Intent import android.content.res.Configuration.UI_MODE_NIGHT_MASK @@ -171,36 +165,6 @@ object Utils { return ret } - /** - * create qrcode using zxing - */ - fun createQRCode(text: String, size: Int = 800): Bitmap? { - try { - val hints = HashMap() - hints[EncodeHintType.CHARACTER_SET] = "utf-8" - val bitMatrix = QRCodeWriter().encode(text, - BarcodeFormat.QR_CODE, size, size, hints) - val pixels = IntArray(size * size) - for (y in 0 until size) { - for (x in 0 until size) { - if (bitMatrix.get(x, y)) { - pixels[y * size + x] = 0xff000000.toInt() - } else { - pixels[y * size + x] = 0xffffffff.toInt() - } - - } - } - val bitmap = Bitmap.createBitmap(size, size, - Bitmap.Config.ARGB_8888) - bitmap.setPixels(pixels, 0, size, 0, 0, size, size) - return bitmap - } catch (e: WriterException) { - e.printStackTrace() - return null - } - } - /** * is ip address */ @@ -274,7 +238,7 @@ object Utils { if (value != null && Patterns.WEB_URL.matcher(value).matches() || URLUtil.isValidUrl(value)) { return true } - } catch (e: WriterException) { + } catch (e: Exception) { e.printStackTrace() return false }