Android二维码、条形码开发包(有源码)
来源:互联网 发布:数据库设计教程 pdf 编辑:程序博客网 时间:2024/05/21 10:33
二维码开发包
google.zxing.android.aar下载 基本ZXing V3.3.1
二维码开发包的使用方法
参见 引入aar的方法
AndroidManifest.xml 中添加
<activity android:name="com.google.zxing.client.android.CaptureActivity" android:clearTaskOnLaunch="true" android:stateNotNeeded="true" android:theme="@style/CaptureTheme" android:windowSoftInputMode="stateAlwaysHidden"> <intent-filter> <action android:name="com.google.zxing.client.android.SCAN"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> <!-- Allow web apps to launch Barcode Scanner by linking to http://zxing.appspot.com/scan. --> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="http" android:host="zxing.appspot.com" android:path="/scan"/> </intent-filter> <!-- We also support a Google Product Search URL. --> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="http" android:host="www.google.com" android:path="/m/products/scan"/> </intent-filter> <!-- And the UK version. --> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="http" android:host="www.google.co.uk" android:path="/m/products/scan"/> </intent-filter> <!-- Support zxing://scan/?... like iPhone app --> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="zxing" android:host="scan" android:path="/"/> </intent-filter> </activity>
- 打开二维码、条形码界面
/** 二维码标记 */ private static final int $Result_Scan = 17081; Intent v_CaptureIntent = new Intent(MainActivity.this ,CaptureActivity.class); // 设置二维码编码。可选的,当不设置时,默认为ISO-8859-1 v_CaptureIntent.putExtra(Intents.Scan.CHARACTER_SET ,"GBK"); // 设置标题文字 v_CaptureIntent.putExtra(CaptureActivity.$Title ,"二维码");
startActivityForResult(v_CaptureIntent ,$Result_Scan);
- 获取二维码、条形码的信息
@Override protected void onActivityResult(int i_RequestCode, int i_ResultCode, Intent i_Data) { // 扫描二维码回传 if ( i_RequestCode == $Result_Scan ) { if ( i_ResultCode == RESULT_OK && i_Data != null ) { // 码信息 String v_Content = i_Data.getStringExtra( CaptureActivity.$Decode_Content_Key); // 码类型(ture:二维码 false:条形码) boolean v_QRCodeType = i_Data.getBooleanExtra(CaptureActivity.$Decode_QRCodeType ,true); ... } } }
- (可选)更改界面的上任一文字信息,如改标题 打开values/string_hy.xml中的信息,在新的App应用中,
在values/string.xml覆盖重写即可
<string name="title_qrcode">改标题</string>
- (可选)中文识别
/** 二维码的识别编码 */ private static final String $2DCharEncoding = "GBK"; /** 二维码识别后的转码的字符集 */ private static final String [] $2DCharEncodingTos = {"UTF-8" ,$2DCharEncoding ,"ISO-8859-1" ,"GB2312" ,"GB18030" ,"Big5" ,"ASCII" ,"UTF-16" ,"UTF-32" ,"Shift-JIS"}; /** * 简单判定文本是否为乱码 * * @param i_Text * @return */ private boolean isToCharEncodingError(String i_Text) { return StringHelp.isContains(i_Text ,"??" ,"�" ,"㼿" ,"ä" ,"�" ,"å" ,"§" ,"Ð" ,"¾","\uE21E"); } // 转换编码,防止如中石油发票上二维码的乱码 String v_2DCE = ""; for (int i=0; i<$2DCharEncodingTos.length; i++) { v_2DCE = StringHelp.toCharEncoding(v_Content ,$2DCharEncoding ,$2DCharEncodingTos[i]); if ( !isToCharEncodingError(v_2DCE) ) { break; } } if ( isToCharEncodingError(v_2DCE) ) { // 可能原本就是默认的编码,此判定必须放在最后 v_2DCE = v_Content; }
- (可选)横屏、竖屏的改变
// true为竖屏; false为横屏 HYControl.$Direction = true;
- 注意:网址http前缀转小写后,才能正确调用系统浏览器打开网址。并且前后不能有空格。
v_Content = v_Content.trim(); if ( v_Content.toLowerCase().startsWith("http") ) { v_Content = v_Content.substring(0 ,5).toLowerCase() + v_Content.substring(5); }
- 固有权限在 AndroidManifest.xml 中配置
<uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.FLASHLIGHT" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
- 动态权限的申请 用 EasyPermissions 来动态申请
public class MainActivity implements EasyPermissions.PermissionCallbacks { @AfterPermissionGranted($Permission_QRCode) private void permissionQRCode() { String [] perms = {Manifest.permission.CAMERA ,Manifest.permission.VIBRATE ,Manifest.permission.READ_EXTERNAL_STORAGE ,Manifest.permission.WRITE_EXTERNAL_STORAGE ,Manifest.permission.READ_PHONE_STATE}; if (!EasyPermissions.hasPermissions(this, perms)) { EasyPermissions.requestPermissions(this, "扫描二维码需要打开相机的权限", $Permission_QRCode, perms); } } @Override public void onPermissionsGranted(int requestCode, List<String> perms) { // 获取成功的权限列表 } @Override public void onPermissionsDenied(int requestCode, List<String> perms) { // 获取失败的权限列表 } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); // EasyPermissions handles the request result. EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); } }
- 本模块引用 zxing.jar 包,其源码链接如下
引用 https://github.com/HY-ZhengWei/hy.common.base 类库
引用 https://github.com/HY-ZhengWei/hy.common.zxing 类库
阅读全文
0 0
- Android二维码、条形码开发包(有源码)
- 【Android】条形码/二维码扫描——ZXing源码分析及相关jar包导入
- Android 条形码、二维码扫描开发总结
- android二维码条形码生成
- Android 二维码,条形码
- android 二维码 条形码扫描
- android条形码二维码
- 【Android】条形码/二维码扫描——ZXing源码分析
- android开发游记:二维码和条形码的识别和生成
- Android - 条形码和二维码使用
- Android 扫一扫功能 二维码 条形码
- IOS开发(91)之ZBar 条形码二维码扫描控件
- Android使用ZBar扫描二维码/条形码(实例)+常见问题汇总
- Android使用ZBar扫描二维码/条形码(实例)+常见问题汇总
- iphone开发 二维码和条形码的识别
- Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果 (转载)
- 条形码/二维码
- 二维码 条形码
- 爬虫知识点(模拟登陆与json)
- 获取用户openid
- MySQL Hash索引和B-Tree索引的区别
- SQL语句查询,以及常用函数
- iOS开发中的内存分配(堆和栈)
- Android二维码、条形码开发包(有源码)
- 定位position
- 21包含min函数的栈python
- 第五周 【项目2
- 1012. 数字分类 (20)
- Sphere和vCenter、ESXi的关系
- linux 笔记
- new一个对象的时候JVM都做了哪些事情
- 嵌入式程序员应知道的几个基本问题