From 65b679e8eba93ea04df9e38cc86c592bfa5172b6 Mon Sep 17 00:00:00 2001
From: harambasicluka <64483219+harambasicluka@users.noreply.github.com>
Date: Thu, 11 Jun 2020 23:05:48 +0200
Subject: [PATCH] Fix: a18y (#399)

* a18y

* add headings, fix silent pages, fix big chunks

* a18y

* undo changes

* onboarding

* changed accessibility event

* string update

* more stuff is focusable

* switches bug fix

* more stuff is focusable

* fix risk levels

* fixed switch bug

* ktlint format

* removed left over onStarts

* removed testing value from updateChecker

* renaming

* focus

* header guideline right

* fixed wrong constraint

* translate url

* le

Co-authored-by: Queenhymon <quynh.nguyen@sap.com>
---
 .../TestRiskLevelCalculation.kt               |  2 --
 .../ui/main/MainFragment.kt                   | 14 ++--------
 .../res/layout/fragment_test_for_a_p_i.xml    |  6 ++++
 .../fragment_test_risk_level_calculation.xml  |  7 +++++
 .../information/InformationAboutFragment.kt   |  7 +----
 .../information/InformationContactFragment.kt |  7 +----
 .../ui/information/InformationFragment.kt     |  7 +----
 .../information/InformationLegalFragment.kt   |  7 +----
 .../information/InformationPrivacyFragment.kt |  7 +----
 .../InformationTechnicalFragment.kt           |  7 +----
 .../information/InformationTermsFragment.kt   |  7 +----
 .../ui/main/MainOverviewFragment.kt           |  7 +----
 .../ui/main/MainShareFragment.kt              |  6 ++++
 .../ui/onboarding/OnboardingFragment.kt       |  7 +----
 .../OnboardingNotificationsFragment.kt        |  7 +----
 .../onboarding/OnboardingPrivacyFragment.kt   |  7 +----
 .../ui/onboarding/OnboardingTestFragment.kt   |  7 +----
 .../onboarding/OnboardingTracingFragment.kt   |  7 +----
 .../ui/riskdetails/RiskDetailsFragment.kt     |  7 +----
 .../ui/settings/SettingsFragment.kt           |  3 ++
 .../settings/SettingsNotificationFragment.kt  | 16 ++++-------
 .../ui/settings/SettingsResetFragment.kt      |  6 ++++
 .../ui/settings/SettingsTracingFragment.kt    | 21 +++++++-------
 .../submission/SubmissionContactFragment.kt   |  7 +----
 .../SubmissionDispatcherFragment.kt           |  7 +----
 .../ui/submission/SubmissionDoneFragment.kt   |  6 ++++
 .../ui/submission/SubmissionIntroFragment.kt  |  7 +----
 .../SubmissionQRCodeScanFragment.kt           |  2 ++
 ...ssionResultPositiveOtherWarningFragment.kt |  2 ++
 .../ui/submission/SubmissionTanFragment.kt    |  7 +----
 .../SubmissionTestResultFragment.kt           |  2 ++
 .../util/formatter/FormatterSettingsHelper.kt |  9 ++++++
 .../formatter/FromatterAccessibilityHelper.kt | 17 +++++++++++
 .../main/res/layout/fragment_information.xml  |  1 +
 .../res/layout/fragment_information_about.xml | 10 ++++---
 .../layout/fragment_information_contact.xml   |  7 +++--
 .../res/layout/fragment_information_legal.xml |  9 ++++++
 .../layout/fragment_information_privacy.xml   |  1 +
 .../layout/fragment_information_technical.xml |  2 +-
 .../res/layout/fragment_information_terms.xml |  1 +
 .../src/main/res/layout/fragment_main.xml     | 11 ++++++--
 .../res/layout/fragment_main_overview.xml     | 28 +++++++++++++++----
 .../main/res/layout/fragment_main_share.xml   |  4 ++-
 .../fragment_onboarding_notifications.xml     |  1 +
 .../layout/fragment_onboarding_privacy.xml    |  1 +
 .../res/layout/fragment_onboarding_test.xml   |  1 +
 .../layout/fragment_onboarding_tracing.xml    |  1 +
 .../main/res/layout/fragment_risk_details.xml | 23 +++++++--------
 .../src/main/res/layout/fragment_settings.xml |  3 ++
 .../fragment_settings_notifications.xml       |  3 ++
 .../res/layout/fragment_settings_reset.xml    |  3 ++
 .../res/layout/fragment_settings_tracing.xml  |  6 ++++
 .../res/layout/fragment_submission_done.xml   |  2 ++
 .../res/layout/fragment_submission_intro.xml  |  1 +
 ...ment_submission_positive_other_warning.xml |  8 ++++--
 .../fragment_submission_qr_code_scan.xml      |  2 ++
 .../fragment_submission_test_result.xml       |  2 ++
 .../main/res/layout/include_button_icon.xml   |  4 ++-
 .../res/layout/include_dispatcher_card.xml    |  1 +
 .../src/main/res/layout/include_header.xml    | 10 ++++++-
 .../layout/include_information_details.xml    |  8 +++++-
 .../main/res/layout/include_main_faq_card.xml |  2 ++
 .../layout/include_main_overview_glossary.xml |  1 +
 .../layout/include_main_overview_segment.xml  |  1 +
 .../res/layout/include_navigation_row.xml     |  3 +-
 .../main/res/layout/include_onboarding.xml    | 18 +++++++-----
 .../main/res/layout/include_privacy_card.xml  |  3 ++
 .../res/layout/include_risk_card_header.xml   |  1 +
 .../include_risk_details_behavior_row.xml     |  1 -
 .../layout/include_settings_switch_row.xml    |  3 ++
 .../layout/include_step_entry_simple_body.xml |  1 +
 .../res/layout/include_submission_contact.xml | 13 ++++++---
 .../layout/include_submission_dispatcher.xml  |  5 ++++
 .../res/layout/include_submission_done.xml    |  4 ++-
 .../include_submission_done_content.xml       |  3 ++
 .../include_submission_done_further_info.xml  |  3 ++
 .../res/layout/include_submission_intro.xml   | 14 +++++-----
 ...lude_submission_positive_other_warning.xml |  3 ++
 ...include_submission_status_card_content.xml |  1 +
 .../include_submission_status_card_done.xml   |  1 +
 ...nclude_submission_status_card_fetching.xml |  1 +
 ...nclude_submission_status_card_positive.xml |  2 ++
 ...de_submission_status_card_unregistered.xml |  1 +
 .../layout/include_submission_test_result.xml |  1 +
 ...sion_test_result_negative_further_info.xml |  1 +
 .../res/layout/include_test_result_card.xml   |  2 ++
 .../include_test_result_card_positive.xml     |  4 ++-
 .../layout/include_tracing_status_card.xml    |  8 +++++-
 .../src/main/res/values-de/strings.xml        |  2 +-
 .../src/main/res/values/strings.xml           | 13 +++++++--
 90 files changed, 311 insertions(+), 204 deletions(-)
 create mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FromatterAccessibilityHelper.kt

diff --git a/Corona-Warn-App/src/deviceForTesters/java/de.rki.coronawarnapp/TestRiskLevelCalculation.kt b/Corona-Warn-App/src/deviceForTesters/java/de.rki.coronawarnapp/TestRiskLevelCalculation.kt
index 83b7d857d..76e9833d4 100644
--- a/Corona-Warn-App/src/deviceForTesters/java/de.rki.coronawarnapp/TestRiskLevelCalculation.kt
+++ b/Corona-Warn-App/src/deviceForTesters/java/de.rki.coronawarnapp/TestRiskLevelCalculation.kt
@@ -130,9 +130,7 @@ class TestRiskLevelCalculation : Fragment() {
             }
         }
 
-
         startObserving()
