我的应用程序有一个广播接收器来监听更改ACTION_POWER_CONNECTED
,并反过来标记屏幕保持.
我缺少的是应用程序在首次运行时检查充电状态的能力.谁能帮我用代码手动检查充电状态?
我有一个带音频播放的应用程序,但在某些设备(主要是华为,三星,索尼)上,当屏幕熄灭时播放停止.注意:对于Spotify,Play Music等其他应用,播放不会停止
我发现这个答案(对于华为设备)建议要求用户在电池优化设置(电池管理器>受保护的应用程序)中启用"后台运行"权限,但我想避免要求用户启用它.
是否有一些API可以为华为,三星,索尼或其他制造商提供编程方式?
是否可以检测应用程序是否没有此类权限?
编辑:播放在前台服务运行,应用程序持有唤醒锁
编辑2:我已经联系了与此问题相关的华为支持.一旦解决,我将分享更多信息.
如何在Android设备中检测电池充电速度?我可以使用以下代码检测电池状态.但不是充电速度.
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
BatteryChangeReceiver receiver = new BatteryChangeReceiver(subscriber);
registerReceiver(receiver, filter);
public class BatteryChangeReceiver extends BroadcastReceiver {
@Override public void onReceive(Context context, Intent intent) {
// here I get all battery status.
}
}
Run Code Online (Sandbox Code Playgroud)
有一个应用程序(安培)显示充电速度.
我怎样才能做到这一点?
提前致谢.
我有时一直在学习 swift。我制作了一个测试应用程序,可以显示用户手机的电池电量和存储详细信息。现在我正在探索其他可能性。我是否可以显示连接到相应设备的 AirPods 的电池电量?如果有人有任何解决方案或指南,我们将非常感激。
我已经尝试过Android的powerprofile ....我已经尝试过这个代码......但是每次在所有设备上都给我1000个答案...在android中有没有其他方法可以获得电池容量......例如移动设备容量为2000mAh应该还给我2000
public Double getBatteryCapacity() {
Object mPowerProfile_ = null;
double batteryCapacity = 0;
final String POWER_PROFILE_CLASS = "com.android.internal.os.PowerProfile";
try {
mPowerProfile_ = Class.forName(POWER_PROFILE_CLASS)
.getConstructor(Context.class).newInstance(this);
} catch (Exception e) {
// Class not found?
e.printStackTrace();
}
try {
// Invoke PowerProfile method "getAveragePower" with param
// "battery.capacity"
batteryCapacity = (Double) Class.forName(POWER_PROFILE_CLASS)
.getMethod("getAveragePower", java.lang.String.class)
.invoke(mPowerProfile_, "battery.capacity");
} catch (Exception e) {
// Something went wrong
e.printStackTrace();
}
return batteryCapacity;
}
Run Code Online (Sandbox Code Playgroud) 是否可以以小时和分钟计算剩余电池时间?此外,它是否能够计算这个时间取决于我是否使用某个应用程序?是否有可能获得此类信息?如果你能告诉我如何做到这一点的建议,我会非常感激.
我到处寻找这个,我得到的只是通过我已经知道的BatteryManager获取与电池相关的数据。但问题是它总是将电池健康状况返回为“ BATTERY_HEALTH_GOOD ”。为了交叉检查,我检查了 Google Play 上提供的各种电池健康应用程序,对这些应用程序的许多评论清楚地表明,无论电池状况多么糟糕(即使是鼓起的电池),它总是说Health Good。
那么,是否有任何特定的公式可以用来确定电池的确切情况以及我们是否应该通过 android 代码更改它?
另外,BatteryManager.BATTERY_HEALTH_COLD到底是什么意思?
我的应用程序使用 Exoplayer 在后台播放流音频,但如果用户没有在电池优化设置中手动将我们列入白名单,系统就会将其关闭。
还有其他应用程序也在后台成功运行流式音频,没有中断,也没有在电池优化中列入白名单。
这是将用户带到设置应用程序的代码,以及一些有关如何操作的说明。但是每个系统都有自己的禁用电池优化的方式/路径,这使得我们的说明并不总是准确的:
Intent myIntent = new Intent();
myIntent.setAction(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS);
startActivity(myIntent);
Run Code Online (Sandbox Code Playgroud)
有没有办法在不提示用户的情况下将我们列入白名单并在审核过程中被接受?或者还有其他方法可以避免系统关闭我们的流媒体吗?
谢谢!
我从BatteryManager
. 这是什么意思?任何人都可以知道这一点吗?
这是我想要的代码:
int health = batteryIntent.getIntExtra(BatteryManager.EXTRA_HEALTH, 0);
Run Code Online (Sandbox Code Playgroud)
研究领域。
根据文档android 使用以下常量。
enum {
BATTERY_STATUS_UNKNOWN = 1,
BATTERY_STATUS_CHARGING = 2,
BATTERY_STATUS_DISCHARGING = 3,
BATTERY_STATUS_NOT_CHARGING = 4,
BATTERY_STATUS_FULL = 5,
};
enum {
BATTERY_HEALTH_UNKNOWN = 1,
BATTERY_HEALTH_GOOD = 2,
BATTERY_HEALTH_OVERHEAT = 3,
BATTERY_HEALTH_DEAD = 4,
BATTERY_HEALTH_OVER_VOLTAGE = 5,
BATTERY_HEALTH_UNSPECIFIED_FAILURE = 6,
BATTERY_HEALTH_COLD = 7,
};
Run Code Online (Sandbox Code Playgroud)
根据我的研究,我没有看到任何“9”值。这个值并不总是来,很少来,但我无法检测到这种情况。
在Android 10中,一些制造商在电池优化设置中提供了新功能(见图)。当屏幕关闭一段时间后,我的前台服务被操作系统杀死。
我已经使用了带通知的前台服务。当所有设备的屏幕都打开时,此代码可以正常工作。我在 OnePlus 和 realMe 设备中面临这个问题,两者都有 Android 10 操作系统。
我想知道,有什么办法可以解决这个问题吗?有什么方法可以知道我的设备是否有这种设置?
感谢帮助!
我基本上只想添加大约20个,有时是80个临近警报,没有时间到期,半径约为500米.只是想知道这样做是否真的能快速吸收电池?通过减少半径也会有什么不同吗?
现在,我只想在用户访问应用程序时获得某种电池状态指示.例如,如果设备已插入,则设备应该说充电和它的电平.如果设备已拔下,则不应显示任何内容.如果设备未充电且电池电量不足,则应显示电池电量不足指示.
我已经设置了大部分代码,但问题是,例如,如果我运行应用程序并且设备已插入,则屏幕上会显示充电指示.如果我拔下设备,则不再显示充电但如果我重新插入设备,则仍然无法再显示充电.当设备插入或拔出,电池电量不足或电量不足时,应始终显示电池警报.应始终显示信息更改.
所以这是我的广播接收器:
private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, Intent intent) {
//Battery level
int level = intent.getIntExtra("level", 0);
//Plugged in Status
int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
//Battery Status
int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
//If the device is charging or contains a full status, it's charging
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;
//If the device isCharging and plugged in, then show that the battery is charging
TextView batteryTextView = ((TextView) …
Run Code Online (Sandbox Code Playgroud) batterymanager ×12
android ×11
battery ×2
java ×2
airpods ×1
alerts ×1
android-10.0 ×1
batterylevel ×1
exoplayer ×1
huawei ×1
swift ×1
sysfs ×1
usb ×1