|
1 | | -#### Library |
2 | | -2016.4.7 |
3 | | -- 添加打印Log [第三方](https://github.com/ZhaoKaiQiang/KLog) |
4 | | -- 在Application onCreate()中定义, 可控制Log是否输出, 默认true |
5 | | -```java |
6 | | -@Override |
7 | | -public void onCreate() { |
8 | | - //... |
9 | | - KLog.init(BuildConfig.DEBUG); |
10 | | - //... |
11 | | - // 使用 |
12 | | - KLog.a(); |
13 | | - KLog.e(); |
14 | | - //... |
15 | | -} |
| 1 | +# 使用方式 |
| 2 | +* 这个library还在功能迭代中,功能不尽完善... |
| 3 | +```gradle |
| 4 | +compile 'com.code19.library:library:0.0.7' |
16 | 5 | ``` |
| 6 | +# 常用工具类 |
| 7 | +- 每一个Android开发者在日常开发中都会积累一些自己的代码片段 |
| 8 | +- 目的: |
| 9 | + * 1.将常用功能模块做成工具类 |
| 10 | + * 2.封装Android系统api,简化api的使用 |
| 11 | + * 3.收集一些高效的正确的代码片段避免下次踩坑 |
| 12 | + * 4.尽量少依赖第三方 |
| 13 | +- 能力一般,水平有限,难免有Bug,如果有任何问题,请<a href="https://github.com/h4de5ing/AndroidCommon/issues">反馈</a> |
| 14 | +- 如果你有更好的代码,请提交<a href="https://github.com/h4de5ing/AndroidCommon/pulls">Pull request</a> |
| 15 | + |
| 16 | +* 感谢各位的star,你们的支持是我继续的动力,好了,本着多一点真诚,少一点套路的原则,完善一下文档 |
| 17 | +* 为了让更多人用上这个库,现在推出Eclipse <a href="https://github.com/h4de5ing/AndroidCommon/blob/master/">lib下载</a> |
| 18 | + |
| 19 | +``` |
| 20 | +调用方法如此简单: |
| 21 | +调用结果 = 类名.方法名( 参数 ) |
| 22 | +AppUtils.getAppName(MainActivity.this,com.code19.androidcommon); |
| 23 | +``` |
| 24 | + |
| 25 | +## library Module中的类: |
| 26 | + |
| 27 | +- AppUtils.java 应用工具类 |
| 28 | + * getAppName 获取应用名称 |
| 29 | + * getAppIcon 获取应用图标 |
| 30 | + * getAppDate 获取应用更新日期 |
| 31 | + * getAppSize 获取应用大小 |
| 32 | + * getAppApk 获取应用apk文件 |
| 33 | + * getAppVersionName 获取应用版本名称 |
| 34 | + * getAppVersionCode 获取应用版本号 |
| 35 | + * getAppInstaller 获取应用的安装市场 |
| 36 | + * getAppPackageName 获取应用包名 |
| 37 | + * hasPermission 是否有权限 |
| 38 | + * isInstalled 应用是否安装 |
| 39 | + * installApk 安装应用 |
| 40 | + * uninstallApk 卸载应用 |
| 41 | + * isSystemApp 是否是系统应用 |
| 42 | + * isServiceRunning 服务是否在运行 |
| 43 | + * stopRunningService 停止服务 |
| 44 | + * getNumCores 获取Cpu内核数 |
| 45 | + * killProcesses 结束进程 |
| 46 | + * runScript 运行脚本 |
| 47 | + * getRootPermission 获得root权限 |
| 48 | + |
| 49 | +- BitmapUtils.java Bitmap工具类 |
| 50 | + * decodeFile 解析文件为bitmap |
| 51 | + * getImageThumbnail 获取图片缩略图 |
| 52 | + |
| 53 | +- CacheUtils.java 缓存工具类 |
| 54 | + * setCache 设置缓存 |
| 55 | + * getCache 获取缓存 |
| 56 | + |
| 57 | +- CipherUtils.java 密码工具类 |
| 58 | + * encode(String input) 获取字符串md5值 |
| 59 | + * encode(InputStream in) 获取输入流的md5值 |
| 60 | + * base64Encode Base64加密 |
| 61 | + * base64Decode Base64解密 |
| 62 | + * XorEncode 异或加密 |
| 63 | + * XorDecode 异或解密 |
| 64 | + |
| 65 | +- CoordinateTransformUtil.java GPS坐标转换工具 |
| 66 | + * 百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换的工具 |
| 67 | + * bd09towgs84 百度坐标系(BD-09)转WGS坐标(百度坐标纬度,百度坐标经度),WGS84坐标数组 |
| 68 | + * wgs84tobd09 WGS坐标转百度坐标系(BD-09)(WGS84坐标系的经度,WGS84坐标系的纬度),百度坐标数组 |
| 69 | + * gcj02tobd09 火星坐标系(GCJ-02)转百度坐标系(BD-09)(火星坐标经度,火星坐标纬度),百度坐标数组 |
| 70 | + * bd09togcj02 百度坐标系(BD-09)转火星坐标系(GCJ-02)(百度坐标纬度,百度坐标经度),火星坐标数组 |
| 71 | + * wgs84togcj02 WGS84转GCJ02(火星坐标系)(WGS84坐标系的经度,WGS84坐标系的纬度),火星坐标数组 |
| 72 | + * gcj02towgs84 GCJ02(火星坐标系)转GPS84(火星坐标系的经度,火星坐标系纬度),WGS84坐标数组 |
| 73 | + * transformlat 纬度转换 |
| 74 | + * transformlng 经度转换 |
| 75 | + * out_of_china 判断是否在国内,不在国内不做偏移 |
| 76 | + |
| 77 | +- DateUtil.java 日期工具类 |
| 78 | + * formatDataTime 格式化日期时间 |
| 79 | + * formatDate 格式化日期 |
| 80 | + * formatTime 格式化时间 |
| 81 | + * formatDateCustom 自定义格式的格式化日期时间 |
| 82 | + * string2Date 将时间字符串转换成Date |
| 83 | + * getTime 获取系统时间 |
| 84 | + * subtractDate 计算两个时间差 |
| 85 | + * getDateAfter 得到几天后的时间 |
| 86 | + * getWeekOfMonth 获取当前时间为本月的第几周 |
| 87 | + * getDayOfWeek 获取当前时间为本周的第几天 |
| 88 | + |
| 89 | +- DensityUtil.java 屏幕工具类 |
| 90 | + * dip2px dp转像素 |
| 91 | + * px2dip 像素转dp |
| 92 | + * px2sp 像素转sp |
| 93 | + * sp2px sp转像素 |
| 94 | + * getScreenW 获取屏幕宽度 |
| 95 | + * getScreenH 获取屏幕高度 |
| 96 | + * getScreenRealSize 获取屏幕的真实高度 |
| 97 | + * getStatusBarH 获取状态栏高度 |
| 98 | + * getNavigationBarrH 获取导航栏高度 |
| 99 | + |
| 100 | +- DeviceUtils.java 设备信息工具 |
| 101 | + * getAndroidID 获取AndroidID |
| 102 | + * getIMEI 获取设备IMEI码 |
| 103 | + * getIMSI 获取设备IMSI码 |
| 104 | + * getWifiMacAddr 获取MAC地址 |
| 105 | + * getIP 获取网络IP地址(优先获取wifi地址) |
| 106 | + * getWifiIP 获取WIFI连接下的ip地址 |
| 107 | + * getGPRSIP 获取GPRS连接下的ip地址 |
| 108 | + * getSerial 获取设备序列号 |
| 109 | + * getSIMSerial 获取SIM序列号 |
| 110 | + * getPhoneNumber 获取手机号码(未获取成功) |
| 111 | + * getMNC 获取网络运营商 46000,46002,46007 中国移动,46001 中国联通,46003 中国电信 |
| 112 | + * getCarrier 获取网络运营商:中国电信,中国移动,中国联通 |
| 113 | + * getModel 获取硬件型号 |
| 114 | + * getBuildBrand 获取编译厂商 |
| 115 | + * getBuildHost 获取编译服务器主机 |
| 116 | + * getBuildTags 获取描述Build的标签 |
| 117 | + * getBuildTime 获取系统编译时间 |
| 118 | + * getBuildUser 获取系统编译作者 |
| 119 | + * getBuildVersionRelease 获取编译系统版本(5.1) |
| 120 | + * getBuildVersionCodename 获取开发代号 |
| 121 | + * getBuildVersionIncremental 获取源码控制版本号 |
| 122 | + * getBuildVersionSDK 获取编译的SDK |
| 123 | + * getBuildID 获取修订版本列表(LMY47D) |
| 124 | + * getSupportedABIS CPU指令集 |
| 125 | + * getManufacturer 获取硬件制造厂商 |
| 126 | + * getBootloader 获取系统启动程序版本号 |
| 127 | + * getScreenDisplayID |
| 128 | + * getDisplayVersion 获取系统版本号 |
| 129 | + * getLanguage 获取语言 |
| 130 | + * getCountry 获取国家 |
| 131 | + * getOSVersion 获取系统版本:5.1.1 |
| 132 | + * getGSFID 获取GSF序列号 |
| 133 | + * getBluetoothMAC 获取蓝牙地址 |
| 134 | + * getPsuedoUniqueID Android设备物理唯一标识符 |
| 135 | + * getFingerprint 构建标识,包括brand,name,device,version.release,id,version.incremental,type,tags这些信息 |
| 136 | + * getHardware 获取硬件信息 |
| 137 | + * getProduct 获取产品信息 |
| 138 | + * getDevice 获取设备信息 |
| 139 | + * getBoard 获取主板信息 |
| 140 | + * getRadioVersion 获取基带版本(无线电固件版本 Api14以上) |
| 141 | + * getUA 获取的浏览器指纹(User-Agent) |
| 142 | + * getDensity 获取得屏幕密度 |
| 143 | + * getGoogleAccounts 获取google账号 |
| 144 | + |
| 145 | + |
| 146 | +- FileUtils.java 文件工具类 |
| 147 | + * closeIO 关闭IO流 |
| 148 | + * isFileExist 文件是否存在 |
| 149 | + * writeFile 将字符串写入到文件 |
| 150 | + * readFile 从文件中读取字符串 |
| 151 | + * copyFileFast 快速复制 |
| 152 | + * shareFile 分享文件 |
| 153 | + * zip zip压缩 |
| 154 | + * unzip zip解压 |
| 155 | + * formatFileSize 格式化文件大小 |
| 156 | + * Stream2File 将输入流写入到文件 |
| 157 | + * createFolder 创建文件夹 |
| 158 | + * createFolder 创建文件夹(支持覆盖已存在的同名文件夹) |
| 159 | + * getFolderName 获取文件夹名称 |
| 160 | + * deleteFile 删除目录下的文件 |
| 161 | + * openImage 打开图片 |
| 162 | + * openVideo 打开视频 |
| 163 | + * openURL 打开URL |
| 164 | + |
| 165 | +- ImageUtils.java 图片工具类 |
| 166 | + * calculateInSampleSize 计算图片的压缩比率 |
| 167 | + * getPictureDegree 获取图片的角度 |
| 168 | + * rotaingImageView 旋转图片 |
| 169 | + * decodeScaleImage 加载图片并压缩 |
| 170 | + * getRoundedCornerBitmap 获取圆角图片 |
| 171 | + //* decodeUriAsBitmap 解析URL流为图片 |
| 172 | + * bitmap2File bitmap存为文件 |
| 173 | + * compressImage 质量压缩 |
| 174 | + * compressFixBitmap 固定大小压缩 |
| 175 | + |
| 176 | +- JsonUtils.java Json工具类(需要依赖Gson 2.0以上) |
| 177 | + * toJson 对象转json |
| 178 | + * fromJson json转对象 |
| 179 | + * mapToJson Map转为JSONObject |
| 180 | + * collection2Json 集合转换为JSONArray |
| 181 | + * object2Json Object对象转换为JSONArray |
| 182 | + * string2JSONObject json字符串生成JSONObject对象 |
| 183 | + |
| 184 | +- L.java 日志工具 |
| 185 | + * init 初始化日志开关和TAG(默认日志为开,TAG为"ghost") |
| 186 | + * v VERBOSE |
| 187 | + * d DEBUG |
| 188 | + * i INFO |
| 189 | + * w WARN |
| 190 | + * e ERROR |
| 191 | + * a ASSERT |
| 192 | + * json 输出json |
| 193 | + * xml 输出xml |
| 194 | + |
| 195 | + |
| 196 | +- NetUtils.java 网络工具 |
| 197 | + * getNetworkType 获取网络类型 |
| 198 | + * getNetworkTypeName 获取网络名称 |
| 199 | + * isConnected 检查网络状态 |
| 200 | + * isNetworkAvailable 网络可用性 |
| 201 | + * isWiFi 是否wifi |
| 202 | + * openNetSetting 打开网络设置界面 |
| 203 | + * setWifiEnabled 设置wifi状态 |
| 204 | + * getWifiScanResults 获取wifi列表 |
| 205 | + * getScanResultsByBSSID 过滤扫描结果 |
| 206 | + * getWifiConnectionInfo 获取wifi连接信息 |
| 207 | + |
| 208 | +- SPUtils.java SharedPreferences工具 |
| 209 | + * setSP 存储SharedPreferences值 |
| 210 | + * getSp 获取SharedPreferences值 |
| 211 | + * cleanAllSP 清除所有的SP值 |
| 212 | + |
| 213 | +- StringUtils.java 字符串工具 |
| 214 | + * getChsAscii 汉字转成ASCII码 |
| 215 | + * convert 单字解析 |
| 216 | + * getSelling 词组解析 |
| 217 | + * parseEmpty 将null转化为"" |
| 218 | + * isEmpty 是否是空字符串 |
| 219 | + * chineseLength 中文长度 |
| 220 | + * strLength 字符串长度 |
| 221 | + * subStringLength 获取指定长度的字符所在位置 |
| 222 | + * isChinese 是否是中文 |
| 223 | + * isContainChinese 是否包含中文 |
| 224 | + * strFormat2 不足2位前面补0 |
| 225 | + * convert2Int 类型安全转换 |
| 226 | + * decimalFormat 指定小数输出 |
| 227 | + |
| 228 | +- SystemUtils.java 系统工具 |
| 229 | + * sendSMS 调用系统发送短信 |
| 230 | + * forwardToDial 跳转到拨号 |
| 231 | + * callPhone 直接呼叫号码 |
| 232 | + * sendMail 发邮件 |
| 233 | + * hideKeyBoard 隐藏系统键盘 |
| 234 | + * isBackground 判断当前应用程序是否后台运行 |
| 235 | + * isSleeping 判断手机是否处理睡眠 |
| 236 | + * installApk 安装apk |
| 237 | + * isRooted 是否root |
| 238 | + * isRunningOnEmulator 当前设备是否是模拟器 |
| 239 | + * getAppVersionName 获取当前应用程序的版本名称 |
| 240 | + * getAppVersionCode 获取当前应用程序的版本号 |
| 241 | + * goHome 返回Home |
| 242 | + * getSign 获取应用签名 |
| 243 | + * hexdigest 32位签名 |
| 244 | + * getDeviceUsableMemory 获取设备可用空间 |
| 245 | + * gc 清理后台进程和服务 |
| 246 | + * createDeskShortCut 创建桌面快捷方式 |
| 247 | + * createShortcut 创建快捷方式 |
| 248 | + * shareText 分享文本 |
| 249 | + * shareFile 分享文件(此方法是调用FileUtils.shareFile中的方式) |
| 250 | + * getShareTargets 获取可接受分享的应用 |
| 251 | + * getCurrentLanguage 获取当前系统的语言 |
| 252 | + * getLanguage 获取当前系统的语言 |
| 253 | + * isGpsEnabled GPS是否打开 |
| 254 | + * showSoftInputMethod 显示软键盘 |
| 255 | + * closeSoftInputMethod 关闭软键盘 |
| 256 | + * showSoftInput 显示软键盘 |
| 257 | + * closeSoftInput 关闭软键盘 |
| 258 | + |
| 259 | +- VerificationUtils.java 验证工具类 |
| 260 | + * matcherRealName 判断姓名格式 |
| 261 | + ``` |
| 262 | + 真实姓名可以是汉字,也可以是字母,但是不能两者都有,也不能包含任何符号和数字 |
| 263 | + 1.如果是英文名,可以允许英文名字中出现空格 |
| 264 | + 2.英文名的空格可以是多个,但是不能连续出现多个 |
| 265 | + 3.汉字不能出现空格 |
| 266 | + ``` |
| 267 | + * matcherPhoneNum 判断手机号格式 (匹配11数字,并且13-19开头) |
| 268 | + * matcherAccount 判断账号格式 (4-20位字符) |
| 269 | + * matcherPassword 判断密码格式 (6-12位字母或数字) |
| 270 | + * matcherPassword2 判断密码格式 (6-12位字母或数字,必须同时包含字母和数字) |
| 271 | + * matcherEmail 判断邮箱格式 |
| 272 | + * matcherIP 判断IP地址 |
| 273 | + * matcherUrl 判断URL (http,https,ftp) |
| 274 | + * matcherVehicleNumber 判断中国民用车辆号牌 |
| 275 | + * matcherIdentityCard 判断身份证号码格式 |
| 276 | + * isNumeric 是否数值型 |
| 277 | + * testRegex 是否匹配正则 |
| 278 | + * checkPostcode 匹配中国邮政编码 |
| 279 | + |
| 280 | +- ViewUtils.java View工具 |
| 281 | + * removeSelfFromParent |
| 282 | + * requestLayoutParent |
| 283 | + * isTouchInView |
| 284 | + * bigImage |
| 285 | + * setTVUnderLine 给TextView设置下划线 |
| 286 | + * showPopupWindow |
| 287 | + * dismissPopup |
| 288 | + * captureView 截图 |
| 289 | + * createViewBitmap 截图 |
| 290 | + * convertViewToBitmap 截图 |
| 291 | + * getActivityBitmap 获取Activity的截图 |
| 292 | + * getStatusBarHeight 获取状态栏高度 |
| 293 | + * getToolbarHeight 获取工具栏高度 |
| 294 | + * getNavigationBarHeight 获取导航栏高度 |
| 295 | + * measureView 测量view |
| 296 | + * getViewWidth 获取view的宽度 |
| 297 | + * getViewHeight 获取view的高度 |
| 298 | +
|
| 299 | + |
| 300 | + |
| 301 | +```shell |
| 302 | +
|
| 303 | + /** |
| 304 | + * 身份证校验 |
| 305 | + * <p> |
| 306 | + * 根据〖中华人民共和国国家标准 GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。 |
| 307 | + * 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 |
| 308 | + * 地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。 |
| 309 | + * 出生日期码表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。 |
| 310 | + * 顺序码表示同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。顺序码的奇数分给男性,偶数分给女性。 |
| 311 | + * 校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。 |
| 312 | + * 出生日期计算方法。 |
| 313 | + * 15位的身份证编码首先把出生年扩展为4位,简单的就是增加一个19或18,这样就包含了所有1800-1999年出生的人; |
| 314 | + * 2000年后出生的肯定都是18位的了没有这个烦恼,至于1800年前出生的,那啥那时应该还没身份证号这个东东,⊙﹏⊙b汗... |
| 315 | + * 下面是正则表达式: |
| 316 | + * 出生日期1800-2099 /(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])/ |
| 317 | + * 身份证正则表达式 /^[1-9]\d{5}((1[89]|20)\d{2})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dx]$/i |
| 318 | + * 15位校验规则 6位地址编码+6位出生日期+3位顺序号 |
| 319 | + * 18位校验规则 6位地址编码+8位出生日期+3位顺序号+1位校验位 |
| 320 | + * 校验位规则 公式:∑(ai×Wi)(mod 11)……………………………………(1) |
| 321 | + * 公式(1)中: |
| 322 | + * i----表示号码字符从由至左包括校验码在内的位置序号; |
| 323 | + * ai----表示第i位置上的号码字符值; |
| 324 | + * Wi----示第i位置上的加权因子,其数值依据公式Wi=2^(n-1)(mod 11)计算得出。 |
| 325 | + * i 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 |
| 326 | + * Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1 |
| 327 | + * </P> |
| 328 | + * |
| 329 | + * @author Yoojia.Chen (yoojia.chen@gmail.com) |
| 330 | + * @version version 2015-05-21 |
| 331 | + * @since 2.0 |
| 332 | + */ |
| 333 | +``` |
| 334 | + |
| 335 | +# 这个库参考了众多网络的中的代码,在此对这些无私奉献的人致以最诚挚的感谢。 |
| 336 | + |
| 337 | +License |
| 338 | +---- |
| 339 | + |
| 340 | + Copyright (C) 2016 android@19code.com |
| 341 | + |
| 342 | + Licensed under the Apache License, Version 2.0 (the "License"); |
| 343 | + you may not use this file except in compliance with the License. |
| 344 | + You may obtain a copy of the License at |
| 345 | + |
| 346 | + http://www.apache.org/licenses/LICENSE-2.0 |
| 347 | + |
| 348 | + Unless required by applicable law or agreed to in writing, software |
| 349 | + distributed under the License is distributed on an "AS IS" BASIS, |
| 350 | + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 351 | + See the License for the specific language governing permissions and |
| 352 | + limitations under the License. |
17 | 353 |
|
0 commit comments