コメント
コメントの投稿
※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。
入力されていないコメントには返信しませんのであらかじめご了承くださいませ。
namespace AppName.Models
{
public static class EnumeratedType
{
/// <summary>
/// バッテリー充電状態
/// Android.OS.BatteryStatusと同じ
/// </summary>
public enum BatteryStatus
{
//不明
Unknown = 0,
//充電中
Charging = 1,
//放電中
Discharging = 2,
//放電中
NotCharging = 3,
//充電完了
Full = 4
}
}
}
namespace AppName.Services
{
public interface IDeviceService
{
/// <summary>
/// バッテリーの充電状態を取得する
/// </summary>
EnumeratedType.BatteryStatus BatteryStatus { get; }
}
}
using System;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Views;
using Xamarin.Forms;
using AppName.Droid.Services;
using AppName.Models;
using AppName.Services;
[assembly: Dependency(typeof(DeviceService))]
namespace AppName.Droid.Services
{
public class DeviceService : IDeviceService
{
/// <summary>
/// バッテリーの充電状態を取得する
/// </summary>
public EnumeratedType.BatteryStatus BatteryStatus
{
get
{
//https://developer.android.com/training/monitoring-device-state/battery-monitoring?hl=ja
IntentFilter ifilter = new IntentFilter(Intent.ActionBatteryChanged);
Intent batteryStatus = Android.App.Application.Context.RegisterReceiver(null, ifilter);
return (EnumeratedType.BatteryStatus)(batteryStatus.GetIntExtra(BatteryManager.ExtraStatus, 0) - 1);
}
}
}
}
using System;
using UIKit;
using Xamarin.Forms;
using AppName.iOS.Services;
using AppName.Models;
using AppName.Services;
[assembly: Dependency(typeof(DeviceService))]
namespace AppName.iOS.Services
{
public class DeviceService : IDeviceService
{
/// <summary>
/// バッテリーの充電状態を取得する
/// </summary>
public EnumeratedType.BatteryStatus BatteryStatus
{
get
{
try
{
// バッテリーのモニタリングをenableにする
UIDevice.CurrentDevice.BatteryMonitoringEnabled = true;
var status = UIDevice.CurrentDevice.BatteryState;
switch (status)
{
case UIDeviceBatteryState.Unknown:
return EnumeratedType.BatteryStatus.Unknown;
case UIDeviceBatteryState.Charging:
return EnumeratedType.BatteryStatus.Charging;
case UIDeviceBatteryState.Unplugged:
return EnumeratedType.BatteryStatus.NotCharging;
case UIDeviceBatteryState.Full:
return EnumeratedType.BatteryStatus.Full;
}
}
finally
{
UIDevice.CurrentDevice.BatteryMonitoringEnabled = false;
}
return EnumeratedType.BatteryStatus.Unknown;
}
}
}
}
using AppName.Services;
using Xamarin.Forms;
public class TestPage : ContentPage
{
/// <summary>
/// バッテリー状態を取得する
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
async void btnBatteryStatus_Click(object sender, EventArgs e)
{
int status = DependencyService.Get<IDeviceService>().BatteryStatus;
await DisplayAlert("バッテリー状態", "バッテリーの状態:" + Enum.GetName(typeof(EnumeratedType.BatteryStatus), status), AppResources.OK);
}
}
※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。
入力されていないコメントには返信しませんのであらかじめご了承くださいませ。