快捷导航

×
  1. 首页
  2. 论坛
  3. Android的通用模块、二维码模块
混合式开发收藏本版 +发表新主题

Android的通用模块、二维码模块

发布者: 大米 发布时间: 2019-5-28 09:45[复制链接] 0 210

大米 发表于 2019-5-28 09:45:48 | 显示全部楼层 |阅读模式
hy.common.android引入aar的方法
以Android Studio为例
1. 将hy.common.android.aar拷贝到工程的lib目录中。2. 在build.gradle添加repositories节点    android {        ...        repositories {            flatDir {                dirs 'libs'            }        }    }    dependencies {        ...    }3. 在build.gradle中的节点添加编译的aar包    dependencies {        # Grandle 4.0以上的版本用如下引用        implementation(name: 'hy.common.android', ext: 'aar')        implementation(name: 'google.zxing.android', ext: 'aar')                # 也可以用之前的老版本的写法,不过Android Studio会有提示        compile(name: 'hy.common.android', ext: 'aar')        compile(name: 'google.zxing.android', ext: 'aar')    }4. 同步更新配置到工程    [Tools] -> [Android] -> [Sync Project with Gradle Files]通用开发包二维码开发包二维码开发包的使用方法
        <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>                <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>                <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>                <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>                <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="/"/>                    
  • 打开二维码、条形码界面

    /** 二维码标记 */    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">改标题
  • (可选)中文识别

    /** 二维码的识别编码 */    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 ,"??" ,"�" ,"㼿" ,"ä" ,"�" ,"å" ,"§" ,"Ð" ,"¾","");    }                // 转换编码,防止如中石油发票上二维码的乱码    String v_2DCE = "";    for (int i=0; i<$2DCharEncodingTos.length; i++)    {        v_2DCE = StringHelp.toCharEncoding(v_Content ,$2DCharEncoding ,$2DCharEncodingTos);        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 perms)        {            // 获取成功的权限列表        }                @Override        public void onPermissionsDenied(int requestCode, List 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 包,其源码链接如下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
扫描二维码,手机查看
声明:本文来源于互联网,观点仅代表作者本人,不代表hl05.,真实性请妥善甄别。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

×
HL05微信
在微信上关注我们