我想为可识别工作日和周末的应用程序提供一些样式,但我需要它能够识别区域设置。我知道 Calendar#getFirstDayOfWeek
,但这只返回一周的第一天,而不是工作周的第一天。
例如,对于英语(加拿大)Calendar#getFirstDayOfWeek
返回 Calendar.SUNDAY
,这是我们一周的第一天。我们的工作周从 Calendar.MONDAY
开始,我们的周末是 Calendar.SATURDAY
和 Calendar.SUNDAY
。
在英语(英国)中,Calendar#getFirstDayOfWeek
返回 Calendar.MONDAY
,他们工作周的第一天是星期一。他们的周末是 Calendar.SATURDAY
和 Calendar.SUNDAY
。
对于像希伯来语这样的语言环境,事情变得棘手。他们一周的第一天是 Calendar.SUNDAY
,但他们工作周的第一天不是 Calendar.MONDAY
,而是 Calendar.SUNDAY
。他们的周末是 Calendar.FRIDAY
和 Calendar.SATURDAY
。埃及也是一样。
伊朗只有一个周末,Calendar.FRIDAY
。
Android 中有什么方法可以确定周末?我们有一些涵盖大多数西方案例的逻辑,但它很脆弱,并且一个区域设置感知平台 API 将是理想的,但我不知道一个。
请注意,我并不是要推荐一些“最佳”图书馆或任何类似的东西。我想问的是 Android 平台上是否存在任何此类区域设置数据,如果存在,存在哪些 API 调用来访问此数据。
最佳答案
Awareness API 中有新发布的快照和围栏 API,适用于 time 区域设置感知 API 的用例。
请看Awareness.SnapshotApi.getTimeIntervals它返回一个 TimeIntervalsResult。您可以调用 getTimeIntervals() 方法返回一个对象,该对象包含有关当前语言环境下当前时间(特别是您要求的周末和假期)的属性信息。
例如,以下代码 fragment 会检查在调用快照 API 时设备的区域设置是否是周末。
Awareness.SnapshotApi.getTimeIntervalsmGoogleApiClient)
.setResultCallback(new ResultCallback<TimeIntervalsResult>() {
@Override
public void onResult(@NonNull TimeIntervalsResult result) {
if (!result.getStatus().isSuccess()) {
Log.e(TAG, "Could not get the time intervals");
return;
}
if (result.getTimeIntervals().hasTimeInterval(
TimeFence.TIME_INTERVAL_WEEKEND)) {
// do your custom action, this means it is weekend at the
// device locale at this time
}
}
如果您希望您的应用在下周末或节假日在设备区域得到回调,您可以使用新的 TimeFence Api inTimeInterval() .例如,借用开发者文档中的代码 fragment ,
// Create TimeFence
AwarenessFence weekendHolidayFence = Awareness.or(
TimeFence.inTimeInterval(TimeFence.TIME_INTERVAL_WEEKEND),
TimeFence.inTimeInterval(TimeFence.TIME_INTERVAL_HOLIDAY))
Awareness.FenceApi.updateFences(
mGoogleApiClient,
new FenceUpdateRequest.Builder()
.addFence("fenceKey", weekendHolidayFence, myPendingIntent)
.build())
.setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(@NonNull Status status) {
if (status.isSuccess()) {
Log.i(TAG, "Fence was successfully registered.");
} else {
Log.e(TAG, "Fence could not be registered: " + status);
}
}
});
关于android - Android 是否提供用于确定可识别区域设置的周末的 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32403889/