Android4.4添加 private void updateShowSeconds() { if (mShowSeconds) { // Wait until we have a display to start trying to show seconds. if (mSecondsHandler == null && getDisplay() != null) { mSecondsHandler = new Handler(); if (getDisplay().getState() == Display.STATE_ON) { mSecondsHandler.postAtTime(mSecondTick, SystemClock.uptimeMillis() / 1000 * 1000 + 1000); } IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF); filter.addAction(Intent.ACTION_SCREEN_ON); mContext.registerReceiver(mScreenReceiver, filter); } } else { if (mSecondsHandler != null) { mContext.unregisterReceiver(mScreenReceiver); mSecondsHandler.removeCallbacks(mSecondTick); mSecondsHandler = null; updateClock(); } } }和 private final BroadcastReceiver mScreenReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (Intent.ACTION_SCREEN_OFF.equals(action)) { if (mSecondsHandler != null) { mSecondsHandler.removeCallbacks(mSecondTick); } } else if (Intent.ACTION_SCREEN_ON.equals(action)) { if (mSecondsHandler != null) { mSecondsHandler.postAtTime(mSecondTick, SystemClock.uptimeMillis() / 1000 * 1000 + 1000); } } } }; private final Runnable mSecondTick = new Runnable() { @Override public void run() { if (mCalendar != null) { updateClock(); } mSecondsHandler.postAtTime(this, SystemClock.uptimeMillis() / 1000 * 1000 + 1000); } };状态栏依旧无法实时更新秒
时间: 2024-04-06 21:34:53 浏览: 20
这段代码主要是在更新状态栏时,控制是否显示秒数。如果你想让状态栏实时更新秒数,可以尝试以下几个方法:
1. 检查你的更新秒数的代码是否正确,可以尝试使用 Log 打印输出来检查代码是否执行到了正确的位置。
2. 检查你的设备是否支持实时更新状态栏秒数,有些设备可能会限制状态栏的更新频率。
3. 尝试使用系统的 Clock app 或者其他第三方 app 来更新状态栏,看看是否能够实时更新秒数,如果可以说明可能是你的代码有问题。
希望以上方法能够帮到你。
相关问题
private void updateShowSeconds() { if (mShowSeconds) { // Wait until we have a display to start trying to show seconds. if (mSecondsHandler == null && getDisplay() != null) { mSecondsHandler = new Handler(); if (getDisplay().getState() == Display.STATE_ON) { mSecondsHandler.postAtTime(mSecondTick, SystemClock.uptimeMillis() / 1000 * 1000 + 1000); } IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF); filter.addAction(Intent.ACTION_SCREEN_ON); mContext.registerReceiver(mScreenReceiver, filter); } } else { if (mSecondsHandler != null) { mContext.unregisterReceiver(mScreenReceiver); mSecondsHandler.removeCallbacks(mSecondTick); mSecondsHandler = null; updateClock(); } } } Android4.4 编译display.getState()报错,getDisplay().getState(,使用getSystemService(Context.WINDOW_SERVICE).getDefaultDisplay().getState()也不行
在Android 4.4中,`getState()`方法是在`Display`类中被添加的,因此该方法仅适用于API级别21及更高版本的Android。如果您在Android 4.4中使用`getState()`方法,编译器会报错。
使用`getSystemService(Context.WINDOW_SERVICE).getDefaultDisplay()`获取`Display`对象,然后调用`getState()`方法也不起作用,因为在Android 4.4中,`getState()`方法仍然是在`Display`类中被添加的。
如果您需要在Android 4.4中使用此功能,您可以考虑使用其他方法替代,例如检查屏幕是否亮着。您可以使用以下代码来检查屏幕状态:
```
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
boolean isScreenOn = powerManager.isScreenOn();
```
请注意,此方法仅检查屏幕是否亮着,并不提供更详细的屏幕状态信息。如果您需要更详细的信息,请考虑升级到更高版本的Android。
private void updateShowSeconds() { if (mShowSeconds) { WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); int state = display.getState(); // Wait until we have a display to start trying to show seconds. if (mSecondsHandler == null && display != null) { mSecondsHandler = new Handler(); if (state == Display.STATE_ON) { mSecondsHandler.postAtTime(mSecondTick, SystemClock.uptimeMillis() / 1000 * 1000 + 1000); } IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF); filter.addAction(Intent.ACTION_SCREEN_ON); mContext.registerReceiver(mScreenReceiver, filter); } } else { if (mSecondsHandler != null) { mContext.unregisterReceiver(mScreenReceiver); mSecondsHandler.removeCallbacks(mSecondTick); mSecondsHandler = null; updateClock(); } } }Android4.4 编译display.getState()报错
在Android 4.4中,`getState()`方法是在`Display`类中被添加的,因此该方法仅适用于API级别21及更高版本的Android。如果您在Android 4.4中使用`getState()`方法,编译器会报错。
如果您需要在Android 4.4中使用此功能,您可以考虑使用其他方法替代,例如检查屏幕是否亮着。您可以使用以下代码来检查屏幕状态:
```
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
boolean isScreenOn = powerManager.isScreenOn();
```
请注意,此方法仅检查屏幕是否亮着,并不提供更详细的屏幕状态信息。如果您需要更详细的信息,请考虑升级到更高版本的Android。
阅读全文