diff --git a/android/src/main/java/com/smartlibrary/android/service/SmartReminderService.java b/android/src/main/java/com/smartlibrary/android/service/SmartReminderService.java index f6ae48e..2eda04b 100644 --- a/android/src/main/java/com/smartlibrary/android/service/SmartReminderService.java +++ b/android/src/main/java/com/smartlibrary/android/service/SmartReminderService.java @@ -272,7 +272,7 @@ public class SmartReminderService { */ private void sendNotification(int notificationId, String channelId, String title, String content, int priority) { NotificationCompat.Builder builder = new NotificationCompat.Builder(context, channelId) - .setSmallIcon(R.drawable.ic_launcher_foreground) + .setSmallIcon(R.drawable.ic_notifications) .setContentTitle(title) .setContentText(content) .setStyle(new NotificationCompat.BigTextStyle().bigText(content)) diff --git a/android/src/main/java/com/smartlibrary/android/ui/ImmersiveReadingActivity.java b/android/src/main/java/com/smartlibrary/android/ui/ImmersiveReadingActivity.java index a1f245c..5c929e2 100644 --- a/android/src/main/java/com/smartlibrary/android/ui/ImmersiveReadingActivity.java +++ b/android/src/main/java/com/smartlibrary/android/ui/ImmersiveReadingActivity.java @@ -65,7 +65,8 @@ public class ImmersiveReadingActivity extends AppCompatActivity { getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); immersiveService = ImmersiveReadingService.getInstance(this); - ttsService = TextToSpeechService.getInstance(this); + ttsService = TextToSpeechService.getInstance(); + ttsService.initialize(this); initViews(); applyCurrentTheme(); @@ -241,9 +242,32 @@ public class ImmersiveReadingActivity extends AppCompatActivity { Toast.makeText(this, "已停止朗读", Toast.LENGTH_SHORT).show(); } else { String content = tvContent.getText().toString(); - ttsService.speak(content); - isSpeaking = true; - btnSpeak.setText("⏹️ 停止"); + ttsService.speak(content, new TextToSpeechService.TTSCallback() { + @Override + public void onStart() { + runOnUiThread(() -> { + isSpeaking = true; + btnSpeak.setText("⏹️ 停止"); + }); + } + + @Override + public void onComplete() { + runOnUiThread(() -> { + isSpeaking = false; + btnSpeak.setText("🔊 朗读"); + }); + } + + @Override + public void onError(String error) { + runOnUiThread(() -> { + isSpeaking = false; + btnSpeak.setText("🔊 朗读"); + Toast.makeText(ImmersiveReadingActivity.this, "朗读失败: " + error, Toast.LENGTH_SHORT).show(); + }); + } + }); Toast.makeText(this, "开始朗读...", Toast.LENGTH_SHORT).show(); } } diff --git a/android/src/main/java/com/smartlibrary/android/ui/TranslationActivity.java b/android/src/main/java/com/smartlibrary/android/ui/TranslationActivity.java index 0c29953..e509857 100644 --- a/android/src/main/java/com/smartlibrary/android/ui/TranslationActivity.java +++ b/android/src/main/java/com/smartlibrary/android/ui/TranslationActivity.java @@ -71,7 +71,8 @@ public class TranslationActivity extends AppCompatActivity { setContentView(R.layout.activity_translation); translationService = TranslationService.getInstance(this); - ttsService = TextToSpeechService.getInstance(this); + ttsService = TextToSpeechService.getInstance(); + ttsService.initialize(this); initViews(); setupLanguageSpinners(); @@ -244,7 +245,25 @@ public class TranslationActivity extends AppCompatActivity { return; } - ttsService.speak(text); + ttsService.speak(text, new TextToSpeechService.TTSCallback() { + @Override + public void onStart() { + runOnUiThread(() -> btnSpeak.setText("🔊 朗读中...")); + } + + @Override + public void onComplete() { + runOnUiThread(() -> btnSpeak.setText("🔊 朗读")); + } + + @Override + public void onError(String error) { + runOnUiThread(() -> { + btnSpeak.setText("🔊 朗读"); + Toast.makeText(TranslationActivity.this, "朗读失败: " + error, Toast.LENGTH_SHORT).show(); + }); + } + }); } @Override