MobileInfo.cs 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. using Android.App;
  2. using Android.OS;
  3. using System;
  4. using System.Security.Cryptography;
  5. using System.Text;
  6. using Vinno.vCloud.FIS.CrossPlatform.Common;
  7. namespace Vinno.vCloud.FIS.CrossPlatform.Android.Hardware
  8. {
  9. public class MobileInfo
  10. {
  11. public static string Board { get; private set; }
  12. public static string Brand { get; private set; }
  13. public static string CpuAbi { get; private set; }
  14. public static string Device { get; private set; }
  15. public static string Display { get; private set; }
  16. public static string Hardware { get; private set; }
  17. public static string Host { get; private set; }
  18. public static string Id { get; private set; }
  19. public static string Manufacturer { get; private set; }
  20. public static string Model { get; private set; }
  21. public static string Product { get; private set; }
  22. public static string Tags { get; private set; }
  23. public static string MobileType { get; private set; }
  24. public static string User { get; private set; }
  25. public static string AndroidId { get; private set; }
  26. public static string MachineId { get; private set; }
  27. public static void Initialize()
  28. {
  29. GetBoard();
  30. GetBrand();
  31. GetCpuAbi();
  32. GetDevice();
  33. GetDisplay();
  34. GetHardware();
  35. GetHost();
  36. GetId();
  37. GetManufacturer();
  38. GetModel();
  39. GetProduct();
  40. GetTags();
  41. GetMobileType();
  42. GetUser();
  43. GetAndroidId();
  44. GetMachineId();
  45. }
  46. private static void GetBoard()
  47. {
  48. try
  49. {
  50. Board = Build.Board.ToString();
  51. }
  52. catch (Exception ex)
  53. {
  54. CrossPlatformHelper.Instance.LogWriter?.WriteLineError($"MobileInfo GetBoard Error:{ex}");
  55. Board = "Unknown";
  56. }
  57. }
  58. private static void GetBrand()
  59. {
  60. try
  61. {
  62. Brand = Build.Brand.ToString();
  63. }
  64. catch (Exception ex)
  65. {
  66. CrossPlatformHelper.Instance.LogWriter?.WriteLineError($"MobileInfo GetBrand Error:{ex}");
  67. Brand = "Unknown";
  68. }
  69. }
  70. private static void GetCpuAbi()
  71. {
  72. try
  73. {
  74. CpuAbi = Build.CpuAbi.ToString();
  75. }
  76. catch (Exception ex)
  77. {
  78. CrossPlatformHelper.Instance.LogWriter?.WriteLineError($"MobileInfo GetCpuAbi Error:{ex}");
  79. CpuAbi = "Unknown";
  80. }
  81. }
  82. private static void GetDevice()
  83. {
  84. try
  85. {
  86. Device = Build.Device.ToString();
  87. }
  88. catch (Exception ex)
  89. {
  90. CrossPlatformHelper.Instance.LogWriter?.WriteLineError($"MobileInfo GetDevice Error:{ex}");
  91. Device = "Unknown";
  92. }
  93. }
  94. private static void GetDisplay()
  95. {
  96. try
  97. {
  98. Display = Build.Display.ToString();
  99. CrossPlatformHelper.Instance.LogWriter?.WriteLineInfo($"MobileInfo GetDisplay:{Display}");
  100. }
  101. catch (Exception ex)
  102. {
  103. CrossPlatformHelper.Instance.LogWriter?.WriteLineError($"MobileInfo GetDisplay Error:{ex}");
  104. Display = "Unknown";
  105. }
  106. }
  107. private static void GetHardware()
  108. {
  109. try
  110. {
  111. Hardware = Build.Hardware.ToString();
  112. }
  113. catch (Exception ex)
  114. {
  115. CrossPlatformHelper.Instance.LogWriter?.WriteLineError($"MobileInfo GetHardware Error:{ex}");
  116. Hardware = "Unknown";
  117. }
  118. }
  119. private static void GetHost()
  120. {
  121. try
  122. {
  123. Host = Build.Host.ToString();
  124. CrossPlatformHelper.Instance.LogWriter?.WriteLineInfo($"MobileInfo GetHost:{Host}");
  125. }
  126. catch (Exception ex)
  127. {
  128. CrossPlatformHelper.Instance.LogWriter?.WriteLineError($"MobileInfo GetHost Error:{ex}");
  129. Host = "Unknown";
  130. }
  131. }
  132. private static void GetId()
  133. {
  134. try
  135. {
  136. Id = Build.Id.ToString();
  137. CrossPlatformHelper.Instance.LogWriter?.WriteLineInfo($"MobileInfo GetId:{Id}");
  138. }
  139. catch (Exception ex)
  140. {
  141. CrossPlatformHelper.Instance.LogWriter?.WriteLineError($"MobileInfo GetId Error:{ex}");
  142. Id = "Unknown";
  143. }
  144. }
  145. private static void GetManufacturer()
  146. {
  147. try
  148. {
  149. Manufacturer = Build.Manufacturer.ToString();
  150. }
  151. catch (Exception ex)
  152. {
  153. CrossPlatformHelper.Instance.LogWriter?.WriteLineError($"MobileInfo GetManufacturer Error:{ex}");
  154. Manufacturer = "Unknown";
  155. }
  156. }
  157. private static void GetModel()
  158. {
  159. try
  160. {
  161. Model = Build.Model.ToString();
  162. }
  163. catch (Exception ex)
  164. {
  165. CrossPlatformHelper.Instance.LogWriter?.WriteLineError($"MobileInfo GetModel Error:{ex}");
  166. Model = "Unknown";
  167. }
  168. }
  169. private static void GetProduct()
  170. {
  171. try
  172. {
  173. Product = Build.Product.ToString();
  174. }
  175. catch (Exception ex)
  176. {
  177. CrossPlatformHelper.Instance.LogWriter?.WriteLineError($"MobileInfo GetProduct Error:{ex}");
  178. Product = "Unknown";
  179. }
  180. }
  181. private static void GetTags()
  182. {
  183. try
  184. {
  185. Tags = Build.Tags.ToString();
  186. }
  187. catch (Exception ex)
  188. {
  189. CrossPlatformHelper.Instance.LogWriter?.WriteLineError($"MobileInfo GetTags Error:{ex}");
  190. Tags = "Unknown";
  191. }
  192. }
  193. private static void GetMobileType()
  194. {
  195. try
  196. {
  197. MobileType = Build.Type.ToString();
  198. }
  199. catch (Exception ex)
  200. {
  201. CrossPlatformHelper.Instance.LogWriter?.WriteLineError($"MobileInfo GetMobileType Error:{ex}");
  202. MobileType = "Unknown";
  203. }
  204. }
  205. private static void GetUser()
  206. {
  207. try
  208. {
  209. User = Build.User.ToString();
  210. }
  211. catch (Exception ex)
  212. {
  213. CrossPlatformHelper.Instance.LogWriter?.WriteLineError($"MobileInfo GetUser Error:{ex}");
  214. User = "Unknown";
  215. }
  216. }
  217. private static void GetAndroidId()
  218. {
  219. try
  220. {
  221. AndroidId = global::Android.Provider.Settings.Secure.GetString(Application.Context.ContentResolver, global::Android.Provider.Settings.Secure.AndroidId);
  222. CrossPlatformHelper.Instance.LogWriter?.WriteLineInfo($"MobileInfo AndroidId :{AndroidId}");
  223. }
  224. catch (Exception ex)
  225. {
  226. CrossPlatformHelper.Instance.LogWriter?.WriteLineError($"MobileInfo GetAndroidId Error:{ex}");
  227. AndroidId = "Unknown";
  228. }
  229. }
  230. private static void GetMachineId()
  231. {
  232. try
  233. {
  234. var hardwareString = $"{Board}_{Brand}_{CpuAbi}_{Device}_{Hardware}_{Manufacturer}_{Model}_{Product}_{Tags}_{MobileType}_{User}";
  235. CrossPlatformHelper.Instance.LogWriter?.WriteLineInfo($"MobileInfo HardwareInfo :{hardwareString}");
  236. MachineId = $"{GetMd5Hash(hardwareString)}_{AndroidId.ToUpper()}_A";
  237. CrossPlatformHelper.Instance.LogWriter?.WriteLineInfo($"MobileInfo MachineId :{MachineId}");
  238. }
  239. catch (Exception ex)
  240. {
  241. CrossPlatformHelper.Instance.LogWriter?.WriteLineError($"MobileInfo MachineId Error:{ex}");
  242. MachineId = "Unknown_Android_Machine_Id";
  243. }
  244. }
  245. private static string GetMd5Hash(string input)
  246. {
  247. using (MD5 md5Hash = MD5.Create())
  248. {
  249. byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
  250. StringBuilder builder = new StringBuilder();
  251. for (int i = 0; i < data.Length; i++)
  252. {
  253. builder.Append(data[i].ToString("x2"));
  254. }
  255. return builder.ToString().ToUpper();
  256. }
  257. }
  258. }
  259. }