J.J*_*Kim 68
在AndroidManifest.xml中
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name=".receiver.PlugInControlReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
</intent-filter>
</receiver>
</application>
Run Code Online (Sandbox Code Playgroud)
在代码中
public class PlugInControlReceiver extends BroadcastReceiver {
public void onReceive(Context context , Intent intent) {
String action = intent.getAction();
if(action.equals(Intent.ACTION_POWER_CONNECTED)) {
// Do something when power connected
}
else if(action.equals(Intent.ACTION_POWER_DISCONNECTED)) {
// Do something when power disconnected
}
}
}
Run Code Online (Sandbox Code Playgroud)
设置BroadcastReceiver为ACTION_BATTERY_CHANGED.一个Intent额外的会告诉你的充电状态是什么-看BatteryManager的详细信息.
另一种方法是使用电池管理器。我可用于api> = 21
public class PowerUtil {
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;
}
}
Run Code Online (Sandbox Code Playgroud)
这是轮询信息的另一种方法:
阅读此处的值:例如。
通过安卓外壳:
cat /sys/class/power_supply/usb/online
Run Code Online (Sandbox Code Playgroud)
1=已连接,0=未连接。反映 USB 连接状态。
猫 /sys/class/power_supply/ac/online
1=已连接,0=未连接。反映交流连接状态。
我认为将这两者结合使用可以判断设备是否正在通电。不确定所有设备的位置是否相同。在 Android 7+ 和 5+、三星平板电脑和 RockChip 设备上发现位置相同。
对于我提到的测试过的设备,它有效。文件是 RO、只读的,您只能读取它们来轮询信息。Android API 没有提供我需要使用的版本(5.1.1)所需的详细程度,但它做到了。我使用提供的 android API 创建一个运行这些命令的进程。它不需要根。这是为信息亭应用程序完成的。您还可以仅使用 android API(文件、FileReader 等)运行相同的进程。
这是一个 Android API 示例:
File aFile = new File("/sys/class/power_supply/ac/online");
try {
BufferedReader br = new BufferedReader(new FileReader(aFile));
char aBuff[] = new char[1];
int aCount = br.read(aBuff,0, 1);
Log.d(TAG, "run: Res:"+new String(aBuff));
}catch(Exception e){
Log.d(TAG, "Exception:Error:run: "+e.toString());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29893 次 |
| 最近记录: |