PowerStatus.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using Android.App;
  2. using Android.Content;
  3. using Android.OS;
  4. using BatteryStatus;
  5. namespace BatteryStatus.Android
  6. {
  7. public class PowerStatus : IPowerStatus
  8. {
  9. public string BatteryChargeStatus
  10. {
  11. get
  12. {
  13. var filter = new IntentFilter(Intent.ActionBatteryChanged);
  14. var battery = Application.Context.RegisterReceiver(null, filter);
  15. if (battery != null)
  16. {
  17. int status = battery.GetIntExtra(BatteryManager.ExtraStatus, -1);
  18. switch ((global::Android.OS.BatteryStatus)status)
  19. {
  20. case global::Android.OS.BatteryStatus.Charging:
  21. return "Charging";
  22. case global::Android.OS.BatteryStatus.Full:
  23. return "Full";
  24. case global::Android.OS.BatteryStatus.Discharging:
  25. return "Discharging";
  26. case global::Android.OS.BatteryStatus.NotCharging:
  27. return "Not Charging";
  28. case global::Android.OS.BatteryStatus.Unknown:
  29. default:
  30. return "Unknown";
  31. }
  32. }
  33. return "Unknown";
  34. }
  35. }
  36. public string PowerLineStatus
  37. {
  38. get
  39. {
  40. var filter = new IntentFilter(Intent.ActionBatteryChanged);
  41. var battery = Application.Context.RegisterReceiver(null, filter);
  42. if (battery != null)
  43. {
  44. int plugged = battery.GetIntExtra(global::Android.OS.BatteryManager.ExtraPlugged, -1);
  45. if (plugged == (int)global::Android.OS.BatteryPlugged.Ac)
  46. return "AC";
  47. if (plugged == (int)global::Android.OS.BatteryPlugged.Usb)
  48. return "USB";
  49. if (plugged == (int)global::Android.OS.BatteryPlugged.Wireless)
  50. return "Wireless";
  51. }
  52. return "Unplugged";
  53. }
  54. }
  55. public int BatteryLifePercent
  56. {
  57. get
  58. {
  59. var filter = new IntentFilter(Intent.ActionBatteryChanged);
  60. var battery = Application.Context.RegisterReceiver(null, filter);
  61. if (battery != null)
  62. {
  63. int level = battery.GetIntExtra(global::Android.OS.BatteryManager.ExtraLevel, -1);
  64. int scale = battery.GetIntExtra(global::Android.OS.BatteryManager.ExtraScale, -1);
  65. if (level >= 0 && scale > 0)
  66. return (int)((level / (float)scale) * 100);
  67. }
  68. return -1;
  69. }
  70. }
  71. }
  72. }