-
     }
 
     override fun onResume() {
diff --git a/Corona-Warn-App/src/deviceForTesters/java/de.rki.coronawarnapp/ui/main/MainFragment.kt b/Corona-Warn-App/src/deviceForTesters/java/de.rki.coronawarnapp/ui/main/MainFragment.kt
index 502ba7fe7..4c4dfe9d4 100644
--- a/Corona-Warn-App/src/deviceForTesters/java/de.rki.coronawarnapp/ui/main/MainFragment.kt
+++ b/Corona-Warn-App/src/deviceForTesters/java/de.rki.coronawarnapp/ui/main/MainFragment.kt
@@ -61,7 +61,6 @@ class MainFragment : Fragment() {
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
         setButtonOnClickListener()
-        setContentDescription()
     }
 
     override fun onResume() {
@@ -75,21 +74,12 @@ class MainFragment : Fragment() {
         TimerHelper.checkManualKeyRetrievalTimer()
         submissionViewModel.refreshDeviceUIState()
         tracingViewModel.refreshLastSuccessfullyCalculatedScore()
-        binding.mainScrollview.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
+        binding.mainScrollview.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 
     override fun onStart() {
         super.onStart()
-        binding.mainScrollview.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
-    }
-
-    private fun setContentDescription() {
-        val shareButtonString: String = getString(R.string.button_share)
-        val menuButtonString: String = getString(R.string.button_menu)
-        val mainCardString: String = getString(R.string.hint_external_webpage)
-        binding.mainHeaderShare.buttonIcon.contentDescription = shareButtonString
-        binding.mainHeaderOptionsMenu.buttonIcon.contentDescription = menuButtonString
-        binding.mainAbout.mainCard.contentDescription = mainCardString
+        binding.mainScrollview.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 
     private fun setButtonOnClickListener() {
diff --git a/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_for_a_p_i.xml b/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_for_a_p_i.xml
index c0b516a9f..ba559e601 100644
--- a/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_for_a_p_i.xml
+++ b/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_for_a_p_i.xml
@@ -36,6 +36,7 @@
             <TextView
                 android:id="@+id/label_exposure_summary"
                 style="@style/headline6"
+                android:accessibilityHeading="true"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="@string/test_api_exposure_summary_headline" />
@@ -97,6 +98,7 @@
             <TextView
                 android:id="@+id/label_my_keys"
                 style="@style/headline6"
+                android:accessibilityHeading="true"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_normal"
@@ -118,6 +120,7 @@
             <TextView
                 android:id="@+id/label_other_keys"
                 style="@style/headline6"
+                android:accessibilityHeading="true"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="@string/test_api_body_other_keys" />
@@ -209,18 +212,21 @@
 
             <TextView
                 style="@style/headline4"
+                android:accessibilityHeading="true"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="headline4" />
 
             <TextView
                 style="@style/headline5"
+                android:accessibilityHeading="true"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="headline5" />
 
             <TextView
                 style="@style/headline6"
+                android:accessibilityHeading="true"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="headline6" />
diff --git a/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_risk_level_calculation.xml b/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_risk_level_calculation.xml
index 60c2ee018..a2fe37033 100644
--- a/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_risk_level_calculation.xml
+++ b/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_risk_level_calculation.xml
@@ -35,6 +35,7 @@
 
             <TextView
                 style="@style/headline6"
+                android:accessibilityHeading="true"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="Preview (no interaction possible)" />
@@ -105,6 +106,7 @@
             <TextView
                 android:id="@+id/label_exposure_summary_title"
                 style="@style/headline6"
+                android:accessibilityHeading="true"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_normal"
@@ -119,6 +121,7 @@
             <TextView
                 android:id="@+id/label_risk_score_title"
                 style="@style/headline6"
+                android:accessibilityHeading="true"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="Risk Score" />
@@ -132,6 +135,7 @@
             <TextView
                 android:id="@+id/label_backend_parameters_title"
                 style="@style/headline6"
+                android:accessibilityHeading="true"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="Backend Parameters" />
@@ -145,6 +149,7 @@
             <TextView
                 android:id="@+id/label_formula_title"
                 style="@style/headline6"
+                android:accessibilityHeading="true"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="Used Formula" />
@@ -158,6 +163,7 @@
             <TextView
                 android:id="@+id/label_exposure_info_title"
                 style="@style/headline6"
+                android:accessibilityHeading="true"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="Exposure Information" />
@@ -171,6 +177,7 @@
             <TextView
                 android:id="@+id/label_full_config_title"
                 style="@style/headline6"
+                android:accessibilityHeading="true"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:text="Full Backend Configuration" />
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationAboutFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationAboutFragment.kt
index d88206e60..6df694a89 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationAboutFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationAboutFragment.kt
@@ -39,14 +39,9 @@ class InformationAboutFragment : Fragment() {
         setButtonOnClickListener()
     }
 
-    override fun onStart() {
-        super.onStart()
-        binding.informationAboutScrollview.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
-    }
-
     override fun onResume() {
         super.onResume()
-        binding.informationAboutScrollview.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
+        binding.informationAboutScrollview.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 
     private fun setButtonOnClickListener() {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationContactFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationContactFragment.kt
index fd26db493..6b351030c 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationContactFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationContactFragment.kt
@@ -41,14 +41,9 @@ class InformationContactFragment : Fragment() {
         setButtonOnClickListener()
     }
 
-    override fun onStart() {
-        super.onStart()
-        binding.informationContactContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
-    }
-
     override fun onResume() {
         super.onResume()
-        binding.informationContactContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
+        binding.informationContactContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 
     private fun setButtonOnClickListener() {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationFragment.kt
index bc14cbf4b..173f6b129 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationFragment.kt
@@ -43,14 +43,9 @@ class InformationFragment : Fragment() {
         setButtonOnClickListener()
     }
 
-    override fun onStart() {
-        super.onStart()
-        binding.informationContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
-    }
-
     override fun onResume() {
         super.onResume()
-        binding.informationContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
+        binding.informationContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 
     private fun setButtonOnClickListener() {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationLegalFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationLegalFragment.kt
index cbe86b199..053d1bb2f 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationLegalFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationLegalFragment.kt
@@ -39,14 +39,9 @@ class InformationLegalFragment : Fragment() {
         setButtonOnClickListener()
     }
 
-    override fun onStart() {
-        super.onStart()
-        binding.informationLegalContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
-    }
-
     override fun onResume() {
         super.onResume()
-        binding.informationLegalContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
+        binding.informationLegalContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 
     private fun setButtonOnClickListener() {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationPrivacyFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationPrivacyFragment.kt
index d7ee64f53..c445f900f 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationPrivacyFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationPrivacyFragment.kt
@@ -39,14 +39,9 @@ class InformationPrivacyFragment : Fragment() {
         setButtonOnClickListener()
     }
 
-    override fun onStart() {
-        super.onStart()
-        binding.informationPrivacyContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
-    }
-
     override fun onResume() {
         super.onResume()
-        binding.informationPrivacyContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
+        binding.informationPrivacyContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 
     private fun setButtonOnClickListener() {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationTechnicalFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationTechnicalFragment.kt
index eeef00278..a4ee75765 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationTechnicalFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationTechnicalFragment.kt
@@ -39,14 +39,9 @@ class InformationTechnicalFragment : Fragment() {
         setButtonOnClickListener()
     }
 
-    override fun onStart() {
-        super.onStart()
-        binding.informationTechnicalContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
-    }
-
     override fun onResume() {
         super.onResume()
-        binding.informationTechnicalContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
+        binding.informationTechnicalContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 
     private fun setButtonOnClickListener() {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationTermsFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationTermsFragment.kt
index ad0a09245..98a4079e6 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationTermsFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/information/InformationTermsFragment.kt
@@ -39,14 +39,9 @@ class InformationTermsFragment : Fragment() {
         setButtonOnClickListener()
     }
 
-    override fun onStart() {
-        super.onStart()
-        binding.informationTermsContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
-    }
-
     override fun onResume() {
         super.onResume()
-        binding.informationTermsContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
+        binding.informationTermsContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 
     private fun setButtonOnClickListener() {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainOverviewFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainOverviewFragment.kt
index 4de437340..67b6ebbe8 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainOverviewFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainOverviewFragment.kt
@@ -43,14 +43,9 @@ class MainOverviewFragment : Fragment() {
         setButtonOnClickListener()
     }
 
-    override fun onStart() {
-        super.onStart()
-        binding.mainOverviewContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
-    }
-
     override fun onResume() {
         super.onResume()
-        binding.mainOverviewContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
+        binding.mainOverviewContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 
     private fun setButtonOnClickListener() {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainShareFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainShareFragment.kt
index 42077a648..52c0e3df5 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainShareFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/MainShareFragment.kt
@@ -4,6 +4,7 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import android.view.accessibility.AccessibilityEvent
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.activityViewModels
 import de.rki.coronawarnapp.R
@@ -55,4 +56,9 @@ class MainShareFragment : Fragment() {
             (activity as MainActivity).goBack()
         }
     }
+
+    override fun onResume() {
+        super.onResume()
+        binding.mainShareContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
+    }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragment.kt
index 13925c877..ace481434 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingFragment.kt
@@ -44,13 +44,8 @@ class OnboardingFragment : Fragment() {
         }
     }
 
-    override fun onStart() {
-        super.onStart()
-        binding.onboardingContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
-    }
-
     override fun onResume() {
         super.onResume()
-        binding.onboardingContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
+        binding.onboardingContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsFragment.kt
index a89d179d5..c6768a15f 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingNotificationsFragment.kt
@@ -43,14 +43,9 @@ class OnboardingNotificationsFragment : Fragment() {
         setButtonOnClickListener()
     }
 
-    override fun onStart() {
-        super.onStart()
-        binding.onboardingNotificationsContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
-    }
-
     override fun onResume() {
         super.onResume()
-        binding.onboardingNotificationsContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
+        binding.onboardingNotificationsContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 
     private fun setButtonOnClickListener() {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingPrivacyFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingPrivacyFragment.kt
index 9e40aefe0..f15cbfbde 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingPrivacyFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingPrivacyFragment.kt
@@ -40,14 +40,9 @@ class OnboardingPrivacyFragment : Fragment() {
         setButtonOnClickListener()
     }
 
-    override fun onStart() {
-        super.onStart()
-        binding.onboardingPrivacyContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
-    }
-
     override fun onResume() {
         super.onResume()
-        binding.onboardingPrivacyContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
+        binding.onboardingPrivacyContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 
     private fun setButtonOnClickListener() {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTestFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTestFragment.kt
index a95516e58..2923d9ea0 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTestFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTestFragment.kt
@@ -40,14 +40,9 @@ class OnboardingTestFragment : Fragment() {
         setButtonOnClickListener()
     }
 
-    override fun onStart() {
-        super.onStart()
-        binding.onboardingTestContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
-    }
-
     override fun onResume() {
         super.onResume()
-        binding.onboardingTestContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
+        binding.onboardingTestContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 
     private fun setButtonOnClickListener() {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragment.kt
index 21115e916..23f302095 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/onboarding/OnboardingTracingFragment.kt
@@ -70,14 +70,9 @@ class OnboardingTracingFragment : Fragment(),
         setButtonOnClickListener()
     }
 
-    override fun onStart() {
-        super.onStart()
-        binding.onboardingTracingContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
-    }
-
     override fun onResume() {
         super.onResume()
-        binding.onboardingTracingContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
+        binding.onboardingTracingContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
         resetTracing()
     }
 
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/riskdetails/RiskDetailsFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/riskdetails/RiskDetailsFragment.kt
index 8f6f5a752..a36fcd300 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/riskdetails/RiskDetailsFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/riskdetails/RiskDetailsFragment.kt
@@ -54,11 +54,6 @@ class RiskDetailsFragment : Fragment() {
         setButtonOnClickListeners()
     }
 
-    override fun onStart() {
-        super.onStart()
-        binding.riskDetailsContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
-    }
-
     override fun onResume() {
         super.onResume()
         // refresh required data
@@ -66,7 +61,7 @@ class RiskDetailsFragment : Fragment() {
         tracingViewModel.refreshExposureSummary()
         tracingViewModel.refreshLastTimeDiagnosisKeysFetchedDate()
         TimerHelper.checkManualKeyRetrievalTimer()
-        binding.riskDetailsContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
+        binding.riskDetailsContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 
     private fun setButtonOnClickListeners() {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsFragment.kt
index 9460bfe99..3c7e49013 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsFragment.kt
@@ -4,6 +4,7 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import android.view.accessibility.AccessibilityEvent
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.activityViewModels
 import androidx.navigation.fragment.findNavController
@@ -59,6 +60,8 @@ class SettingsFragment : Fragment() {
         settingsViewModel.refreshNotificationsEnabled(requireContext())
         settingsViewModel.refreshNotificationsRiskEnabled()
         settingsViewModel.refreshNotificationsTestEnabled()
+
+        binding.settingsContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 
     private fun setButtonOnClickListener() {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsNotificationFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsNotificationFragment.kt
index 99ca01e18..2baecf127 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsNotificationFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsNotificationFragment.kt
@@ -4,6 +4,7 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import android.view.accessibility.AccessibilityEvent
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.activityViewModels
 import de.rki.coronawarnapp.databinding.FragmentSettingsNotificationsBinding
@@ -52,6 +53,7 @@ class SettingsNotificationFragment : Fragment() {
 
     override fun onResume() {
         super.onResume()
+        binding.settingsNotificationsContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
         // refresh required data
         settingsViewModel.refreshNotificationsEnabled(requireContext())
         settingsViewModel.refreshNotificationsRiskEnabled()
@@ -70,18 +72,12 @@ class SettingsNotificationFragment : Fragment() {
         val goBack =
             binding.settingsNotificationsHeader.headerButtonBack.buttonIcon
         // Update Risk
-        updateRiskNotificationSwitch.setOnCheckedChangeListener { _, _ ->
-            // android calls this listener also on start, so it has to be verified if the user pressed the switch
-            if (updateRiskNotificationSwitch.isPressed) {
-                settingsViewModel.toggleNotificationsRiskEnabled()
-            }
+        updateRiskNotificationSwitch.setOnClickListener {
+            settingsViewModel.toggleNotificationsRiskEnabled()
         }
         // Update Test
-        updateTestNotificationSwitch.setOnCheckedChangeListener { _, _ ->
-            // android calls this listener also on start, so it has to be verified if the user pressed the switch
-            if (updateTestNotificationSwitch.isPressed) {
-                settingsViewModel.toggleNotificationsTestEnabled()
-            }
+        updateTestNotificationSwitch.setOnClickListener {
+            settingsViewModel.toggleNotificationsTestEnabled()
         }
         goBack.setOnClickListener {
             (activity as MainActivity).goBack()
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsResetFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsResetFragment.kt
index cb9ddd031..8bf2871c9 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsResetFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsResetFragment.kt
@@ -5,6 +5,7 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import android.view.accessibility.AccessibilityEvent
 import androidx.fragment.app.Fragment
 import androidx.lifecycle.lifecycleScope
 import com.google.android.gms.common.api.ApiException
@@ -60,6 +61,11 @@ class SettingsResetFragment : Fragment() {
         }
     }
 
+    override fun onResume() {
+        super.onResume()
+        binding.settingsResetContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
+    }
+
     private fun deleteAllAppContent() {
         lifecycleScope.launch {
             try {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsTracingFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsTracingFragment.kt
index a1842b998..c2390c539 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsTracingFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/settings/SettingsTracingFragment.kt
@@ -5,6 +5,7 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import android.view.accessibility.AccessibilityEvent
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.activityViewModels
 import androidx.lifecycle.lifecycleScope
@@ -15,7 +16,6 @@ import de.rki.coronawarnapp.exception.reporting.report
 import de.rki.coronawarnapp.nearby.InternalExposureNotificationClient
 import de.rki.coronawarnapp.nearby.InternalExposureNotificationPermissionHelper
 import de.rki.coronawarnapp.storage.LocalData
-import de.rki.coronawarnapp.ui.ViewBlocker
 import de.rki.coronawarnapp.ui.main.MainActivity
 import de.rki.coronawarnapp.ui.viewmodel.SettingsViewModel
 import de.rki.coronawarnapp.ui.viewmodel.TracingViewModel
@@ -72,6 +72,7 @@ class SettingsTracingFragment : Fragment(),
         super.onResume()
         // refresh required data
         tracingViewModel.refreshIsTracingEnabled()
+        binding.settingsTracingContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 
     override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
@@ -93,23 +94,21 @@ class SettingsTracingFragment : Fragment(),
 
     private fun setButtonOnClickListener() {
         val switch = binding.settingsTracingSwitchRow.settingsSwitchRowSwitch
+        val back = binding.settingsTracingHeader.headerButtonBack.buttonIcon
+        val bluetooth = binding.settingsTracingStatusBluetooth.tracingStatusCardButton
+        val connection = binding.settingsTracingStatusConnection.tracingStatusCardButton
         internalExposureNotificationPermissionHelper =
             InternalExposureNotificationPermissionHelper(this, this)
-        switch.setOnCheckedChangeListener { _, _ ->
-            // android calls this listener also on start, so it has to be verified if the user pressed the switch
-            if (switch.isPressed) {
-                ViewBlocker.runAndBlockInteraction(arrayOf(switch)) {
-                    startStopTracing()
-                }
-            }
+        switch.setOnClickListener {
+            startStopTracing()
         }
-        binding.settingsTracingHeader.headerButtonBack.buttonIcon.setOnClickListener {
+        back.setOnClickListener {
             (activity as MainActivity).goBack()
         }
-        binding.settingsTracingStatusBluetooth.tracingStatusCardButton.setOnClickListener {
+        bluetooth.setOnClickListener {
             ExternalActionHelper.toMainSettings(requireContext())
         }
-        binding.settingsTracingStatusConnection.tracingStatusCardButton.setOnClickListener {
+        connection.setOnClickListener {
             ExternalActionHelper.toConnections(requireContext())
         }
     }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionContactFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionContactFragment.kt
index d61a15600..de00ac35c 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionContactFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionContactFragment.kt
@@ -41,14 +41,9 @@ class SubmissionContactFragment : Fragment() {
         setButtonOnClickListener()
     }
 
-    override fun onStart() {
-        super.onStart()
-        binding.submissionContactRoot.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
-    }
-
     override fun onResume() {
         super.onResume()
-        binding.submissionContactRoot.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
+        binding.submissionContactRoot.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 
     private fun setButtonOnClickListener() {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionDispatcherFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionDispatcherFragment.kt
index dbc66ff10..0ae9e3260 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionDispatcherFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionDispatcherFragment.kt
@@ -42,14 +42,9 @@ class SubmissionDispatcherFragment : Fragment() {
         setButtonOnClickListener()
     }
 
-    override fun onStart() {
-        super.onStart()
-        binding.submissionDispatcherRoot.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
-    }
-
     override fun onResume() {
         super.onResume()
-        binding.submissionDispatcherRoot.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
+        binding.submissionDispatcherRoot.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 
     private fun setButtonOnClickListener() {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionDoneFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionDoneFragment.kt
index dfcc635eb..5efab5ef2 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionDoneFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionDoneFragment.kt
@@ -4,6 +4,7 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import android.view.accessibility.AccessibilityEvent
 import androidx.fragment.app.Fragment
 import androidx.navigation.fragment.findNavController
 import de.rki.coronawarnapp.databinding.FragmentSubmissionDoneBinding
@@ -37,6 +38,11 @@ class SubmissionDoneFragment : Fragment() {
         setButtonOnClickListener()
     }
 
+    override fun onResume() {
+        super.onResume()
+        binding.submissionDoneContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
+    }
+
     private fun setButtonOnClickListener() {
         binding.submissionDoneHeader.headerButtonBack.buttonIcon.setOnClickListener {
             findNavController().doNavigate(
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionIntroFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionIntroFragment.kt
index 5c688523b..3ad69bd6b 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionIntroFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionIntroFragment.kt
@@ -38,14 +38,9 @@ class SubmissionIntroFragment : Fragment() {
         setButtonOnClickListener()
     }
 
-    override fun onStart() {
-        super.onStart()
-        binding.submissionIntroRoot.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
-    }
-
     override fun onResume() {
         super.onResume()
-        binding.submissionIntroRoot.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
+        binding.submissionIntroRoot.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 
     private fun setButtonOnClickListener() {
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionQRCodeScanFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionQRCodeScanFragment.kt
index 3a92abbf6..85b652cd9 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionQRCodeScanFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionQRCodeScanFragment.kt
@@ -5,6 +5,7 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import android.view.accessibility.AccessibilityEvent
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.activityViewModels
 import androidx.navigation.fragment.findNavController
@@ -185,6 +186,7 @@ class SubmissionQRCodeScanFragment : Fragment() {
 
     override fun onResume() {
         super.onResume()
+        binding.submissionQrCodeScanContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
 
         if (CameraPermissionHelper.hasCameraPermission(requireActivity())) {
             binding.submissionQrCodeScanPreview.resume()
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionResultPositiveOtherWarningFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionResultPositiveOtherWarningFragment.kt
index 312e91b41..92c15d7fc 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionResultPositiveOtherWarningFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionResultPositiveOtherWarningFragment.kt
@@ -5,6 +5,7 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import android.view.accessibility.AccessibilityEvent
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.activityViewModels
 import androidx.navigation.fragment.findNavController
@@ -41,6 +42,7 @@ class SubmissionResultPositiveOtherWarningFragment : Fragment(),
 
     override fun onResume() {
         super.onResume()
+        binding.submissionPositiveOtherPrivacyContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
         tracingViewModel.refreshIsTracingEnabled()
         if (submissionRequested && !submissionFailed) {
             internalExposureNotificationPermissionHelper.requestPermissionToShareKeys()
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionTanFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionTanFragment.kt
index 381ee5152..a1188ed16 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionTanFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionTanFragment.kt
@@ -120,14 +120,9 @@ class SubmissionTanFragment : Fragment() {
         })
     }
 
-    override fun onStart() {
-        super.onStart()
-        binding.submissionTanRoot.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
-    }
-
     override fun onResume() {
         super.onResume()
-        binding.submissionTanRoot.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
+        binding.submissionTanRoot.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
     }
 
     private fun goBack() = (activity as MainActivity).goBack()
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultFragment.kt
index cbea694ff..c1ea49f3e 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultFragment.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionTestResultFragment.kt
@@ -5,6 +5,7 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import android.view.accessibility.AccessibilityEvent
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.activityViewModels
 import androidx.navigation.fragment.findNavController
@@ -105,6 +106,7 @@ class SubmissionTestResultFragment : Fragment() {
 
     override fun onResume() {
         super.onResume()
+        binding.submissionTestResultContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
         submissionViewModel.refreshDeviceUIState()
         tracingViewModel.refreshIsTracingEnabled()
     }
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterSettingsHelper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterSettingsHelper.kt
index fbaea2c31..685ab2485 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterSettingsHelper.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FormatterSettingsHelper.kt
@@ -87,6 +87,15 @@ fun formatTracingStatusText(tracing: Boolean, bluetooth: Boolean, connection: Bo
     }
 }
 
+/**
+ * Returns a combined string of subtitle and status for the content description for switches
+ *
+ * @param subtitle
+ * @param status
+ * @return String
+ */
+fun formatSwitchContentDescription(subtitle: String, status: String): String = "$subtitle $status"
+
 /**
  * Format the settings tracing description text display depending on tracing status
  *
diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FromatterAccessibilityHelper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FromatterAccessibilityHelper.kt
new file mode 100644
index 000000000..987e0f5ba
--- /dev/null
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FromatterAccessibilityHelper.kt
@@ -0,0 +1,17 @@
+@file:JvmName("FormatterAccessibilityHelper")
+
+package de.rki.coronawarnapp.util.formatter
+
+import de.rki.coronawarnapp.CoronaWarnApplication
+import de.rki.coronawarnapp.R
+
+fun formatSuffix(string: String?, suffix: Int): String {
+    val appContext = CoronaWarnApplication.getAppContext()
+    return if (string != null) {
+        "$string ${appContext.getString(suffix)}"
+    } else ""
+}
+
+fun formatButton(string: String?): String = formatSuffix(string, R.string.suffix_button)
+
+fun formatImage(string: String?): String = formatSuffix(string, R.string.suffix_image)
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_information.xml b/Corona-Warn-App/src/main/res/layout/fragment_information.xml
index edef7239d..299174395 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_information.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_information.xml
@@ -116,6 +116,7 @@
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/spacing_small"
                     android:text="@{FormatterInformationHelper.formatVersion()}"
+                    android:focusable="true"
                     app:layout_constraintEnd_toEndOf="parent"
                     app:layout_constraintStart_toStartOf="@+id/guideline_body"
                     app:layout_constraintTop_toBottomOf="@+id/information_legal" />
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_information_about.xml b/Corona-Warn-App/src/main/res/layout/fragment_information_about.xml
index d07c91a08..e6a996ea3 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_information_about.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_information_about.xml
@@ -4,7 +4,9 @@
 
     <androidx.constraintlayout.widget.ConstraintLayout
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        android:contentDescription="@string/information_about_title"
+        android:focusable="true">
 
         <include
             android:id="@+id/information_about_header"
@@ -21,7 +23,6 @@
             android:id="@+id/information_about_scrollview"
             android:layout_width="0dp"
             android:layout_height="0dp"
-            android:contentDescription="@string/information_about_title"
             android:fillViewport="true"
             app:layout_constraintBottom_toBottomOf="@+id/guideline_bottom"
             app:layout_constraintEnd_toEndOf="parent"
@@ -30,8 +31,7 @@
 
             <androidx.constraintlayout.widget.ConstraintLayout
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:focusable="true">
+                android:layout_height="wrap_content">
 
                 <include
                     android:id="@+id/information_about_header_details"
@@ -52,6 +52,7 @@
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/spacing_medium"
                     android:text="@string/information_about_body_emphasized"
+                    android:focusable="true"
                     app:layout_constraintEnd_toStartOf="@+id/guideline_end"
                     app:layout_constraintStart_toEndOf="@+id/guideline_start"
                     app:layout_constraintTop_toBottomOf="@+id/information_about_header_details" />
@@ -63,6 +64,7 @@
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/spacing_small"
                     android:text="@string/information_about_body"
+                    android:focusable="true"
                     app:layout_constraintEnd_toStartOf="@+id/guideline_end"
                     app:layout_constraintStart_toEndOf="@+id/guideline_start"
                     app:layout_constraintTop_toBottomOf="@+id/information_about_body_emphasized" />
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_information_contact.xml b/Corona-Warn-App/src/main/res/layout/fragment_information_contact.xml
index 8d8dafb4e..b90339050 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_information_contact.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_information_contact.xml
@@ -6,6 +6,7 @@
         android:id="@+id/information_contact_container"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
+        android:focusable="true"
         android:contentDescription="@string/information_contact_title">
 
         <include
@@ -30,8 +31,7 @@
 
             <androidx.constraintlayout.widget.ConstraintLayout
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:focusable="true">
+                android:layout_height="wrap_content">
 
                 <include
                     android:id="@+id/information_contact_header_details"
@@ -59,10 +59,12 @@
                 <TextView
                     android:id="@+id/information_contact_subtitle_phone"
                     style="@style/headline6"
+                    android:accessibilityHeading="true"
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/spacing_small"
                     android:text="@string/information_contact_subtitle_phone"
+                    android:focusable="true"
                     app:layout_constraintEnd_toStartOf="@+id/guideline_end"
                     app:layout_constraintStart_toEndOf="@+id/guideline_start"
                     app:layout_constraintTop_toBottomOf="@+id/divider" />
@@ -83,6 +85,7 @@
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:text="@string/information_contact_body_phone"
+                    android:focusable="true"
                     app:layout_constraintEnd_toEndOf="@+id/guideline_end"
                     app:layout_constraintStart_toStartOf="@+id/guideline_start"
                     app:layout_constraintTop_toBottomOf="@+id/information_contact_navigation_row_phone" />
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_information_legal.xml b/Corona-Warn-App/src/main/res/layout/fragment_information_legal.xml
index b85d76155..6827fea70 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_information_legal.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_information_legal.xml
@@ -14,6 +14,7 @@
         android:id="@+id/information_legal_container"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
+        android:focusable="true"
         android:contentDescription="@string/information_legal_title">
 
         <include
@@ -61,6 +62,7 @@
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/spacing_tiny"
                     android:text="@string/information_legal_body_publisher"
+                    android:focusable="true"
                     app:layout_constraintEnd_toStartOf="@+id/guideline_end"
                     app:layout_constraintStart_toEndOf="@+id/guideline_start"
                     app:layout_constraintTop_toBottomOf="@+id/information_legal_header_details" />
@@ -71,6 +73,7 @@
                     android:layout_width="@dimen/match_constraint"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/spacing_medium"
+                    android:focusable="true"
                     app:layout_constraintEnd_toEndOf="@+id/guideline_end"
                     app:layout_constraintStart_toStartOf="@+id/guideline_start"
                     app:layout_constraintTop_toBottomOf="@+id/information_legal_body_publisher" />
@@ -78,10 +81,12 @@
                 <TextView
                     android:id="@+id/information_legal_headline_contact"
                     style="@style/headline5"
+                    android:accessibilityHeading="true"
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/spacing_small"
                     android:text="@string/information_legal_headline_contact"
+                    android:focusable="true"
                     app:layout_constraintEnd_toStartOf="@+id/guideline_end"
                     app:layout_constraintStart_toEndOf="@+id/guideline_start"
                     app:layout_constraintTop_toBottomOf="@+id/information_legal_divider_contact" />
@@ -93,6 +98,7 @@
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/spacing_tiny"
                     android:text="@string/information_legal_subtitle_contact"
+                    android:focusable="true"
                     app:layout_constraintEnd_toStartOf="@+id/guideline_end"
                     app:layout_constraintStart_toEndOf="@+id/guideline_start"
                     app:layout_constraintTop_toBottomOf="@+id/information_legal_headline_contact" />
@@ -110,10 +116,12 @@
                 <TextView
                     android:id="@+id/information_legal_headline_taxid"
                     style="@style/headline5"
+                    android:accessibilityHeading="true"
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/spacing_small"
                     android:text="@string/information_legal_headline_taxid"
+                    android:focusable="true"
                     app:layout_constraintEnd_toStartOf="@+id/guideline_end"
                     app:layout_constraintStart_toEndOf="@+id/guideline_start"
                     app:layout_constraintTop_toBottomOf="@+id/information_legal_divider_taxid" />
@@ -125,6 +133,7 @@
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/spacing_tiny"
                     android:text="@string/information_legal_subtitle_taxid"
+                    android:focusable="true"
                     app:layout_constraintEnd_toStartOf="@+id/guideline_end"
                     app:layout_constraintStart_toEndOf="@+id/guideline_start"
                     app:layout_constraintTop_toBottomOf="@+id/information_legal_headline_taxid" />
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_information_privacy.xml b/Corona-Warn-App/src/main/res/layout/fragment_information_privacy.xml
index 05da54a75..655046eaf 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_information_privacy.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_information_privacy.xml
@@ -14,6 +14,7 @@
         android:id="@+id/information_privacy_container"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
+        android:focusable="true"
         android:contentDescription="@string/information_privacy_title">
 
         <include
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_information_technical.xml b/Corona-Warn-App/src/main/res/layout/fragment_information_technical.xml
index d94919817..fa037a6ad 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_information_technical.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_information_technical.xml
@@ -14,6 +14,7 @@
         android:id="@+id/information_technical_container"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
+        android:focusable="true"
         android:contentDescription="@string/information_technical_title">
 
         <include
@@ -31,7 +32,6 @@
             android:layout_width="@dimen/match_constraint"
             android:layout_height="@dimen/match_constraint"
             android:fillViewport="true"
-            android:focusable="true"
             app:layout_constraintBottom_toBottomOf="@+id/guideline_bottom"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_information_terms.xml b/Corona-Warn-App/src/main/res/layout/fragment_information_terms.xml
index e4e13e84f..080c8f6df 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_information_terms.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_information_terms.xml
@@ -14,6 +14,7 @@
         android:id="@+id/information_terms_container"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
+        android:focusable="true"
         android:contentDescription="@string/information_terms_title">
 
         <include
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_main.xml b/Corona-Warn-App/src/main/res/layout/fragment_main.xml
index 6a9bd45d4..0babbd7a7 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_main.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_main.xml
@@ -9,6 +9,8 @@
 
         <import type="de.rki.coronawarnapp.util.formatter.FormatterSubmissionHelper" />
 
+        <import type="de.rki.coronawarnapp.util.formatter.FormatterAccessibilityHelper" />
+
         <variable
             name="submissionViewModel"
             type="de.rki.coronawarnapp.ui.viewmodel.SubmissionViewModel" />
@@ -48,9 +50,10 @@
                     android:id="@+id/main_header_logo"
                     android:layout_width="0dp"
                     android:layout_height="match_parent"
-                    android:importantForAccessibility="no"
+                    android:contentDescription="@{FormatterAccessibilityHelper.formatImage(@string/accessibility_logo)}"
                     android:scaleType="fitStart"
                     android:src="@drawable/ic_main_header"
+                    android:focusable="true"
                     app:layout_constraintBottom_toBottomOf="parent"
                     app:layout_constraintEnd_toStartOf="@+id/main_header_share"
                     app:layout_constraintStart_toStartOf="parent"
@@ -61,8 +64,9 @@
                     layout="@layout/include_button_icon"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
+                    android:focusable="true"
                     app:icon="@{@drawable/ic_main_share}"
-                    app:iconDescription="@{@string/main_share_title}"
+                    app:iconDescription="@{@string/button_share}"
                     app:layout_constraintBottom_toBottomOf="parent"
                     app:layout_constraintEnd_toStartOf="@+id/main_header_options_menu"
                     app:layout_constraintTop_toTopOf="parent" />
@@ -72,8 +76,9 @@
                     layout="@layout/include_button_icon"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
+                    android:focusable="true"
                     app:icon="@{@drawable/ic_main_settings}"
-                    app:iconDescription="@{@string/accessibility_menu}"
+                    app:iconDescription="@{@string/button_menu}"
                     app:layout_constraintBottom_toBottomOf="parent"
                     app:layout_constraintEnd_toEndOf="parent"
                     app:layout_constraintTop_toTopOf="parent" />
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_main_overview.xml b/Corona-Warn-App/src/main/res/layout/fragment_main_overview.xml
index 92c15258c..4805cd6cd 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_main_overview.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_main_overview.xml
@@ -66,6 +66,7 @@
                     app:body="@{@string/main_overview_body_risk}"
                     app:icon="@{@drawable/ic_main_overview_2}"
                     app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintHorizontal_bias="0.0"
                     app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintTop_toBottomOf="@+id/main_overview_tracing"
                     app:subtitle="@{@string/main_overview_subtitle_risk}" />
@@ -80,15 +81,29 @@
                     app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintTop_toBottomOf="@+id/main_overview_risk">
 
-                    <include
-                        android:id="@+id/main_overview_risk_subtitle_text"
-                        layout="@layout/include_main_overview_glossary"
+                    <androidx.constraintlayout.widget.ConstraintLayout
+                        android:id="@+id/main_overview_risk_headline"
+                        style="@style/row"
                         android:layout_width="0dp"
                         android:layout_height="wrap_content"
+                        android:paddingTop="@dimen/spacing_small"
                         app:layout_constraintEnd_toEndOf="parent"
                         app:layout_constraintStart_toStartOf="parent"
-                        app:layout_constraintTop_toTopOf="parent"
-                        app:subtitle="@{@string/main_overview_subtitle_risk_levels}" />
+                        app:layout_constraintTop_toTopOf="parent">
+
+                        <TextView
+                            style="@style/headline6"
+                            android:accessibilityHeading="true"
+                            android:layout_width="0dp"
+                            android:layout_height="wrap_content"
+                            android:layout_marginStart="@dimen/guideline_body_title"
+                            android:text="@string/main_overview_subtitle_risk_levels"
+                            app:layout_constraintEnd_toEndOf="parent"
+                            app:layout_constraintStart_toStartOf="parent"
+                            app:layout_constraintTop_toTopOf="parent" />
+
+                    </androidx.constraintlayout.widget.ConstraintLayout>
+
 
                     <include
                         android:id="@+id/main_overview_risk_increased_risk"
@@ -99,7 +114,7 @@
                         app:iconTint="@{@color/colorSemanticHighRisk}"
                         app:layout_constraintEnd_toEndOf="parent"
                         app:layout_constraintStart_toStartOf="parent"
-                        app:layout_constraintTop_toBottomOf="@+id/main_overview_risk_subtitle_text"
+                        app:layout_constraintTop_toBottomOf="@+id/main_overview_risk_headline"
                         app:subtitle="@{@string/main_overview_subtitle_increased_risk}" />
 
                     <include
@@ -159,6 +174,7 @@
 
                         <TextView
                             style="@style/headline5"
+                            android:accessibilityHeading="true"
                             android:layout_width="0dp"
                             android:layout_height="wrap_content"
                             android:layout_marginStart="@dimen/guideline_body_title"
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_main_share.xml b/Corona-Warn-App/src/main/res/layout/fragment_main_share.xml
index f9b4b42b3..e69e6cfaf 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_main_share.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_main_share.xml
@@ -11,8 +11,10 @@
     </data>
 
     <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/main_share_container"
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
+        android:layout_height="match_parent"
+        android:contentDescription="@string/main_share_title">
 
         <include
             android:id="@+id/main_share_header"
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_onboarding_notifications.xml b/Corona-Warn-App/src/main/res/layout/fragment_onboarding_notifications.xml
index 1800f5105..98934eed2 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_onboarding_notifications.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_onboarding_notifications.xml
@@ -7,6 +7,7 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:contentDescription="@string/onboarding_notifications_accessibility_title"
+        android:focusable="true"
         android:fillViewport="true">
 
         <androidx.constraintlayout.widget.ConstraintLayout
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_onboarding_privacy.xml b/Corona-Warn-App/src/main/res/layout/fragment_onboarding_privacy.xml
index 739392b9b..211d7a736 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_onboarding_privacy.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_onboarding_privacy.xml
@@ -15,6 +15,7 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:contentDescription="@string/onboarding_privacy_accessibility_title"
+        android:focusable="true"
         android:fillViewport="true">
 
         <androidx.constraintlayout.widget.ConstraintLayout
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_onboarding_test.xml b/Corona-Warn-App/src/main/res/layout/fragment_onboarding_test.xml
index 8fd19dc34..5a73d2835 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_onboarding_test.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_onboarding_test.xml
@@ -7,6 +7,7 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:contentDescription="@string/onboarding_test_accessibility_title"
+        android:focusable="true"
         android:fillViewport="true">
 
         <androidx.constraintlayout.widget.ConstraintLayout
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_onboarding_tracing.xml b/Corona-Warn-App/src/main/res/layout/fragment_onboarding_tracing.xml
index dca4457c3..c927d4d09 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_onboarding_tracing.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_onboarding_tracing.xml
@@ -7,6 +7,7 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:contentDescription="@string/onboarding_tracing_accessibility_title"
+        android:focusable="true"
         android:fillViewport="true">
 
         <androidx.constraintlayout.widget.ConstraintLayout
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_risk_details.xml b/Corona-Warn-App/src/main/res/layout/fragment_risk_details.xml
index 2289e51a0..00cfdb750 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_risk_details.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_risk_details.xml
@@ -61,6 +61,7 @@
             <TextView
                 android:id="@+id/risk_details_header_title"
                 style="@style/headline6"
+                android:accessibilityHeading="true"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_marginStart="@dimen/guideline_body_title"
@@ -99,8 +100,7 @@
 
             <androidx.constraintlayout.widget.ConstraintLayout
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:focusable="true">
+                android:layout_height="wrap_content">
 
                 <include
                     android:id="@+id/risk_details_risk_card"
@@ -118,11 +118,12 @@
                 <TextView
                     android:id="@+id/risk_details_behavior_headline"
                     style="@style/headline5"
+                    android:accessibilityHeading="true"
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/spacing_medium"
-                    android:focusable="false"
                     android:text="@string/risk_details_headline_behavior"
+                    android:focusable="true"
                     app:layout_constraintEnd_toStartOf="@+id/guideline_end"
                     app:layout_constraintStart_toStartOf="@+id/guideline_start"
                     app:layout_constraintTop_toBottomOf="@+id/risk_details_risk_card" />
@@ -133,7 +134,7 @@
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/spacing_tiny"
-                    android:focusable="false"
+                    android:focusable="true"
                     android:text="@string/risk_details_subtitle_behavior"
                     app:layout_constraintEnd_toStartOf="@+id/guideline_end"
                     app:layout_constraintStart_toStartOf="@+id/guideline_start"
@@ -154,7 +155,7 @@
                         android:layout_width="0dp"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="@dimen/spacing_normal"
-                        android:focusable="false"
+                        android:focusable="true"
                         android:visibility="@{FormatterRiskHelper.formatVisibilityBehavior(tracingViewModel.riskLevel)}"
                         app:layout_constraintEnd_toEndOf="parent"
                         app:layout_constraintStart_toStartOf="parent"
@@ -167,7 +168,7 @@
                         android:layout_width="0dp"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="@dimen/spacing_normal"
-                        android:focusable="false"
+                        android:focusable="true"
                         android:visibility="@{FormatterRiskHelper.formatVisibilityBehaviorIncreasedRisk(tracingViewModel.riskLevel)}"
                         app:layout_constraintEnd_toEndOf="parent"
                         app:layout_constraintStart_toStartOf="parent"
@@ -181,7 +182,6 @@
                     style="@style/greyBodyBackground"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:focusable="true"
                     app:layout_constraintEnd_toEndOf="parent"
                     app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintTop_toBottomOf="@id/risk_details_behavior_wrapper">
@@ -189,10 +189,11 @@
                     <TextView
                         android:id="@+id/risk_details_information_headline"
                         style="@style/headline5"
+                        android:accessibilityHeading="true"
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:focusable="false"
                         android:text="@string/risk_details_headline_infection_risk"
+                        android:focusable="true"
                         app:layout_constraintEnd_toEndOf="parent"
                         app:layout_constraintStart_toStartOf="parent"
                         app:layout_constraintTop_toTopOf="parent" />
@@ -203,8 +204,8 @@
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="@dimen/spacing_tiny"
-                        android:focusable="false"
                         android:text="@string/risk_details_subtitle_infection_risk"
+                        android:focusable="true"
                         app:layout_constraintEnd_toEndOf="parent"
                         app:layout_constraintStart_toStartOf="parent"
                         app:layout_constraintTop_toBottomOf="@+id/risk_details_information_headline" />
@@ -215,9 +216,9 @@
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="@dimen/spacing_normal"
-                        android:focusable="false"
                         android:text="@{FormatterRiskHelper.formatRiskDetailsRiskLevelBody(tracingViewModel.riskLevel, tracingViewModel.daysSinceLastExposure)}"
                         android:visibility="@{FormatterHelper.formatVisibilityText(FormatterRiskHelper.formatRiskDetailsRiskLevelBody(tracingViewModel.riskLevel, tracingViewModel.daysSinceLastExposure))}"
+                        android:focusable="true"
                         app:layout_constraintEnd_toEndOf="parent"
                         app:layout_constraintStart_toStartOf="parent"
                         app:layout_constraintTop_toBottomOf="@+id/risk_details_information_subtitle" />
@@ -228,8 +229,8 @@
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="@dimen/spacing_normal"
-                        android:focusable="false"
                         android:text="@string/risk_details_information_body_notice"
+                        android:focusable="true"
                         app:layout_constraintEnd_toEndOf="parent"
                         app:layout_constraintStart_toStartOf="parent"
                         app:layout_constraintTop_toBottomOf="@+id/risk_details_information_body" />
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_settings.xml b/Corona-Warn-App/src/main/res/layout/fragment_settings.xml
index a9e1d1e24..49b89205e 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_settings.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_settings.xml
@@ -17,6 +17,9 @@
     </data>
 
     <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/settings_container"
+        android:contentDescription="@string/settings_title"
+        android:focusable="true"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_settings_notifications.xml b/Corona-Warn-App/src/main/res/layout/fragment_settings_notifications.xml
index 0a62638a9..349df6f63 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_settings_notifications.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_settings_notifications.xml
@@ -14,6 +14,9 @@
     </data>
 
     <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/settings_notifications_container"
+        android:contentDescription="@string/settings_notifications_title"
+        android:focusable="true"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_settings_reset.xml b/Corona-Warn-App/src/main/res/layout/fragment_settings_reset.xml
index 1c5c5143c..66961944e 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_settings_reset.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_settings_reset.xml
@@ -3,6 +3,9 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/settings_reset_container"
+        android:contentDescription="@string/settings_reset_title"
+        android:focusable="true"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_settings_tracing.xml b/Corona-Warn-App/src/main/res/layout/fragment_settings_tracing.xml
index 4e2f001aa..a177b0e9e 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_settings_tracing.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_settings_tracing.xml
@@ -19,6 +19,9 @@
     </data>
 
     <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/settings_tracing_container"
+        android:contentDescription="@string/settings_tracing_title"
+        android:focusable="true"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
@@ -116,6 +119,7 @@
                         android:layout_height="wrap_content"
                         android:layout_marginTop="@dimen/spacing_tiny"
                         android:visibility="@{FormatterSettingsHelper.formatTracingStatusVisibilityTracing(tracingViewModel.isTracingEnabled(), settingsViewModel.isBluetoothEnabled(), settingsViewModel.isConnectionEnabled())}"
+                        android:focusable="true"
                         app:layout_constraintEnd_toStartOf="@+id/guideline_end"
                         app:layout_constraintStart_toEndOf="@+id/guideline_start"
                         app:layout_constraintTop_toTopOf="parent">
@@ -136,6 +140,7 @@
                             android:id="@+id/settings_tracing_status_tracing_circle_progress"
                             android:layout_width="@dimen/spacing_huge"
                             android:layout_height="@dimen/spacing_huge"
+                            android:importantForAccessibility="no"
                             app:circleWidth="@dimen/circle_large_width"
                             app:layout_constraintEnd_toEndOf="parent"
                             app:layout_constraintTop_toTopOf="parent"
@@ -165,6 +170,7 @@
                         android:layout_width="@dimen/match_constraint"
                         android:layout_height="wrap_content"
                         android:text="@string/settings_tracing_body_text"
+                        android:focusable="true"
                         app:layout_constraintBottom_toBottomOf="parent"
                         app:layout_constraintEnd_toEndOf="parent"
                         app:layout_constraintStart_toStartOf="parent"
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_submission_done.xml b/Corona-Warn-App/src/main/res/layout/fragment_submission_done.xml
index 78b422fa0..92e8e11e3 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_submission_done.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_submission_done.xml
@@ -4,6 +4,8 @@
     xmlns:tools="http://schemas.android.com/tools">
 
     <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/submission_done_container"
+        android:contentDescription="@string/submission_done_title"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:fillViewport="true"
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_submission_intro.xml b/Corona-Warn-App/src/main/res/layout/fragment_submission_intro.xml
index 4423f39b4..cf44b0a02 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_submission_intro.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_submission_intro.xml
@@ -9,6 +9,7 @@
         android:layout_height="match_parent"
         android:contentDescription="@string/submission_intro_accessibility_title"
         android:fillViewport="true"
+        android:focusable="true"
         tools:context=".ui.submission.SubmissionIntroFragment">
 
         <include
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_submission_positive_other_warning.xml b/Corona-Warn-App/src/main/res/layout/fragment_submission_positive_other_warning.xml
index 6a827d2f8..638b1c894 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_submission_positive_other_warning.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_submission_positive_other_warning.xml
@@ -4,6 +4,8 @@
     xmlns:tools="http://schemas.android.com/tools">
 
     <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/submission_positive_other_privacy_container"
+        android:contentDescription="@string/submission_positive_other_warning_title"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:fillViewport="true"
@@ -27,9 +29,9 @@
             app:layout_constraintBottom_toTopOf="@+id/guideline_action"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintHorizontal_bias="0.0"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/submission_positive_other_warning_header"
-                app:layout_constraintVertical_bias="0.0" />
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/submission_positive_other_warning_header"
+            app:layout_constraintVertical_bias="0.0" />
 
         <Button
             android:id="@+id/submission_positive_other_warning_button_next"
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_submission_qr_code_scan.xml b/Corona-Warn-App/src/main/res/layout/fragment_submission_qr_code_scan.xml
index 56ff87107..8d9f69c28 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_submission_qr_code_scan.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_submission_qr_code_scan.xml
@@ -3,6 +3,8 @@
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
     <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/submission_qr_code_scan_container"
+        android:contentDescription="@string/submission_qr_code_scan_title"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
diff --git a/Corona-Warn-App/src/main/res/layout/fragment_submission_test_result.xml b/Corona-Warn-App/src/main/res/layout/fragment_submission_test_result.xml
index a7368ab3d..3f8a92730 100644
--- a/Corona-Warn-App/src/main/res/layout/fragment_submission_test_result.xml
+++ b/Corona-Warn-App/src/main/res/layout/fragment_submission_test_result.xml
@@ -12,6 +12,8 @@
     </data>
 
     <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/submission_test_result_container"
+        android:contentDescription="@string/submission_test_result_headline"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
diff --git a/Corona-Warn-App/src/main/res/layout/include_button_icon.xml b/Corona-Warn-App/src/main/res/layout/include_button_icon.xml
index 56a5d6723..ec8918be5 100644
--- a/Corona-Warn-App/src/main/res/layout/include_button_icon.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_button_icon.xml
@@ -6,6 +6,8 @@
 
         <import type="de.rki.coronawarnapp.util.formatter.FormatterHelper" />
 
+        <import type="de.rki.coronawarnapp.util.formatter.FormatterAccessibilityHelper" />
+
         <variable
             name="icon"
             type="android.graphics.drawable.Drawable" />
@@ -28,8 +30,8 @@
             style="@style/icon"
             android:layout_width="@dimen/icon_size_button"
             android:layout_height="@dimen/icon_size_button"
-            android:contentDescription="@{FormatterHelper.formatEmptyString(iconDescription)}"
             android:src="@{icon}"
+            android:contentDescription="@{FormatterAccessibilityHelper.formatButton(iconDescription)}"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
diff --git a/Corona-Warn-App/src/main/res/layout/include_dispatcher_card.xml b/Corona-Warn-App/src/main/res/layout/include_dispatcher_card.xml
index 4d500b19e..161d4745b 100644
--- a/Corona-Warn-App/src/main/res/layout/include_dispatcher_card.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_dispatcher_card.xml
@@ -30,6 +30,7 @@
         <TextView
             android:id="@+id/dispatcher_card_title"
             style="@style/headline6"
+            android:accessibilityHeading="true"
             android:layout_width="@dimen/match_constraint"
             android:layout_height="wrap_content"
             android:layout_marginStart="@dimen/spacing_normal"
diff --git a/Corona-Warn-App/src/main/res/layout/include_header.xml b/Corona-Warn-App/src/main/res/layout/include_header.xml
index 4dcf94459..e30f7bdf8 100644
--- a/Corona-Warn-App/src/main/res/layout/include_header.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_header.xml
@@ -34,12 +34,13 @@
         <TextView
             android:id="@+id/header_title"
             style="@style/headline6"
+            android:accessibilityHeading="true"
             android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_marginStart="@dimen/guideline_body_title"
             android:text="@{title}"
             app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintEnd_toEndOf="@id/guideline_end"
             app:layout_constraintStart_toStartOf="@id/guideline_start"
             app:layout_constraintTop_toTopOf="parent"
             tools:text="@string/settings_title" />
@@ -51,6 +52,13 @@
             android:orientation="vertical"
             app:layout_constraintGuide_begin="@dimen/guideline_start" />
 
+        <androidx.constraintlayout.widget.Guideline
+            android:id="@+id/guideline_end"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            app:layout_constraintGuide_end="@dimen/guideline_end" />
+
         <androidx.constraintlayout.widget.Guideline
             android:id="@+id/guideline_back"
             android:layout_width="wrap_content"
diff --git a/Corona-Warn-App/src/main/res/layout/include_information_details.xml b/Corona-Warn-App/src/main/res/layout/include_information_details.xml
index 066967d11..36d411bdf 100644
--- a/Corona-Warn-App/src/main/res/layout/include_information_details.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_information_details.xml
@@ -7,6 +7,8 @@
 
         <import type="de.rki.coronawarnapp.util.formatter.FormatterHelper" />
 
+        <import type="de.rki.coronawarnapp.util.formatter.FormatterAccessibilityHelper" />
+
         <variable
             name="illustration"
             type="android.graphics.drawable.Drawable" />
@@ -32,7 +34,8 @@
             android:id="@+id/information_details_header_illustration"
             android:layout_width="0dp"
             android:layout_height="wrap_content"
-            android:contentDescription="@{illustrationDescription}"
+            android:contentDescription="@{FormatterAccessibilityHelper.formatImage(illustrationDescription)}"
+            android:focusable="true"
             android:src="@{illustration}"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
@@ -50,6 +53,8 @@
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_small"
+                android:accessibilityHeading="true"
+                android:focusable="true"
                 android:text="@{headline}"
                 android:visibility="@{FormatterHelper.formatVisibilityText(headline)}"
                 app:layout_constraintEnd_toEndOf="@id/guideline_end"
@@ -63,6 +68,7 @@
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_medium"
+                android:focusable="true"
                 android:text="@{body}"
                 android:visibility="@{FormatterHelper.formatVisibilityText(body)}"
                 app:layout_constraintEnd_toEndOf="@id/guideline_end"
diff --git a/Corona-Warn-App/src/main/res/layout/include_main_faq_card.xml b/Corona-Warn-App/src/main/res/layout/include_main_faq_card.xml
index 17d2229e0..fbb3dc3ea 100644
--- a/Corona-Warn-App/src/main/res/layout/include_main_faq_card.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_main_faq_card.xml
@@ -5,6 +5,7 @@
     <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/main_card"
         style="@style/card"
+        android:contentDescription="@string/hint_external_webpage"
         android:layout_width="match_parent"
         android:layout_height="wrap_content">
 
@@ -30,6 +31,7 @@
             <TextView
                 android:id="@+id/main_card_header_headline"
                 style="@style/headline5"
+                android:accessibilityHeading="true"
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:layout_marginStart="@dimen/spacing_small"
diff --git a/Corona-Warn-App/src/main/res/layout/include_main_overview_glossary.xml b/Corona-Warn-App/src/main/res/layout/include_main_overview_glossary.xml
index ca4ae1189..d4c833a58 100644
--- a/Corona-Warn-App/src/main/res/layout/include_main_overview_glossary.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_main_overview_glossary.xml
@@ -33,6 +33,7 @@
             <TextView
                 android:id="@+id/main_overview_glossary_subtitle"
                 style="@style/headline6"
+                android:accessibilityHeading="true"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:text="@{subtitle}"
diff --git a/Corona-Warn-App/src/main/res/layout/include_main_overview_segment.xml b/Corona-Warn-App/src/main/res/layout/include_main_overview_segment.xml
index 7fb81c9ee..c388fa4aa 100644
--- a/Corona-Warn-App/src/main/res/layout/include_main_overview_segment.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_main_overview_segment.xml
@@ -44,6 +44,7 @@
             <TextView
                 android:id="@+id/main_overview_segment_subtitle"
                 style="@style/headline5"
+                android:accessibilityHeading="true"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:focusable="false"
diff --git a/Corona-Warn-App/src/main/res/layout/include_navigation_row.xml b/Corona-Warn-App/src/main/res/layout/include_navigation_row.xml
index 0092de70b..0254b11d3 100644
--- a/Corona-Warn-App/src/main/res/layout/include_navigation_row.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_navigation_row.xml
@@ -31,6 +31,7 @@
             style="@style/row"
             android:layout_width="0dp"
             android:layout_height="wrap_content"
+            android:focusable="true"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent">
@@ -41,7 +42,7 @@
                 android:layout_width="@dimen/icon_size_settings"
                 android:layout_height="@dimen/icon_size_settings"
                 android:layout_marginEnd="@dimen/spacing_small"
-                android:contentDescription="@string/lorem_ipsum"
+                android:importantForAccessibility="no"
                 android:src="@{icon}"
                 android:visibility="@{FormatterHelper.formatVisibilityIcon(icon)}"
                 app:layout_constraintBottom_toBottomOf="parent"
diff --git a/Corona-Warn-App/src/main/res/layout/include_onboarding.xml b/Corona-Warn-App/src/main/res/layout/include_onboarding.xml
index 03d9af5c8..c9fa1240c 100644
--- a/Corona-Warn-App/src/main/res/layout/include_onboarding.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_onboarding.xml
@@ -7,6 +7,8 @@
 
         <import type="de.rki.coronawarnapp.util.formatter.FormatterHelper" />
 
+        <import type="de.rki.coronawarnapp.util.formatter.FormatterAccessibilityHelper" />
+
         <variable
             name="illustration"
             type="android.graphics.drawable.Drawable" />
@@ -47,15 +49,15 @@
 
         <androidx.constraintlayout.widget.ConstraintLayout
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:focusable="true">
+            android:layout_height="wrap_content">
 
             <ImageView
                 android:id="@+id/onboarding_illustration"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
-                android:contentDescription="@{illustrationDescription}"
+                android:contentDescription="@{FormatterAccessibilityHelper.formatImage(illustrationDescription)}"
                 android:src="@{illustration}"
+                android:focusable="true"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toTopOf="parent"
@@ -64,11 +66,12 @@
             <TextView
                 android:id="@+id/onboarding_headline"
                 style="@style/headline4"
+                android:accessibilityHeading="true"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_normal"
-                android:focusable="false"
                 android:text="@{headline}"
+                android:focusable="true"
                 app:layout_constraintEnd_toEndOf="@id/guideline_end"
                 app:layout_constraintStart_toStartOf="@id/guideline_start"
                 app:layout_constraintTop_toBottomOf="@+id/onboarding_illustration"
@@ -80,9 +83,9 @@
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_normal"
-                android:focusable="false"
                 android:text="@{subtitle}"
                 android:visibility="@{FormatterHelper.formatVisibilityText(subtitle)}"
+                android:focusable="true"
                 app:layout_constraintEnd_toEndOf="@id/guideline_end"
                 app:layout_constraintStart_toStartOf="@id/guideline_start"
                 app:layout_constraintTop_toBottomOf="@+id/onboarding_headline"
@@ -94,8 +97,8 @@
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_normal"
-                android:focusable="false"
                 android:text="@{body}"
+                android:focusable="true"
                 app:layout_constraintEnd_toEndOf="@id/guideline_end"
                 app:layout_constraintStart_toStartOf="@id/guideline_start"
                 app:layout_constraintTop_toBottomOf="@+id/onboarding_subtitle"
@@ -107,9 +110,9 @@
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_normal"
-                android:focusable="false"
                 android:text="@{bodyEmphasized}"
                 android:visibility="@{FormatterHelper.formatVisibilityText(bodyEmphasized)}"
+                android:focusable="true"
                 app:layout_constraintEnd_toEndOf="@id/guideline_end"
                 app:layout_constraintStart_toStartOf="@id/guideline_start"
                 app:layout_constraintTop_toBottomOf="@id/onboarding_body"
@@ -124,6 +127,7 @@
                 android:visibility="@{FormatterHelper.formatVisibilityText(headlineCard)}"
                 app:body="@{bodyCard}"
                 app:headline="@{headlineCard}"
+                android:focusable="true"
                 app:layout_constraintEnd_toStartOf="@+id/guideline_card_end"
                 app:layout_constraintStart_toStartOf="@+id/guideline_card_start"
                 app:layout_constraintTop_toBottomOf="@+id/onboarding_body_emphasized" />
diff --git a/Corona-Warn-App/src/main/res/layout/include_privacy_card.xml b/Corona-Warn-App/src/main/res/layout/include_privacy_card.xml
index fa592e659..6da5f3ec6 100644
--- a/Corona-Warn-App/src/main/res/layout/include_privacy_card.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_privacy_card.xml
@@ -13,9 +13,11 @@
         <TextView
             android:id="@+id/privacy_card_title"
             style="@style/headline6"
+            android:accessibilityHeading="true"
             android:layout_width="@dimen/match_constraint"
             android:layout_height="wrap_content"
             android:text="@string/submission_positive_other_warning_privacy_title"
+            android:focusable="true"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
@@ -27,6 +29,7 @@
             android:layout_height="wrap_content"
             android:layout_marginTop="@dimen/spacing_normal"
             android:text="@string/submission_positive_other_warning_privacy_body"
+            android:focusable="true"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/privacy_card_title" />
diff --git a/Corona-Warn-App/src/main/res/layout/include_risk_card_header.xml b/Corona-Warn-App/src/main/res/layout/include_risk_card_header.xml
index 4d85a537f..fccd1ae0c 100644
--- a/Corona-Warn-App/src/main/res/layout/include_risk_card_header.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_risk_card_header.xml
@@ -25,6 +25,7 @@
 
         <TextView
             android:id="@+id/risk_card_header_headline"
+            android:accessibilityHeading="true"
             style="@style/headline5"
             android:layout_width="0dp"
             android:layout_height="wrap_content"
diff --git a/Corona-Warn-App/src/main/res/layout/include_risk_details_behavior_row.xml b/Corona-Warn-App/src/main/res/layout/include_risk_details_behavior_row.xml
index a58fad413..3049fb21f 100644
--- a/Corona-Warn-App/src/main/res/layout/include_risk_details_behavior_row.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_risk_details_behavior_row.xml
@@ -55,7 +55,6 @@
             android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_marginStart="@dimen/spacing_small"
-            android:focusable="false"
             android:text="@{body}"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
diff --git a/Corona-Warn-App/src/main/res/layout/include_settings_switch_row.xml b/Corona-Warn-App/src/main/res/layout/include_settings_switch_row.xml
index 1b8527107..8fc6534d9 100644
--- a/Corona-Warn-App/src/main/res/layout/include_settings_switch_row.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_settings_switch_row.xml
@@ -41,6 +41,7 @@
             style="@style/row"
             android:layout_width="0dp"
             android:layout_height="wrap_content"
+            android:focusable="true"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent">
@@ -71,6 +72,7 @@
                     android:layout_width="0dp"
                     android:layout_height="wrap_content"
                     android:layout_marginTop="@dimen/spacing_mega_tiny"
+                    android:accessibilityLiveRegion="assertive"
                     android:text="@{statusText}"
                     app:layout_constraintBottom_toBottomOf="parent"
                     app:layout_constraintEnd_toEndOf="parent"
@@ -85,6 +87,7 @@
                 android:layout_height="wrap_content"
                 android:checked="@{status}"
                 android:enabled="@{enabled}"
+                android:contentDescription="@{FormatterSettingsHelper.formatSwitchContentDescription(subtitle, statusText)}"
                 android:theme="@style/switchBase"
                 app:layout_constraintBottom_toBottomOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"
diff --git a/Corona-Warn-App/src/main/res/layout/include_step_entry_simple_body.xml b/Corona-Warn-App/src/main/res/layout/include_step_entry_simple_body.xml
index f1b938eca..b10fe9614 100644
--- a/Corona-Warn-App/src/main/res/layout/include_step_entry_simple_body.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_step_entry_simple_body.xml
@@ -8,6 +8,7 @@
     <TextView
         android:id="@+id/simple_step_entry_title"
         style="@style/headline6"
+        android:accessibilityHeading="true"
         android:layout_width="@dimen/match_constraint"
         android:layout_height="wrap_content"
         app:layout_constraintEnd_toEndOf="parent"
diff --git a/Corona-Warn-App/src/main/res/layout/include_submission_contact.xml b/Corona-Warn-App/src/main/res/layout/include_submission_contact.xml
index 4394189dd..110933b75 100644
--- a/Corona-Warn-App/src/main/res/layout/include_submission_contact.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_submission_contact.xml
@@ -8,14 +8,15 @@
 
         <androidx.constraintlayout.widget.ConstraintLayout
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:focusable="true">
+            android:layout_height="wrap_content">
 
             <ImageView
                 android:id="@+id/submission_contact_illustration"
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:src="@drawable/ic_submission_illustration_hotline"
+                android:contentDescription="@string/information_contact_illustration_description"
+                android:focusable="true"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toTopOf="parent" />
@@ -26,8 +27,8 @@
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_small"
-                android:focusable="false"
                 android:text="@string/submission_contact_body"
+                android:focusable="true"
                 app:layout_constraintEnd_toStartOf="@+id/guideline_end"
                 app:layout_constraintStart_toStartOf="@+id/guideline_start"
                 app:layout_constraintTop_toBottomOf="@id/submission_contact_illustration" />
@@ -35,11 +36,12 @@
             <TextView
                 android:id="@+id/submission_contact_headline"
                 style="@style/headline5"
+                android:accessibilityHeading="true"
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_medium"
-                android:focusable="false"
                 android:text="@string/submission_contact_headline"
+                android:focusable="true"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="@id/guideline_start"
                 app:layout_constraintTop_toBottomOf="@+id/submission_contact_body" />
@@ -49,6 +51,7 @@
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_normal"
+                android:focusable="true"
                 android:contentDescription="@string/submission_contact_step_1_content"
                 app:layout_constraintEnd_toStartOf="@+id/guideline_end"
                 app:layout_constraintStart_toStartOf="@+id/guideline_start"
@@ -74,6 +77,7 @@
                     <TextView
                         android:id="@+id/submission_contact_step_1_number"
                         style="@style/headline5"
+                        android:accessibilityHeading="true"
                         android:layout_width="@dimen/match_constraint"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="@dimen/spacing_small"
@@ -102,6 +106,7 @@
                 android:id="@+id/submission_contact_step_2"
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
+                android:focusable="true"
                 android:contentDescription="@string/submission_contact_step_2_content"
                 app:layout_constraintEnd_toStartOf="@+id/guideline_end"
                 app:layout_constraintStart_toStartOf="@+id/guideline_start"
diff --git a/Corona-Warn-App/src/main/res/layout/include_submission_dispatcher.xml b/Corona-Warn-App/src/main/res/layout/include_submission_dispatcher.xml
index 6cca2badd..ace4ba274 100644
--- a/Corona-Warn-App/src/main/res/layout/include_submission_dispatcher.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_submission_dispatcher.xml
@@ -19,6 +19,7 @@
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_normal"
                 android:text="@string/submission_dispatcher_subheadline"
+                android:focusable="true"
                 app:layout_constraintEnd_toStartOf="@+id/guideline_end"
                 app:layout_constraintStart_toStartOf="@+id/guideline_start"
                 app:layout_constraintTop_toTopOf="parent" />
@@ -44,6 +45,8 @@
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_small"
+                android:clickable="true"
+                android:focusable="true"
                 app:body="@{@string/submission_dispatcher_tan_code_card_text}"
                 app:headline="@{@string/submission_dispatcher_card_tan_code}"
                 app:illustration="@{@drawable/ic_submission_illustration_tan_code_card}"
@@ -57,6 +60,8 @@
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_small"
+                android:clickable="true"
+                android:focusable="true"
                 app:body="@{@string/submission_dispatcher_tan_tele_card_text}"
                 app:headline="@{@string/submission_dispatcher_card_tan_tele}"
                 app:illustration="@{@drawable/ic_submission_illustration_tan_hotline_card}"
diff --git a/Corona-Warn-App/src/main/res/layout/include_submission_done.xml b/Corona-Warn-App/src/main/res/layout/include_submission_done.xml
index 683bd1f3f..a3cdc8db7 100644
--- a/Corona-Warn-App/src/main/res/layout/include_submission_done.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_submission_done.xml
@@ -16,7 +16,7 @@
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:contentDescription="@string/submission_done_illustration_description"
-                android:importantForAccessibility="no"
+                android:focusable="true"
                 android:src="@drawable/ic_submission_illustration_thanks"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
@@ -25,10 +25,12 @@
             <TextView
                 android:id="@+id/submission_done_headline"
                 style="@style/headline4"
+                android:accessibilityHeading="true"
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_normal"
                 android:text="@string/submission_done_title"
+                android:focusable="true"
                 app:layout_constraintEnd_toEndOf="@id/guideline_end"
                 app:layout_constraintStart_toStartOf="@id/guideline_start"
                 app:layout_constraintTop_toBottomOf="@+id/submission_done_hero_illustration" />
diff --git a/Corona-Warn-App/src/main/res/layout/include_submission_done_content.xml b/Corona-Warn-App/src/main/res/layout/include_submission_done_content.xml
index 10e9634c8..a988e9685 100644
--- a/Corona-Warn-App/src/main/res/layout/include_submission_done_content.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_submission_done_content.xml
@@ -22,6 +22,7 @@
             android:layout_width="@dimen/match_constraint"
             android:layout_height="wrap_content"
             android:text="@string/submission_done_body"
+            android:focusable="true"
             app:layout_constraintEnd_toEndOf="@+id/guideline_end"
             app:layout_constraintStart_toStartOf="@+id/guideline_start"
             app:layout_constraintTop_toTopOf="parent" />
@@ -29,10 +30,12 @@
         <TextView
             android:id="@+id/submission_done_subtitle"
             style="@style/headline5"
+            android:accessibilityHeading="true"
             android:layout_width="@dimen/match_constraint"
             android:layout_height="wrap_content"
             android:layout_marginTop="@dimen/spacing_normal"
             android:text="@string/submission_done_subtitle"
+            android:focusable="true"
             app:layout_constraintEnd_toEndOf="@+id/guideline_end"
             app:layout_constraintStart_toStartOf="@+id/guideline_start"
             app:layout_constraintTop_toBottomOf="@+id/submission_done_text" />
diff --git a/Corona-Warn-App/src/main/res/layout/include_submission_done_further_info.xml b/Corona-Warn-App/src/main/res/layout/include_submission_done_further_info.xml
index 708f6a0a7..9b7f90340 100644
--- a/Corona-Warn-App/src/main/res/layout/include_submission_done_further_info.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_submission_done_further_info.xml
@@ -13,8 +13,10 @@
         <TextView
             android:id="@+id/further_info_title"
             style="@style/headline5"
+            android:accessibilityHeading="true"
             android:layout_width="@dimen/match_constraint"
             android:layout_height="wrap_content"
+            android:focusable="true"
             android:text="@string/submission_done_further_info_title"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
@@ -24,6 +26,7 @@
             android:id="@+id/further_info_text"
             android:layout_width="@dimen/match_constraint"
             android:layout_height="wrap_content"
+            android:focusable="true"
             android:layout_marginTop="@dimen/spacing_normal"
             app:entries="@array/submission_done_further_info_bullet_points"
             app:layout_constraintEnd_toEndOf="parent"
diff --git a/Corona-Warn-App/src/main/res/layout/include_submission_intro.xml b/Corona-Warn-App/src/main/res/layout/include_submission_intro.xml
index 11f872f44..47cca7183 100644
--- a/Corona-Warn-App/src/main/res/layout/include_submission_intro.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_submission_intro.xml
@@ -8,16 +8,15 @@
 
         <androidx.constraintlayout.widget.ConstraintLayout
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:focusable="true">
+            android:layout_height="wrap_content">
 
             <ImageView
                 android:id="@+id/submission_intro_hero_illustration"
-                contentDescription="@{@string/submission_intro_illustration_description}"
+                android:contentDescription="@{@string/submission_intro_illustration_description}"
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
-                android:importantForAccessibility="no"
                 android:src="@drawable/ic_illustration_test"
+                android:focusable="true"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toTopOf="parent" />
@@ -25,11 +24,12 @@
             <TextView
                 android:id="@+id/submission_intro_headline"
                 style="@style/headline4"
+                android:accessibilityHeading="true"
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_normal"
-                android:focusable="false"
                 android:text="@string/submission_intro_headline"
+                android:focusable="true"
                 app:layout_constraintEnd_toEndOf="@id/guideline_end"
                 app:layout_constraintStart_toStartOf="@id/guideline_start"
                 app:layout_constraintTop_toBottomOf="@+id/submission_intro_hero_illustration" />
@@ -40,8 +40,8 @@
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_normal"
-                android:focusable="false"
                 android:text="@string/submission_intro_text"
+                android:focusable="true"
                 app:layout_constraintEnd_toEndOf="@id/guideline_end"
                 app:layout_constraintStart_toStartOf="@id/guideline_start"
                 app:layout_constraintTop_toBottomOf="@+id/submission_intro_headline" />
@@ -49,9 +49,9 @@
             <de.rki.coronawarnapp.ui.view.BulletPointList
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
-                android:focusable="false"
                 android:paddingBottom="@dimen/spacing_normal"
                 app:entries="@array/submission_intro_bullet_points"
+                android:focusable="true"
                 app:layout_constraintEnd_toEndOf="@id/guideline_end"
                 app:layout_constraintStart_toStartOf="@id/guideline_start"
                 app:layout_constraintTop_toBottomOf="@id/submission_intro_text" />
diff --git a/Corona-Warn-App/src/main/res/layout/include_submission_positive_other_warning.xml b/Corona-Warn-App/src/main/res/layout/include_submission_positive_other_warning.xml
index d2c584458..46a38d632 100644
--- a/Corona-Warn-App/src/main/res/layout/include_submission_positive_other_warning.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_submission_positive_other_warning.xml
@@ -23,11 +23,13 @@
 
             <TextView
                 android:id="@+id/submission_positive_other_warning_headline"
+                android:accessibilityHeading="true"
                 style="@style/headline5"
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_normal"
                 android:text="@string/submission_positive_other_warning_headline"
+                android:focusable="true"
                 app:layout_constraintEnd_toEndOf="@id/guideline_end"
                 app:layout_constraintStart_toStartOf="@id/guideline_start"
                 app:layout_constraintTop_toBottomOf="@+id/submission_positive_other_warning_hero_illustration" />
@@ -38,6 +40,7 @@
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_normal"
+                android:focusable="true"
                 android:text="@string/submission_positive_other_warning_body"
                 app:layout_constraintEnd_toEndOf="@id/guideline_end"
                 app:layout_constraintStart_toStartOf="@id/guideline_start"
diff --git a/Corona-Warn-App/src/main/res/layout/include_submission_status_card_content.xml b/Corona-Warn-App/src/main/res/layout/include_submission_status_card_content.xml
index 6d11a80ed..9bb43b3cf 100644
--- a/Corona-Warn-App/src/main/res/layout/include_submission_status_card_content.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_submission_status_card_content.xml
@@ -22,6 +22,7 @@
         <TextView
             android:id="@+id/submission_status_card_content_title"
             style="@style/headline5"
+            android:accessibilityHeading="true"
             android:layout_width="@dimen/match_constraint"
             android:layout_height="wrap_content"
             android:layout_marginStart="@dimen/card_padding"
diff --git a/Corona-Warn-App/src/main/res/layout/include_submission_status_card_done.xml b/Corona-Warn-App/src/main/res/layout/include_submission_status_card_done.xml
index c6a968cec..44aae6bb8 100644
--- a/Corona-Warn-App/src/main/res/layout/include_submission_status_card_done.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_submission_status_card_done.xml
@@ -12,6 +12,7 @@
         <TextView
             android:id="@+id/submission_done_card_title"
             style="@style/headline5"
+            android:accessibilityHeading="true"
             android:layout_width="@dimen/match_constraint"
             android:layout_height="wrap_content"
             android:layout_marginStart="@dimen/spacing_normal"
diff --git a/Corona-Warn-App/src/main/res/layout/include_submission_status_card_fetching.xml b/Corona-Warn-App/src/main/res/layout/include_submission_status_card_fetching.xml
index 9b8209f5d..46c1d6cb6 100644
--- a/Corona-Warn-App/src/main/res/layout/include_submission_status_card_fetching.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_submission_status_card_fetching.xml
@@ -12,6 +12,7 @@
         <TextView
             android:id="@+id/submission_status_card_fetching_title"
             style="@style/headline5"
+            android:accessibilityHeading="true"
             android:layout_width="@dimen/match_constraint"
             android:layout_height="wrap_content"
             android:text="@string/submission_status_card_title_fetching"
diff --git a/Corona-Warn-App/src/main/res/layout/include_submission_status_card_positive.xml b/Corona-Warn-App/src/main/res/layout/include_submission_status_card_positive.xml
index 702b27048..0b1b0a1ca 100644
--- a/Corona-Warn-App/src/main/res/layout/include_submission_status_card_positive.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_submission_status_card_positive.xml
@@ -22,6 +22,7 @@
         <TextView
             android:id="@+id/submission_status_card_positive_title"
             style="@style/headline5"
+            android:accessibilityHeading="true"
             android:layout_width="@dimen/match_constraint"
             android:layout_height="wrap_content"
             android:layout_marginEnd="@dimen/spacing_small"
@@ -64,6 +65,7 @@
         <TextView
             android:id="@+id/submission_status_card_positive_result_subtitle"
             style="@style/headline5"
+            android:accessibilityHeading="true"
             android:layout_width="@dimen/match_constraint"
             android:layout_height="wrap_content"
             android:layout_marginTop="@dimen/spacing_normal"
diff --git a/Corona-Warn-App/src/main/res/layout/include_submission_status_card_unregistered.xml b/Corona-Warn-App/src/main/res/layout/include_submission_status_card_unregistered.xml
index 491428bf7..01fa72d8d 100644
--- a/Corona-Warn-App/src/main/res/layout/include_submission_status_card_unregistered.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_submission_status_card_unregistered.xml
@@ -13,6 +13,7 @@
         <TextView
             android:id="@+id/submission_status_card_unregistered_title"
             style="@style/headline5"
+            android:accessibilityHeading="true"
             android:layout_width="@dimen/match_constraint"
             android:layout_height="wrap_content"
             android:layout_marginStart="@dimen/card_padding"
diff --git a/Corona-Warn-App/src/main/res/layout/include_submission_test_result.xml b/Corona-Warn-App/src/main/res/layout/include_submission_test_result.xml
index 1baf0257a..a479ec1cc 100644
--- a/Corona-Warn-App/src/main/res/layout/include_submission_test_result.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_submission_test_result.xml
@@ -35,6 +35,7 @@
             <TextView
                 android:id="@+id/submission_test_result_subtitle"
                 style="@style/headline5"
+                android:accessibilityHeading="true"
                 android:layout_width="@dimen/match_constraint"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/spacing_medium"
diff --git a/Corona-Warn-App/src/main/res/layout/include_submission_test_result_negative_further_info.xml b/Corona-Warn-App/src/main/res/layout/include_submission_test_result_negative_further_info.xml
index 7beff057f..c5991128a 100644
--- a/Corona-Warn-App/src/main/res/layout/include_submission_test_result_negative_further_info.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_submission_test_result_negative_further_info.xml
@@ -13,6 +13,7 @@
         <TextView
             android:id="@+id/further_info_title"
             style="@style/headline5"
+            android:accessibilityHeading="true"
             android:layout_width="@dimen/match_constraint"
             android:layout_height="wrap_content"
             android:text="@string/test_result_card_negative_further_info_title"
diff --git a/Corona-Warn-App/src/main/res/layout/include_test_result_card.xml b/Corona-Warn-App/src/main/res/layout/include_test_result_card.xml
index d0704542a..7e2140709 100644
--- a/Corona-Warn-App/src/main/res/layout/include_test_result_card.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_test_result_card.xml
@@ -20,11 +20,13 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:background="@drawable/card_dark"
+        android:focusable="true"
         android:padding="@dimen/card_padding">
 
         <TextView
             android:id="@+id/test_result_card_headline"
             style="@style/body2"
+            android:accessibilityHeading="true"
             android:layout_width="@dimen/match_constraint"
             android:layout_height="wrap_content"
             android:layout_marginEnd="@dimen/spacing_small"
diff --git a/Corona-Warn-App/src/main/res/layout/include_test_result_card_positive.xml b/Corona-Warn-App/src/main/res/layout/include_test_result_card_positive.xml
index e6f3bf2a7..23a5b5500 100644
--- a/Corona-Warn-App/src/main/res/layout/include_test_result_card_positive.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_test_result_card_positive.xml
@@ -5,11 +5,13 @@
 
     <androidx.constraintlayout.widget.ConstraintLayout
         android:layout_width="match_parent"
-        android:layout_height="wrap_content">
+        android:layout_height="wrap_content"
+        android:focusable="true">
 
         <TextView
             android:id="@+id/test_result_card_positive_title"
             style="@style/headline6"
+            android:accessibilityHeading="true"
             android:layout_width="@dimen/match_constraint"
             android:layout_height="wrap_content"
             android:layout_marginEnd="@dimen/spacing_small"
diff --git a/Corona-Warn-App/src/main/res/layout/include_tracing_status_card.xml b/Corona-Warn-App/src/main/res/layout/include_tracing_status_card.xml
index 9d5c53f07..e28b2fc32 100644
--- a/Corona-Warn-App/src/main/res/layout/include_tracing_status_card.xml
+++ b/Corona-Warn-App/src/main/res/layout/include_tracing_status_card.xml
@@ -6,6 +6,8 @@
 
         <import type="de.rki.coronawarnapp.util.formatter.FormatterHelper" />
 
+        <import type="de.rki.coronawarnapp.util.formatter.FormatterAccessibilityHelper" />
+
         <import type="android.view.View" />
 
         <variable
@@ -35,7 +37,8 @@
         android:id="@+id/tracing_status_card"
         style="@style/cardTracing"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content">
+        android:layout_height="wrap_content"
+        android:focusable="true">
 
         <androidx.constraintlayout.widget.ConstraintLayout
             android:id="@+id/tracing_status_card_header"
@@ -48,10 +51,12 @@
             <TextView
                 android:id="@+id/tracing_status_card_header_headline"
                 style="@style/headline6"
+                android:accessibilityHeading="true"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_marginEnd="@dimen/spacing_small"
                 android:text="@{headline}"
+                android:contentDescription="@{headline}"
                 app:layout_constraintBottom_toBottomOf="parent"
                 app:layout_constraintEnd_toStartOf="@+id/tracing_status_card_header_icon"
                 app:layout_constraintStart_toStartOf="parent"
@@ -62,6 +67,7 @@
                 android:layout_width="@dimen/icon_size_main_card_end"
                 android:layout_height="@dimen/icon_size_main_card_end"
                 android:importantForAccessibility="no"
+                android:focusable="false"
                 android:src="@{icon}"
                 android:visibility="@{FormatterHelper.formatVisibilityIcon(icon)}"
                 app:layout_constraintEnd_toEndOf="parent"
diff --git a/Corona-Warn-App/src/main/res/values-de/strings.xml b/Corona-Warn-App/src/main/res/values-de/strings.xml
index a6aedf92d..dfc5f60b5 100644
--- a/Corona-Warn-App/src/main/res/values-de/strings.xml
+++ b/Corona-Warn-App/src/main/res/values-de/strings.xml
@@ -182,7 +182,7 @@
     <string name="main_about_headline">"Häufige Fragen"</string>
     <!-- XTXT: main, explains faq on card -->
     <string name="main_about_body">"Hier finden Sie Antworten auf häufig gestellte Fragen rund um die Corona-Warn-App."</string>
-    <!-- NOTR -->
+    <!-- XTXT: External Website for FAQ, has to be translated -->
     <string name="main_about_link">"https://www.bundesregierung.de/corona-warn-app-faq"</string>
     <!-- XACT: Opens external webpage -->
     <string name="hint_external_webpage">"Häufige Fragen, hier finden Sie Antworten auf häufig gestellte Fragen rund um die Corona-Warn-App. Aufruf externer Infos im Web."</string>
diff --git a/Corona-Warn-App/src/main/res/values/strings.xml b/Corona-Warn-App/src/main/res/values/strings.xml
index 8607dc7e6..4019ad94d 100644
--- a/Corona-Warn-App/src/main/res/values/strings.xml
+++ b/Corona-Warn-App/src/main/res/values/strings.xml
@@ -147,6 +147,8 @@
     <string name="accessibility_menu">Menu</string>
     <!-- XACT: menu description for screen readers -->
     <string name="accessibility_close">Schließen</string>
+    <!-- XACT: menu description for screen readers -->
+    <string name="accessibility_logo">Corona Warn-App</string>
 
     <!-- ####################################
                      Menu
@@ -411,7 +413,7 @@
     <!-- XACT: onboarding(together) - illustraction description, header image -->
     <string name="onboarding_illustration_description">Eine vielfältige Gruppe in einer Stadt benutzt Smartphones.</string>
     <!-- XACT: Onboarding (privacy) page title -->
-    <string name="onboarding_privacy_accessibility_title">Einführung Seite 2 von 5. Datenschutz</string>
+    <string name="onboarding_privacy_accessibility_title">Einführung Seite 2 von 5. Datenschutz. Es folgt ein Langtext. Eine statische Weitertaste steht am unteren Rand des Bildschirms zur Verfügung. </string>
     <!-- XHED: onboarding(privacy) - title -->
     <string name="onboarding_privacy_headline">Datenschutz</string>
 
@@ -703,6 +705,7 @@
     <string name="submission_qr_code_scan_invalid_dialog_button_negative">Abbrechen</string>
 
     <!-- QR Code Scan Screen -->
+    <string name="submission_qr_code_scan_title">QR-Code Scan View Positionieren sie den QR-Code in den Rahmen</string>
     <!-- YTXT: instruction text for QR code scanning  -->
     <string name="submission_qr_code_scan_body">Positionieren Sie den QR Code in den Rahmen</string>
 
@@ -893,9 +896,9 @@
     <!-- XACT: Submission contact page title -->
     <string name="submission_contact_accessibility_title">TAN Anfrage per Telefonanruf</string>
     <!-- XACT: Content Description for submission contact step 1, number has to sync with the display number -->
-    <string name="submission_contact_step_1_content">Im ersten Schritt Hotline anrufen und TAN erfragen, unter der Rufnummer +49 (0) 800 7540002. Die Öffnungszeiten sind Montag bis Freitag von 8 bis 22 Uhr sowie Samstag und Sonntag von 10 bis 22 Uhr. Es gelten die Preise ihres Telefonanbieters.</string>
+    <string name="submission_contact_step_1_content">Erster Schritt: Hotline anrufen und TAN erfragen, unter der Rufnummer +49 (0) 800 7540002. Die Öffnungszeiten sind Montag bis Freitag von 8 bis 10 Uhr abends, sowie Samstag und Sonntag von 10 bis 10 Uhr abends. Es gelten die Preise ihres Telefonanbieters.</string>
     <!-- XACT: Content Description for submission contact step 2 -->
-    <string name="submission_contact_step_2_content">Im Zweiten Schritt registrieren Sie den Test per TAN-Eingabe in der App</string>
+    <string name="submission_contact_step_2_content">Zweiter Schritt: Registrieren Sie den Test per TAN-Eingabe in der App</string>
 
     <!-- Submission Status Card -->
     <!-- XHED: Page title for the various submission status: fetching -->
@@ -971,6 +974,10 @@
     <string name="button_share">Teilen</string>
     <!-- XACT: menu button-->
     <string name="button_menu">Menü</string>
+    <!-- XACT: Accessibility needs a suffix to strings, to reduce the amount of manual translations this string is appended to accessibility button strings, e.g. "Zurück Taste", "Taste" is the default used by android in german -->
+    <string name="suffix_button">Taste</string>
+    <!-- XACT: Accessibility needs a suffix to strings, to reduce the amount of manual translations this string is appended to accessibility content description strings for images, e.g. "Eine Gruppe von... Bild" -->
+    <string name="suffix_image">Bild</string>
 
     <!-- ####################################
                Business Error Messages
-- 
GitLab