Bateria
Este artigo descreve como você pode usar a interface .NET Multi-platform App UI (.NET MAUI) IBattery para verificar as informações de bateria do dispositivo e monitorar se há alterações. Essa interface também fornece informações sobre o status de economia de energia do dispositivo, que indica se o dispositivo está sendo executado em um modo de baixo consumo de energia.
A implementação padrão da interface está disponível por meio da IBattery
Battery.Default propriedade. A interface e Battery
a IBattery
classe estão contidas no Microsoft.Maui.Devices
namespace.
Introdução
Para acessar a funcionalidade Bateria, é necessária a seguinte configuração específica da plataforma.
A permissão BatteryStats
é necessária e deve ser configurada no projeto do Android. Você pode configurar a permissão das seguintes maneiras:
Adicione a permissão baseada em assembly:
Abra o arquivo Platforms/Android/MainApplication.cs e adicione o seguinte atributo assembly após
using
as diretivas:[assembly: UsesPermission(Android.Manifest.Permission.BatteryStats)]
- ou -
Atualize o manifesto do Android:
Abra o arquivo Platforms/Android/AndroidManifest.xml e adicione a seguinte linha no
manifest
nó:<uses-permission android:name="android.permission.BATTERY_STATS" />
- ou -
Atualize o manifesto do Android no editor de manifesto:
No Visual Studio, clique duas vezes no arquivo Platforms/Android/AndroidManifest.xml para abrir o editor de manifesto do Android. Em seguida, em Permissões necessárias, verifique a permissão BATTERY_STATS . Isso atualizará automaticamente o arquivo AndroidManifest.xml.
Verifique o status da bateria
O status da bateria pode ser verificado acessando a propriedade, que é a Battery.Default
implementação padrão da IBattery
interface. Essa interface define várias propriedades para fornecer informações sobre o estado da bateria, como ChargeLevel ler quanta bateria resta. A ChargeLevel
propriedade retorna um valor entre 0,0 e 1,0, indicando o nível de carga da bateria de vazia para cheia, respectivamente.
O BatteryInfoChanged evento também está disponível e é gerado quando o estado da bateria muda. O exemplo a seguir demonstra como usar o evento monitorar o e relatar o BatteryInfoChanged
status da bateria aos Label controles:
private void BatterySwitch_Toggled(object sender, ToggledEventArgs e) =>
WatchBattery();
private bool _isBatteryWatched;
private void WatchBattery()
{
if (!_isBatteryWatched)
{
Battery.Default.BatteryInfoChanged += Battery_BatteryInfoChanged;
}
else
{
Battery.Default.BatteryInfoChanged -= Battery_BatteryInfoChanged;
}
_isBatteryWatched = !_isBatteryWatched;
}
private void Battery_BatteryInfoChanged(object sender, BatteryInfoChangedEventArgs e)
{
BatteryStateLabel.Text = e.State switch
{
BatteryState.Charging => "Battery is currently charging",
BatteryState.Discharging => "Charger is not connected and the battery is discharging",
BatteryState.Full => "Battery is full",
BatteryState.NotCharging => "The battery isn't charging.",
BatteryState.NotPresent => "Battery is not available.",
BatteryState.Unknown => "Battery is unknown",
_ => "Battery is unknown"
};
BatteryLevelLabel.Text = $"Battery is {e.ChargeLevel * 100}% charged.";
}
Modo de economia de energia de baixo consumo de energia
Os dispositivos que funcionam com baterias podem ser colocados em um modo de baixo consumo de energia. Às vezes, os dispositivos são alternados para esse modo automaticamente, como quando a bateria cai abaixo de 20% da capacidade. O sistema operacional responde ao modo de economia de energia reduzindo atividades que tendem a esgotar a bateria. Os aplicativos podem ajudar evitando o processamento em segundo plano ou outras atividades que consomem muita energia quando o modo de economia de energia está ativado.
Importante
Os aplicativos devem evitar o processamento em segundo plano se o status da economia de energia do dispositivo estiver ativado.
O status de economia de energia do dispositivo pode ser lido acessando a EnergySaverStatus propriedade, que é On, Offou Unknown. Se o status for On
, o aplicativo deve evitar o processamento em segundo plano ou outras atividades que possam consumir muita energia.
A bateria aumenta o EnergySaverStatusChanged evento quando a bateria entra ou sai do modo de economia de energia.
Você também pode obter o status atual de economia de energia do dispositivo usando a EnergySaverStatus
propriedade:
O exemplo de código a seguir monitora o status de economia de energia e define uma propriedade de acordo.
private bool _isBatteryLow = false;
private void BatterySaverSwitch_Toggled(object sender, ToggledEventArgs e)
{
// Capture the initial state of the battery
_isBatteryLow = Battery.Default.EnergySaverStatus == EnergySaverStatus.On;
BatterySaverLabel.Text = _isBatteryLow.ToString();
// Watch for any changes to the battery saver mode
Battery.Default.EnergySaverStatusChanged += Battery_EnergySaverStatusChanged;
}
private void Battery_EnergySaverStatusChanged(object sender, EnergySaverStatusChangedEventArgs e)
{
// Update the variable based on the state
_isBatteryLow = Battery.Default.EnergySaverStatus == EnergySaverStatus.On;
BatterySaverLabel.Text = _isBatteryLow.ToString();
}
Fonte de alimentação
A PowerSource propriedade retorna uma BatteryPowerSource enumeração que indica como o dispositivo está sendo carregado, se houver. Se não estiver sendo cobrado, o status é BatteryPowerSource.Battery. Os BatteryPowerSource.ACvalores , BatteryPowerSource.Usbe BatteryPowerSource.Wireless indicam que a bateria está sendo carregada.
O exemplo de código a seguir define o texto de um Label controle com base na fonte de energia.
private void SetChargeModeLabel()
{
BatteryPowerSourceLabel.Text = Battery.Default.PowerSource switch
{
BatteryPowerSource.Wireless => "Wireless charging",
BatteryPowerSource.Usb => "USB cable charging",
BatteryPowerSource.AC => "Device is plugged in to a power source",
BatteryPowerSource.Battery => "Device isn't charging",
_ => "Unknown"
};
}
Diferenças de plataforma
Esta seção descreve as diferenças específicas da plataforma com a bateria.
Sem diferenças entre plataformas.