私のアプリには、への変更をリッスンするブロードキャストレシーバーがACTION_POWER_CONNECTED
あり、画面にフラグを立ててオンのままにします。
私が欠けているのは、アプリが最初に実行されたときに充電状態を確認する機能です。充電ステータスを手動で確認するコードを教えてください。
私のアプリには、への変更をリッスンするブロードキャストレシーバーがACTION_POWER_CONNECTED
あり、画面にフラグを立ててオンのままにします。
私が欠けているのは、アプリが最初に実行されたときに充電状態を確認する機能です。充電ステータスを手動で確認するコードを教えてください。
CommonsWare のおかげで、ここに私が書いたコードがあります。
public class Power {
public static boolean isConnected(Context context) {
Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
return plugged == BatteryManager.BATTERY_PLUGGED_AC || plugged == BatteryManager.BATTERY_PLUGGED_USB || plugged == BatteryManager.BATTERY_PLUGGED_WIRELESS;
}
}
if (Power.isConnected(context)) {
...
}
またはKotlinバージョン
object Power {
fun isConnected(context: Context): Boolean {
val intent = context.registerReceiver(null, IntentFilter(Intent.ACTION_BATTERY_CHANGED))
val plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1)
return plugged == BatteryManager.BATTERY_PLUGGED_AC || plugged == BatteryManager.BATTERY_PLUGGED_USB || plugged == BatteryManager.BATTERY_PLUGGED_WIRELESS
}
}
http://developer.android.com/training/monitoring-device-state/battery-monitoring.html
public static boolean isPlugged(Context context) {
boolean isPlugged= false;
Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
isPlugged = plugged == BatteryManager.BATTERY_PLUGGED_AC || plugged == BatteryManager.BATTERY_PLUGGED_USB;
if (VERSION.SDK_INT > VERSION_CODES.JELLY_BEAN) {
isPlugged = isPlugged || plugged == BatteryManager.BATTERY_PLUGGED_WIRELESS;
}
return isPlugged;
}
ワイヤレス充電をサポートするためのマイナー アップデート。
コールしregisterReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED))
ます。これは、プラグインされているかどうかを知らせるために、Intent
エクストラが定義されているを返します。BatteryManager
これIntent.ACTION_BATTERY_CHANGED
はスティッキー ブロードキャストであるため機能します。
あなたの答えは アンドロイドリファレンスにあります!
コード例は次のとおりです。
// Are we charging / charged?
int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;
// How are we charging?
int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
これを試して:
public class PowerConnectionReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, ifilter);
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;
int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
if (batteryStatus != null) {
int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float batteryPct = level / (float) scale;
}
}//end onReceive
}//end PowerConnectionReceiver
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String action = intent.getAction();
if(action.equalsIgnoreCase(ACTION_POWER_CONNECTED))
{
if(chargerConnected != null )
{
chargerConnected.setText("Cable Connected");
}
if(chargerImage != null )
{
chargerImage.setImageDrawable(getResources().getDrawable(R.drawable.usb));
}
}else if(action.equalsIgnoreCase(ACTION_POWER_DISCONNECTED))
{
if(chargerConnected != null )
{
chargerConnected.setText("NOT CHARGE");
}
if(chargerImage != null )
{
chargerImage.setImageDrawable(getResources().getDrawable(R.drawable.battery_icon));
}
try {
Toast.makeText(context, "Power Cable Disconnected", Toast.LENGTH_SHORT).show();
}catch (Exception e){e.printStackTrace();}
}
}
};