Compartilhar via


Xamarin.Essentials:Bateria

A classe Battery permite que você verifique as informações sobre a bateria do dispositivo e monitore as alterações, além de fornecer informações sobre o status de economia de energia do dispositivo, o que indica se o dispositivo está em execução em um modo de baixa energia. Os aplicativos devem evitar o processamento em segundo plano se o status da economia de energia do dispositivo estiver ativado.

Introdução

Para começar a usar essa API, leia o guia de introdução para Xamarin.Essentials garantir que a biblioteca esteja instalada e configurada corretamente em seus projetos.

Para acessar a funcionalidade Battery, a configuração específica da plataforma a seguir é necessária.

A permissão Battery é necessária e deve ser configurada no projeto do Android. Isso pode ser usado das seguintes maneiras:

Abra o arquivo AssemblyInfo.cs na pasta Propriedades e adicione:

[assembly: UsesPermission(Android.Manifest.Permission.BatteryStats)]

OU Atualize o Manifesto do Android:

Abra o arquivo AndroidManifest.xml na pasta Propriedades e adicione o seguinte dentro do nó do manifesto.

<uses-permission android:name="android.permission.BATTERY_STATS" />

Ou clique com o botão direito do mouse no projeto do Android e abra as propriedades do projeto. Em Manifesto do Android, localize a área Permissões necessárias: e marque a permissão Bateria. Isso atualizará automaticamente o arquivo AndroidManifest.xml.

Como usar Battery

Adicione uma referência a Xamarin.Essentials em sua classe:

using Xamarin.Essentials;

Verifique as informações atuais da bateria:

var level = Battery.ChargeLevel; // returns 0.0 to 1.0 or 1.0 when on AC or no battery.

var state = Battery.State;

switch (state)
{
    case BatteryState.Charging:
        // Currently charging
        break;
    case BatteryState.Full:
        // Battery is full
        break;
    case BatteryState.Discharging:
    case BatteryState.NotCharging:
        // Currently discharging battery or not being charged
        break;
    case BatteryState.NotPresent:
        // Battery doesn't exist in device (desktop computer)
        break;
    case BatteryState.Unknown:
        // Unable to detect battery state
        break;
}

var source = Battery.PowerSource;

switch (source)
{
    case BatteryPowerSource.Battery:
        // Being powered by the battery
        break;
    case BatteryPowerSource.AC:
        // Being powered by A/C unit
        break;
    case BatteryPowerSource.Usb:
        // Being powered by USB cable
        break;
    case BatteryPowerSource.Wireless:
        // Powered via wireless charging
        break;
    case BatteryPowerSource.Unknown:
        // Unable to detect power source
        break;
}

Sempre que qualquer uma das propriedades da bateria for alterada, um evento será disparado:

public class BatteryTest
{
    public BatteryTest()
    {
        // Register for battery changes, be sure to unsubscribe when needed
        Battery.BatteryInfoChanged += Battery_BatteryInfoChanged;
    }

    void Battery_BatteryInfoChanged(object sender, BatteryInfoChangedEventArgs   e)
    {
        var level = e.ChargeLevel;
        var state = e.State;
        var source = e.PowerSource;
        Console.WriteLine($"Reading: Level: {level}, State: {state}, Source: {source}");
    }
}

Os dispositivos que funcionam com baterias podem ser colocados em um modo de baixo consumo de energia. Por vezes, os dispositivos passam para este modo automaticamente, por exemplo, quando a bateria fica abaixo dos 20% de 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.

Obtenha o status atual da economia de energia do dispositivo usando a propriedade Battery.EnergySaverStatus estática:

// Get energy saver status
var status = Battery.EnergySaverStatus;

Essa propriedade retorna um membro da enumeração EnergySaverStatus, que é On, Off ou Unknown. Se a propriedade retornar On, o aplicativo deverá evitar o processamento em segundo plano ou outras atividades que possam consumir muita energia.

O aplicativo também deve instalar um manipulador de eventos. A classe Power expõe um evento que é acionado quando o status da economia de energia é alterado:

public class EnergySaverTest
{
    public EnergySaverTest()
    {
        // Subscribe to changes of energy-saver status
        Battery.EnergySaverStatusChanged += OnEnergySaverStatusChanged;
    }

    private void OnEnergySaverStatusChanged(EnergySaverStatusChangedEventArgs e)
    {
        // Process change
        var status = e.EnergySaverStatus;
    }
}

Se o status da economia de energia for alterado para On, o aplicativo deverá interromper a execução do processamento em segundo plano. Se o status mudar para Unknown ou Off, o aplicativo poderá retomar o processamento em segundo plano.

Diferenças entre plataformas

Sem diferenças entre plataformas.

API

Encontre mais vídeos sobre o Xamarin no Channel 9 e no YouTube.