Nếu bạn đang sử dụng để cho phép UiModeManager CarMode và chế độ ban đêm được thiết lập để AUTO. Bạn có thể lấy một tham chiếu đến chủ đề hiện tại được sử dụng bằng cách khai báo một thuộc tính để tra cứu tại thời gian chạy.
attrs.xml
<resources>
<!-- Theme name reference -->
<attr name="metaThemeName" format="string"/>
</resources>
giá trị đêm /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);
...
Vâng, bạn có thể sử dụng camera của điện thoại để đánh giá ánh sáng/bóng tối xung quanh, kết hợp với việc đo thời gian để GPS có được vị trí sửa chữa như là một gợi ý cho dù người dùng thực sự ở bên ngoài ... Không, tôi không nghiêm túc :) Một giải pháp đơn giản như hiện tại của bạn (thanh một số sửa lỗi rõ ràng, như sử dụng 'b oolean' và loại bỏ 'if') có nhiều khả năng là tốt nhất bạn có thể nhận được. – Xion
Không có cách nào để phát hiện xem thiết bị hiện có ở chế độ NightMode không? Tôi thấy có một cách để thay đổi chế độ thiết bị nhưng tôi không thấy cách bạn có thể đọc chế độ hiện tại. http://developer.android.com/reference/android/app/UiModeManager.html – OlivierM
Bạn có tìm thấy câu trả lời cho điều này không? Tôi đang cố giải quyết cùng một vấn đề. UiModeManager có vẻ không hữu ích lắm. –