平时在开发过程中,总会遇到一些这种情况:之前用过的功能或者方法,现在想要用的时候,却忘记了。于是在多个项目中盲找,浪费时间。最终还是决定随手记录一下吧,仅供参考。
1、比较版本
比较版本号versionCode就不用说了,直接比较大小就可以了。如果是比较版本名versionName,比如1.0.1,可以用字符串分割成数组,然后按从左到右依次比较的思路来判断。代码如下:
/**
* 版本比较
* @param netVersion 远程版本
* @param localVersion 本地版本
*/
fun versionComparison(netVersion: String, localVersion: String): Boolean {
if (TextUtils.isEmpty(netVersion) || TextUtils.isEmpty(localVersion)) {
return false
}
val netVersionSplit = netVersion.split("\\.".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
val localVersionSplit = localVersion.split("\\.".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
val maxLen = if (netVersionSplit.size > localVersionSplit.size) netVersionSplit.size else localVersionSplit.size
for (i in 0 until maxLen) {
val netVersionNumber = (if (i < netVersionSplit.size) netVersionSplit[i] else "0").toInt()
val localVersionNumber = (if (i < localVersionSplit.size) localVersionSplit[i] else "0").toInt()
if (netVersionNumber > localVersionNumber) {
return true
} else if (netVersionNumber < localVersionNumber) {
return false
}
}
return false
}
2、手机号码正则表达式检测
/***
* 手机号码检测
* @param number 手机号码
*/
fun checkPhoneNumber(number: String): Boolean{
val regExp = "^((13[0-9])|(15[^4])|(18[0-9])|(17[0-8])|(14[5-9])|(166)|(19[8,9])|)\\d{8}$"
val pattern = Pattern.compile(regExp)
val matcher = pattern.matcher(number)
return matcher.matches()
}
3、判断手机是否开启位置服务
/**
* 手机是否开启位置服务,如果没有开启那么所有app将不能使用定位功能
*/
private fun isLocServiceEnable(context: Context): Boolean {
val mLocationManager: LocationManager? = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager?
val gps: Boolean? = mLocationManager?.isProviderEnabled(LocationManager.GPS_PROVIDER)
val network: Boolean? = mLocationManager?.isProviderEnabled(LocationManager.NETWORK_PROVIDER)
if (gps!! || network!!) {
return true
}
return false
}
4、将经纬度转换为度分秒格式
/**
* 将经纬度转换为度分秒格式
*
* @param du 经纬度 116.418847 40.0897315
* @return 116°25'7.85" 40°5'23.03"
*
* 参考
* Java实现经纬度格式转化度分秒
* https://blog.csdn.net/q32421/article/details/130220888
* Java 度分秒转经纬度,经纬度转度分秒,度分转经纬度,经纬度转度分
* https://blog.csdn.net/qq_40985985/article/details/124448314
*/
fun latLng2Dfm(du: Double): String {
val du1 = du.toInt()
val tp = (du - du1) * 60
val fen = tp.toInt()
// val miao = String.format("%.2f", abs((tp - fen) * 60))
return du1.toString() + "°" + abs(fen) + "'" //+ miao + "\""
}