CommonUtils.kt 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package com.grkj.iscs.util
  2. import android.Manifest.permission.ACCESS_COARSE_LOCATION
  3. import android.Manifest.permission.ACCESS_FINE_LOCATION
  4. import android.Manifest.permission.BLUETOOTH_ADVERTISE
  5. import android.Manifest.permission.BLUETOOTH_CONNECT
  6. import android.Manifest.permission.BLUETOOTH_SCAN
  7. import android.content.Context
  8. import android.os.Build
  9. import androidx.appcompat.app.AppCompatActivity
  10. import com.grkj.iscs.MyApplication
  11. import com.grkj.iscs.model.Constants.PERMISSION_REQUEST_CODE
  12. import pub.devrel.easypermissions.EasyPermissions
  13. import java.text.SimpleDateFormat
  14. import java.util.Locale
  15. object CommonUtils {
  16. val hexRegex = "^[0-9A-Fa-f]+$".toRegex()
  17. fun dip2px(dpValue: Float): Int {
  18. val density = MyApplication.instance!!.resources.displayMetrics.density
  19. return (dpValue * density + 0.5f).toInt()
  20. }
  21. fun checkPermission(activity: AppCompatActivity, permissions: Array<String>, callBack: () -> Unit) {
  22. val isPermission = EasyPermissions.hasPermissions(activity, *permissions)
  23. if (isPermission) {
  24. callBack.invoke()
  25. } else {
  26. EasyPermissions.requestPermissions(activity, "", PERMISSION_REQUEST_CODE, *permissions)
  27. }
  28. }
  29. fun checkBlePermission(activity: AppCompatActivity, callBack: () -> Unit) {
  30. val permissions: Array<String> = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
  31. arrayOf(
  32. BLUETOOTH_SCAN,
  33. BLUETOOTH_ADVERTISE,
  34. BLUETOOTH_CONNECT,
  35. ACCESS_FINE_LOCATION,
  36. ACCESS_COARSE_LOCATION
  37. )
  38. } else {
  39. arrayOf(ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION)
  40. }
  41. checkPermission(activity, permissions, callBack)
  42. }
  43. fun getStr(textId: Int, ctx: Context? = null): String? {
  44. return ctx?.resources?.getString(textId) ?: let {
  45. MyApplication.instance?.applicationContext?.resources?.getString(textId)
  46. }
  47. }
  48. fun getDiffHours(dateString: String?): Int? {
  49. if (dateString.isNullOrEmpty()) {
  50. return null
  51. }
  52. val format = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault())
  53. val date = format.parse(dateString)
  54. if (date != null) {
  55. // 将 Date 对象转换为时间戳(毫秒)
  56. val timestamp = date.time
  57. // 获取当前时间的时间戳
  58. val currentTimestamp = System.currentTimeMillis()
  59. // 计算时间差(毫秒)
  60. val timeDifferenceInMillis = currentTimestamp - timestamp
  61. // 将时间差转换为小时数,向下取整
  62. val hoursDifference = (timeDifferenceInMillis / (1000 * 60 * 60)).toInt()
  63. return hoursDifference
  64. }
  65. return null
  66. }
  67. fun isValidHex(hexString: String): Boolean {
  68. return hexRegex.matches(hexString)
  69. }
  70. }