android检测,如果晚上

时间:2011-11-23 23:14:32

标签: android

有没有比这更好的方法?

Boolean isNight;
Calendar cal = Calendar.getInstance();
int hour = cal.get(Calendar.HOUR_OF_DAY);
if(hour < 6 || hour > 18){
    isNight = true;
} else {
    isNight = false;
}

它只检查小时是否在晚上7点到早上5点之间。还有其他办法吗?

3 个答案:

答案 0 :(得分:5)

没有太大区别,但你可以做作业:

isNight = hour < 6 || hour > 18;

答案 1 :(得分:2)

如果您使用UiModeManager启用CarMode,则NIGHT模式设置为AUTO。您可以通过声明在运行时查找属性来获取对当前主题的引用。

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);
...

答案 2 :(得分:0)

<强>值 \ 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);
}