Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ final class AlarmContract {
static final String EXTRA_REQUEST_CODE = "request_code";
static final String EXTRA_TITLE = "alarm_title";
static final String EXTRA_SCHEDULE_ID = "schedule_id";
static final String EXTRA_SPEECH_TEXT = "speech_text";
/** 响铃要不要震动/出声/弹全屏止铃界面;由 JS 侧按提醒强度换算后传入,缺省一律按 true 处理。 */
static final String EXTRA_VIBRATE = "vibrate";
static final String EXTRA_SOUND = "sound";
Expand Down Expand Up @@ -45,6 +46,7 @@ static final class ExtractedExtras {
final String alarmId;
final String scheduleId;
final String title;
final String speechText;
final int requestCode;
final boolean vibrate;
final boolean sound;
Expand All @@ -54,6 +56,7 @@ private ExtractedExtras(
String alarmId,
String scheduleId,
String title,
String speechText,
int requestCode,
boolean vibrate,
boolean sound,
Expand All @@ -62,6 +65,7 @@ private ExtractedExtras(
this.alarmId = alarmId;
this.scheduleId = scheduleId;
this.title = title;
this.speechText = speechText;
this.requestCode = requestCode;
this.vibrate = vibrate;
this.sound = sound;
Expand All @@ -73,6 +77,7 @@ static ExtractedExtras from(Context context, Intent intent) {
String alarmId = intent == null ? null : intent.getStringExtra(EXTRA_ALARM_ID);
String scheduleId = intent == null ? null : intent.getStringExtra(EXTRA_SCHEDULE_ID);
String title = intent == null ? null : intent.getStringExtra(EXTRA_TITLE);
String speechText = intent == null ? null : intent.getStringExtra(EXTRA_SPEECH_TEXT);
// 缺省按 true:兼容没有带这几个 extra 的旧闹钟/测试 Intent,保留改动前的全响铃行为。
boolean vibrate = intent == null || intent.getBooleanExtra(EXTRA_VIBRATE, true);
boolean sound = intent == null || intent.getBooleanExtra(EXTRA_SOUND, true);
Expand All @@ -86,8 +91,18 @@ static ExtractedExtras from(Context context, Intent intent) {
if (title == null || title.isEmpty()) {
title = "日程提醒";
}
if (speechText == null || speechText.isEmpty()) {
speechText = ReminderSpeechFormatter.format(title, System.currentTimeMillis());
}
Comment thread
gac0812 marked this conversation as resolved.
return new ExtractedExtras(
alarmId, scheduleId, title, requestCode, vibrate, sound, fullScreen
alarmId,
scheduleId,
title,
speechText,
requestCode,
vibrate,
sound,
fullScreen
);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ class AlarmModule(private val reactContext: ReactApplicationContext) :
vibrate: Boolean,
sound: Boolean,
fullScreen: Boolean,
speechText: String?,
promise: Promise,
) {
try {
Expand All @@ -66,6 +67,7 @@ class AlarmModule(private val reactContext: ReactApplicationContext) :
vibrate,
sound,
fullScreen,
speechText ?: "",
)
Log.i(NAME, "scheduled alarmId=$alarmId")
val result: WritableMap = Arguments.createMap()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public void onReceive(Context context, Intent intent) {
String alarmId = intent.getStringExtra(AlarmContract.EXTRA_ALARM_ID);
String scheduleId = intent.getStringExtra(AlarmContract.EXTRA_SCHEDULE_ID);
String title = intent.getStringExtra(AlarmContract.EXTRA_TITLE);
String speechText = intent.getStringExtra(AlarmContract.EXTRA_SPEECH_TEXT);
if (alarmId == null || alarmId.isEmpty()) {
alarmId = "legacy-" + requestCode;
}
Expand All @@ -34,6 +35,7 @@ public void onReceive(Context context, Intent intent) {
.putExtra(AlarmContract.EXTRA_SCHEDULE_ID, scheduleId)
.putExtra(AlarmContract.EXTRA_REQUEST_CODE, requestCode)
.putExtra(AlarmContract.EXTRA_TITLE, title)
.putExtra(AlarmContract.EXTRA_SPEECH_TEXT, speechText)
.putExtra(
AlarmContract.EXTRA_VIBRATE,
intent.getBooleanExtra(AlarmContract.EXTRA_VIBRATE, true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ public static final class AlarmRecord {
public final long triggerAtMillis;
public final int requestCode;
public final String title;
public final String speechText;
public final boolean legacy;
public final boolean vibrate;
public final boolean sound;
Expand All @@ -40,6 +41,7 @@ public static final class AlarmRecord {
long triggerAtMillis,
int requestCode,
String title,
String speechText,
boolean legacy,
boolean vibrate,
boolean sound,
Expand All @@ -50,6 +52,7 @@ public static final class AlarmRecord {
this.triggerAtMillis = triggerAtMillis;
this.requestCode = requestCode;
this.title = title;
this.speechText = speechText == null ? "" : speechText;
this.legacy = legacy;
this.vibrate = vibrate;
this.sound = sound;
Expand All @@ -64,7 +67,8 @@ public static String schedule(
String scheduleId,
boolean vibrate,
boolean sound,
boolean fullScreen
boolean fullScreen,
String speechText
) {
if (triggerAtMillis <= System.currentTimeMillis()) {
throw new IllegalArgumentException("trigger_in_past");
Expand Down Expand Up @@ -92,6 +96,7 @@ public static String schedule(
triggerAtMillis,
nextRequestCode(alarms),
title == null ? "" : title,
speechText == null ? "" : speechText,
false,
vibrate,
sound,
Expand All @@ -105,18 +110,31 @@ public static String schedule(
return alarmId;
}

/** @deprecated 请改用 {@link #schedule(Context, long, String, String, boolean, boolean, boolean)}。 */
/** 保留原 TTS 调度签名;未指定强度通道时沿用历史的全响铃行为。 */
public static String schedule(
Context context,
long triggerAtMillis,
String title,
String scheduleId,
String speechText
) {
return schedule(
context, triggerAtMillis, title, scheduleId, true, true, true, speechText
);
}

/** @deprecated 请改用包含响铃通道和 speechText 的完整签名。 */
@Deprecated
public static String schedule(
Context context, long triggerAtMillis, String title, String scheduleId
) {
return schedule(context, triggerAtMillis, title, scheduleId, true, true, true);
return schedule(context, triggerAtMillis, title, scheduleId, true, true, true, "");
}

/** @deprecated 请改用 {@link #schedule(Context, long, String, String, boolean, boolean, boolean)}。 */
/** @deprecated 请改用包含响铃通道和 speechText 的完整签名。 */
@Deprecated
public static String schedule(Context context, long triggerAtMillis, String title) {
return schedule(context, triggerAtMillis, title, "", true, true, true);
return schedule(context, triggerAtMillis, title, "", true, true, true, "");
}

/**
Expand Down Expand Up @@ -166,6 +184,7 @@ private static void rearm(Context context, AlarmManager alarmManager, AlarmRecor
.putExtra(AlarmContract.EXTRA_ALARM_ID, record.alarmId)
.putExtra(AlarmContract.EXTRA_SCHEDULE_ID, record.scheduleId)
.putExtra(AlarmContract.EXTRA_TITLE, record.title)
.putExtra(AlarmContract.EXTRA_SPEECH_TEXT, record.speechText)
.putExtra(AlarmContract.EXTRA_REQUEST_CODE, record.requestCode)
.putExtra(AlarmContract.EXTRA_VIBRATE, record.vibrate)
.putExtra(AlarmContract.EXTRA_SOUND, record.sound)
Expand Down Expand Up @@ -259,6 +278,7 @@ public static List<AlarmRecord> loadAlarms(Context context) {
triggerAt,
requestCode,
object.optString("title", ""),
object.optString("speech_text", ""),
legacy,
object.optBoolean("vibrate", true),
object.optBoolean("sound", true),
Expand Down Expand Up @@ -353,6 +373,7 @@ private static JSONObject toJson(AlarmRecord alarm) throws JSONException {
object.put("trigger_at", alarm.triggerAtMillis);
object.put("request_code", alarm.requestCode);
object.put("title", alarm.title);
object.put("speech_text", alarm.speechText);
object.put("legacy", alarm.legacy);
object.put("vibrate", alarm.vibrate);
object.put("sound", alarm.sound);
Expand All @@ -371,6 +392,7 @@ private static PendingIntent buildAlarmBroadcastPendingIntent(
.putExtra(AlarmContract.EXTRA_SCHEDULE_ID, record.scheduleId)
.putExtra(AlarmContract.EXTRA_REQUEST_CODE, record.requestCode)
.putExtra(AlarmContract.EXTRA_TITLE, record.title)
.putExtra(AlarmContract.EXTRA_SPEECH_TEXT, record.speechText)
.putExtra(AlarmContract.EXTRA_VIBRATE, record.vibrate)
.putExtra(AlarmContract.EXTRA_SOUND, record.sound)
.putExtra(AlarmContract.EXTRA_FULL_SCREEN, record.fullScreen);
Expand Down
Loading
Loading