DeviceUtil.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. package com.edufound.mobile.util;
  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.content.pm.PackageInfo;
  5. import android.content.pm.PackageManager;
  6. import android.os.Build;
  7. import android.telephony.TelephonyManager;
  8. import android.util.DisplayMetrics;
  9. import java.io.UnsupportedEncodingException;
  10. import java.security.MessageDigest;
  11. import java.util.Locale;
  12. public class DeviceUtil {
  13. DisplayMetrics metric = new DisplayMetrics();
  14. /**
  15. * @author zhangmengjie
  16. * @return 序列号 SerialNumber
  17. */
  18. public String SerialNumber() {
  19. return android.os.Build.SERIAL;
  20. }
  21. /**
  22. * @author zhangmengjie
  23. * @return MD5加密自定义SerialNum
  24. */
  25. public String getSerial() {
  26. String s;
  27. if (EduFoundUtil.isEmpty(EduFoundUtil.getMacAddress())) {
  28. s = "35" + Build.BOARD.length() + Build.BRAND.length() + Build.CPU_ABI.length() + Build.DEVICE.length()
  29. + Build.DISPLAY.length() + Build.HOST.length() + Build.ID.length() + Build.MANUFACTURER.length()
  30. + Build.MODEL.length() + Build.PRODUCT.length() + Build.TAGS.length() + Build.TYPE.length()
  31. + Build.USER.length() + EduFoundUtil.getEthernetMac();
  32. } else {
  33. s = "35" + Build.BOARD.length() + Build.BRAND.length() + Build.CPU_ABI.length() + Build.DEVICE.length()
  34. + Build.DISPLAY.length() + Build.HOST.length() + Build.ID.length() + Build.MANUFACTURER.length()
  35. + Build.MODEL.length() + Build.PRODUCT.length() + Build.TAGS.length() + Build.TYPE.length()
  36. + Build.USER.length() + EduFoundUtil.getMacAddress();
  37. }
  38. return md5Encode(s);
  39. }
  40. public int getWidth(Activity context) {
  41. context.getWindowManager().getDefaultDisplay().getMetrics(metric);
  42. return metric.widthPixels; // 屏幕宽度(像素)
  43. }
  44. public int getHeight(Activity context) {
  45. context.getWindowManager().getDefaultDisplay().getMetrics(metric);
  46. return metric.heightPixels; // 屏幕高度(像素)
  47. }
  48. public float getDensity(Activity context) {
  49. context.getWindowManager().getDefaultDisplay().getMetrics(metric);
  50. return metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)
  51. }
  52. public int getDensityDpi(Activity context) {
  53. context.getWindowManager().getDefaultDisplay().getMetrics(metric);
  54. return metric.densityDpi; // // 屏幕密度DPI(120 / 160 / 240)
  55. }
  56. // md5加密
  57. public String md5Encode(String inStr) {
  58. MessageDigest md5 = null;
  59. try {
  60. md5 = MessageDigest.getInstance("MD5");
  61. } catch (Exception e) {
  62. System.out.println(e.toString());
  63. e.printStackTrace();
  64. return "";
  65. }
  66. byte[] byteArray = null;
  67. try {
  68. byteArray = inStr.getBytes("UTF-8");
  69. } catch (UnsupportedEncodingException e) {
  70. // TODO Auto-generated catch block
  71. e.printStackTrace();
  72. }
  73. byte[] md5Bytes = md5.digest(byteArray);
  74. StringBuffer hexValue = new StringBuffer();
  75. for (int i = 0; i < md5Bytes.length; i++) {
  76. int val = ((int) md5Bytes[i]) & 0xff;
  77. if (val < 16) {
  78. hexValue.append("0");
  79. }
  80. hexValue.append(Integer.toHexString(val));
  81. }
  82. return hexValue.toString();
  83. }
  84. /**
  85. * @author zhangmengjie
  86. * @return VersionCode
  87. */
  88. public String getVersionCode(Context context) {
  89. PackageManager packageManager = context.getPackageManager();
  90. PackageInfo packageInfo;
  91. String versionCode = "";
  92. try {
  93. packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
  94. versionCode = packageInfo.versionCode + "";
  95. } catch (PackageManager.NameNotFoundException e) {
  96. e.printStackTrace();
  97. }
  98. return versionCode;
  99. }
  100. /**
  101. * @author zhangmengjie
  102. * @return VersionName
  103. *
  104. */
  105. public String getVersionName(Context context) {
  106. PackageManager packageManager = context.getPackageManager();
  107. PackageInfo packageInfo;
  108. String versionName = "";
  109. try {
  110. packageInfo = packageManager.getPackageInfo(context.getPackageName(), 0);
  111. versionName = packageInfo.versionName;
  112. } catch (PackageManager.NameNotFoundException e) {
  113. e.printStackTrace();
  114. }
  115. return versionName;
  116. }
  117. /**
  118. * 获取当前手机系统语言。
  119. *
  120. * @return 返回当前系统语言。例如:当前设置的是“中文-中国”,则返回“zh-CN”
  121. */
  122. public String getSystemLanguage() {
  123. return Locale.getDefault().getLanguage();
  124. }
  125. /**
  126. * 获取当前系统上的语言列表(Locale列表)
  127. *
  128. * @return 语言列表
  129. */
  130. public Locale[] getSystemLanguageList() {
  131. return Locale.getAvailableLocales();
  132. }
  133. /**
  134. * 获取当前手机系统版本号
  135. *
  136. * @return 系统版本号
  137. */
  138. public String getSystemVersion() {
  139. return android.os.Build.VERSION.RELEASE;
  140. }
  141. /**
  142. * 获取手机型号
  143. *
  144. * @return 手机型号
  145. */
  146. public String getSystemModel() {
  147. return android.os.Build.MODEL;
  148. }
  149. /**
  150. * 获取手机厂商
  151. *
  152. * @return 手机厂商
  153. */
  154. public String getDeviceBrand() {
  155. return android.os.Build.BRAND;
  156. }
  157. /**
  158. * 获取手机IMEI(需要“android.permission.READ_PHONE_STATE”权限)
  159. *
  160. * @return 手机IMEI
  161. */
  162. public String getIMEI(Context ctx) {
  163. TelephonyManager tm = (TelephonyManager) ctx.getSystemService(Activity.TELEPHONY_SERVICE);
  164. if (tm != null) {
  165. return tm.getDeviceId();
  166. }
  167. return null;
  168. }
  169. }