有沒有比這更好的方法?安卓系統檢測是否有夜晚
Boolean isNight;
Calendar cal = Calendar.getInstance();
int hour = cal.get(Calendar.HOUR_OF_DAY);
if(hour < 6 || hour > 18){
isNight = true;
} else {
isNight = false;
}
它只是檢查小時是否在7pm到5am之間。有沒有其他方法可以做到這一點?
有沒有比這更好的方法?安卓系統檢測是否有夜晚
Boolean isNight;
Calendar cal = Calendar.getInstance();
int hour = cal.get(Calendar.HOUR_OF_DAY);
if(hour < 6 || hour > 18){
isNight = true;
} else {
isNight = false;
}
它只是檢查小時是否在7pm到5am之間。有沒有其他方法可以做到這一點?
的差別不是很大,但可以進行分配:如果您使用UiModeManager使CarMode模式和夜間模式設置爲AUTO
isNight = hour < 6 || hour > 18;
我目前正在這樣做,但我認爲這太不準確了,特別是當你接近極點時。理想情況下,您需要查看小時,緯度和月份(可能還有某些特定國家/地區的特殊規則)。 編輯:或者有夏季和冬季的默認設置,並讓用戶調整它們。 –
。您可以通過聲明屬性在運行時查找來獲取當前主題的引用。
attrs.xml
<resources>
<!-- Theme name reference -->
<attr name="metaThemeName" format="string"/>
</resources>
值晚 /themes.xml
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Application theme. -->
<style name="AppTheme" parent="Theme.AppCompat">
<item name="metaThemeName">night</item>
</style>
</resources>
的java.class
...
TypedValue outValue = new TypedValue();
getTheme().resolveAttribute(R.attr.metaThemeName, outValue, true);
boolean isNight="night".equals(outValue.string);
...
值 \ values.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="isNightMode">false</bool>
</resources>
值晚 \ values.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="isNightMode">true</bool>
</resources>
而現在,檢查一下你對自己class.java
public boolean isNightMode(){
return getResources().getBoolean(R.bool.isNightMode);
}
嗯,你可以使用該設備的攝像頭,以評估周圍的亮度/黑暗度,並結合測量GPS獲取位置定位所需的時間作爲提示用戶是否真的在戶外......不,我不是認真的:)一個簡單的解決方案,就像你當前的一個(禁止一些明顯的修復,比如使用'b oolean'和擺脫'如果')最有可能是最好的,你可以得到。 – Xion
沒有辦法檢測設備當前是否處於NightMode模式? 我看到有一種方法來改變設備模式,但我不知道如何讀取當前模式。 http://developer.android.com/reference/android/app/UiModeManager.html – OlivierM
你找到了這個答案嗎?我正試圖解決同樣的問題。 UiModeManager似乎不是很有幫助。 –