/// <summary>
 /// Default Constructor
 /// </summary>
 public BatteryImplementation()
 {
   try
   {
     batteryReceiver = new BatteryBroadcastReceiver();
     BatteryBroadcastReceiver.BatteryLevelChanged = OnBatteryChanged;
     Application.Context.RegisterReceiver(batteryReceiver, new IntentFilter(Intent.ActionBatteryChanged));
   }
   catch
   {
     Debug.WriteLine("Unable to register for battery events, ensure you have android.permission.BATTERY_STATS set in AndroidManifest.");
     throw;
   }
 }
 /// <summary>
 /// Default Constructor
 /// </summary>
 public BatteryImplementation()
 {
     try
     {
         batteryReceiver = new BatteryBroadcastReceiver();
         BatteryBroadcastReceiver.BatteryLevelChanged = OnBatteryChanged;
         Application.Context.RegisterReceiver(batteryReceiver, new IntentFilter(Intent.ActionBatteryChanged));
     }
     catch
     {
         Debug.WriteLine("Unable to register for battery events, ensure you have android.permission.BATTERY_STATS set in AndroidManifest.");
         throw;
     }
 }
        /// <summary>
        /// Dispose
        /// </summary>
        /// <param name="disposing"></param>
        public override void Dispose(bool disposing)
        {
            if (!disposed)
            {
                if (disposing)
                {
                    if (batteryReceiver != null)
                    {
                        Application.Context.UnregisterReceiver(batteryReceiver);
                        batteryReceiver = null;
                    }
                }

                disposed = true;
            }

            base.Dispose(disposing);
        }
    /// <summary>
    /// Dispose
    /// </summary>
    /// <param name="disposing"></param>
    public override void Dispose(bool disposing)
    {
      if (!disposed)
      {
        if (disposing)
        {
          if(batteryReceiver != null)
          {
            Application.Context.UnregisterReceiver(batteryReceiver);
            batteryReceiver = null;
          }
        }

        disposed = true;
      }

      base.Dispose(disposing);
    }