![]() |
Neste artigo eu vou mostrar como podemos verificar o status da bateria do celular uma aplicação Xamarin Forms. |
![]() |
O Xamarin Forms não fornece uma funcionalidade para verificar o status atual da bateria do dispositivo. Para contornar essa limitação podemos usar o DependencyService e tomar vantagem das APIs nativas ou usar um plugin de terceiros.
Neste artigo eu vou pelo caminho mais fácil, vou usar o plugin Xam.Plugin.Batery, cuja domentação e código fonte com exemplos, pode ser consultada neste link: https://github.com/jamesmontemagno/BatteryPlugin
O retorno obtido irá indicar o status atual que poderá ser : Charging, Discharging, Full, NotCharging, Unknonw.
Recursos Usados
Criando o projeto Xamarin Forms
Abra o VS 2017 Community update 15.5 e clique em New Project e a seguir escolha Cross Platform -> Cross Platform App (Xamarin.Forms) e informe o nome XF_Bateria.
Ao criar um projeto Xamarin Forms em uma versão anterior à atualização 15.5, você tinha duas opções para compartilhar o código entre as plataformas:
Pois a partir da versão 15.5 do Visual Studio(lançada em dezembro/2017) a opção Portable Class Library (PCL) foi substituida pela .NET Standard:
![]() |
Marque as opções Android e/ou iOS, marque Xamarin Forms e a seguir marque .NET Standard e clique no botão OK.
Pronto nosso projeto já esta criado.
Incluindo o plugin Xam.Plugin.Battery no projeto
Vamos agora incluir o plugin para obter informações do status da bateria.
No menu Tools abra o gerenciador de pacotes do Nuget para a Solution e clique em Browse selecionando o pacote: Xam.Plugin.Battery
Instale o pacote em todos os projetos clicando em Install.
Definindo o código da MainPage.xaml
Abra o arquivo MainPage.xaml e inclua no código abaixo: (Ao lado vemos a figura do Xamarin.Forms Previewer exibindo o código XAML para o Android)
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:XF_Bateria"
x:Class="XF_Bateria.MainPage"
BackgroundColor="AliceBlue">
<StackLayout Margin="10">
<Image Source="bateria.jpg" VerticalOptions="Center" HorizontalOptions="Center"
WidthRequest="250" HeightRequest="250"/>
<Button Text="Verificar Status da Bateria" x:Name="btnBateria" Clicked="btnBateria_Clicked" BackgroundColor="AntiqueWhite"/>
<Label x:Name="lblInfo" VerticalOptions="Center" HorizontalOptions="Center" TextColor="Black" />
<Label x:Name="lblStatus" VerticalOptions="Center" HorizontalOptions="Center" TextColor="Black" />
</StackLayout>
</ContentPage>
|
Neste código temos:
Um controle StackLayout que esta empilhando os controles :
1- 1 view Image que exibe a imagem bateria.jpg que esta na pasta \Resources\drawable no projeto Android;
2- 1 Button onde temos o evento btnBateria_Clicked que iremos tratar no code-behind
5- 2 Labels onde iremos exibiri informações sobre o status da bateria
No arquivo
MainPage.xaml.cs temo o código do evento
Clicked do botão de comando que é visto a seguir:
using Plugin.Battery;
using System;
using Xamarin.Forms;
namespace XF_Bateria
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private void btnBateria_Clicked(object sender, EventArgs e)
{
if (CrossBattery.IsSupported)
{
var falta = CrossBattery.Current.RemainingChargePercent;
lblInfo.Text = $"Percentual : {falta.ToString()}%\n";
var status = CrossBattery.Current.Status;
lblInfo.Text += $"Status :{status.ToString()}\n";
var source = CrossBattery.Current.PowerSource;
lblInfo.Text += $"Media : {source.ToString()}\n\n";
CrossBattery.Current.BatteryChanged -= Current_BatteryChanged;
CrossBattery.Current.BatteryChanged += Current_BatteryChanged;
}
}
private void Current_BatteryChanged(object sender, Plugin.Battery.Abstractions.BatteryChangedEventArgs e)
{
lblStatus.Text = "STATUS ATUAL: " + e.Status.ToString() + "\n";
lblStatus.Text += "Nivel da BATERIA baixo : " + e.IsLow.ToString();
}
}
}
|
Aqui usamos os recursos do plugin para obter informações da bateria.
Executando o projeto
usando o emulador Genymotion para o Android
iremos obter o seguinte resultado:
![]() |
Este exemplo é bem simples e foi feito apenas para mostrar como usar o plugin.
Pegue o código do projeto
compartilhado aqui :
XF_Bateria.zip (sem as referências)
(disse Jesus)
"Não crês tu que eu estou no Pai, e que o Pai está em
mim? As palavras que eu vos digo não as digo de mim
mesmo, mas o Pai, que está em mim, é quem faz as obras."
João 14:9
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Xamarin Android - Apresentando o controle ProgressBar - Macoratti.net
Xamarin Android - Usando o serviço de Alarme - Macoratti.net
Xamarin.Forms - Usando a view ActivityIndicator - Macoratti.net