diff --git a/net/download/service/src/main/java/de/danoeh/antennapod/net/download/service/episode/DownloadAnnouncer.java b/net/download/service/src/main/java/de/danoeh/antennapod/net/download/service/episode/DownloadAnnouncer.java new file mode 100644 index 000000000..e06c6d46f --- /dev/null +++ b/net/download/service/src/main/java/de/danoeh/antennapod/net/download/service/episode/DownloadAnnouncer.java @@ -0,0 +1,27 @@ +package de.danoeh.antennapod.net.download.service.episode; + +import android.content.Context; +import android.view.accessibility.AccessibilityEvent; +import android.view.accessibility.AccessibilityManager; +import de.danoeh.antennapod.net.download.service.R; + +public abstract class DownloadAnnouncer { + public static void announceStart(Context context, String episodeTitle) { + announce(context, R.string.download_started_talkback, episodeTitle); + } + + public static void announceCompleted(Context context, String episodeTitle) { + announce(context, R.string.download_completed_talkback, episodeTitle); + } + + private static void announce(Context context, int messageTemplate, String episodeTitle) { + String message = context.getString(messageTemplate, episodeTitle); + AccessibilityManager am = (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE); + if (am != null && am.isEnabled()) { + AccessibilityEvent event = AccessibilityEvent.obtain(); + event.setEventType(AccessibilityEvent.TYPE_ANNOUNCEMENT); + event.getText().add(message); + am.sendAccessibilityEvent(event); + } + } +} diff --git a/net/download/service/src/main/java/de/danoeh/antennapod/net/download/service/episode/EpisodeDownloadWorker.java b/net/download/service/src/main/java/de/danoeh/antennapod/net/download/service/episode/EpisodeDownloadWorker.java index ff548c039..c5620695c 100644 --- a/net/download/service/src/main/java/de/danoeh/antennapod/net/download/service/episode/EpisodeDownloadWorker.java +++ b/net/download/service/src/main/java/de/danoeh/antennapod/net/download/service/episode/EpisodeDownloadWorker.java @@ -167,6 +167,8 @@ public class EpisodeDownloadWorker extends Worker { wifiLock = wifiManager.createWifiLock(TAG); wifiLock.acquire(); } + + DownloadAnnouncer.announceStart(getApplicationContext(), request.getTitle()); try { downloader.call(); } catch (Exception e) { @@ -190,6 +192,7 @@ public class EpisodeDownloadWorker extends Worker { getApplicationContext(), downloader.getResult(), request); handler.run(); DBWriter.addDownloadStatus(handler.getUpdatedStatus()); + DownloadAnnouncer.announceCompleted(getApplicationContext(), request.getTitle()); return Result.success(); } diff --git a/ui/i18n/src/main/res/values/strings.xml b/ui/i18n/src/main/res/values/strings.xml index 44fd4ba6d..5c1f8fe25 100644 --- a/ui/i18n/src/main/res/values/strings.xml +++ b/ui/i18n/src/main/res/values/strings.xml @@ -710,6 +710,8 @@ Next chapter Shuffle suggestions Add preset + Download started for %1$s + Download completed for %1$s Authentication