Skip to content

Commit f4d303c

Browse files
Merge pull request #964 from StepicOrg/feature/APPS_3633_accessbility_analytics
APPS-3633: Accessibility analytics
2 parents a962f2a + ab510bb commit f4d303c

3 files changed

Lines changed: 17 additions & 7 deletions

File tree

app/src/main/java/org/stepic/droid/analytic/AmplitudeAnalytic.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ interface AmplitudeAnalytic {
1313
const val IS_NIGHT_MODE_ENABLED = "is_night_mode_enabled"
1414
const val IS_AR_SUPPORTED = "is_ar_supported"
1515
const val IS_GOOGLE_SERVICES_AVAILABLE = "is_google_services_available"
16+
const val ACCESSIBILITY_FONT_SCALE = "accessibility_font_scale"
17+
const val ACCESSIBILITY_SCREEN_READER_ENABLED = "accessibility_screen_reader_enabled"
1618
}
1719

1820
object Launch {

app/src/main/java/org/stepic/droid/analytic/AnalyticImpl.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ import com.yandex.metrica.profile.UserProfile
1818
import org.json.JSONObject
1919
import org.stepic.droid.base.App
2020
import org.stepic.droid.configuration.Config
21-
import org.stepic.droid.configuration.RemoteConfig
2221
import org.stepic.droid.di.AppSingleton
2322
import org.stepic.droid.util.isARSupported
23+
import org.stepic.droid.util.isScreenReaderOn
2424
import org.stepik.android.domain.base.analytic.AnalyticEvent
2525
import org.stepik.android.domain.base.analytic.AnalyticSource
2626
import org.stepik.android.domain.base.analytic.UserProperty
@@ -66,17 +66,23 @@ constructor(
6666
.set(AmplitudeAnalytic.Properties.PUSH_PERMISSION, if (isNotificationsEnabled) "granted" else "not_granted")
6767
.set(AmplitudeAnalytic.Properties.IS_NIGHT_MODE_ENABLED, context.isNightModeEnabled().toString())
6868
.set(AmplitudeAnalytic.Properties.IS_AR_SUPPORTED, context.isARSupported().toString())
69+
.set(AmplitudeAnalytic.Properties.ACCESSIBILITY_FONT_SCALE, context.resources.configuration.fontScale.toString())
70+
.set(AmplitudeAnalytic.Properties.ACCESSIBILITY_SCREEN_READER_ENABLED, context.isScreenReaderOn().toString())
6971
)
7072

7173
updateYandexUserProfile {
7274
apply(Attribute.notificationsEnabled().withValue(isNotificationsEnabled))
7375
apply(Attribute.customBoolean(AmplitudeAnalytic.Properties.IS_NIGHT_MODE_ENABLED).withValue(context.isNightModeEnabled()))
7476
apply(Attribute.customBoolean(AmplitudeAnalytic.Properties.IS_AR_SUPPORTED).withValue(context.isARSupported()))
77+
apply(Attribute.customNumber(AmplitudeAnalytic.Properties.ACCESSIBILITY_FONT_SCALE).withValue(context.resources.configuration.fontScale.toDouble()))
78+
apply(Attribute.customBoolean(AmplitudeAnalytic.Properties.ACCESSIBILITY_SCREEN_READER_ENABLED).withValue(context.isScreenReaderOn()))
7579
}
7680

7781
setFirebaseUserProperty(AmplitudeAnalytic.Properties.PUSH_PERMISSION, if (isNotificationsEnabled) "granted" else "not_granted")
7882
setFirebaseUserProperty(AmplitudeAnalytic.Properties.IS_NIGHT_MODE_ENABLED, context.isNightModeEnabled().toString())
7983
setFirebaseUserProperty(AmplitudeAnalytic.Properties.IS_AR_SUPPORTED, context.isARSupported().toString())
84+
setFirebaseUserProperty(AmplitudeAnalytic.Properties.ACCESSIBILITY_FONT_SCALE, context.resources.configuration.fontScale.toString())
85+
setFirebaseUserProperty(AmplitudeAnalytic.Properties.ACCESSIBILITY_SCREEN_READER_ENABLED, context.isScreenReaderOn().toString())
8086
}
8187

8288
// Amplitude properties

app/src/main/java/org/stepic/droid/util/ContextExtensions.kt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
11
package org.stepic.droid.util
22

3+
import android.accessibilityservice.AccessibilityServiceInfo
34
import android.content.ClipData
45
import android.content.ClipboardManager
56
import android.content.Context
67
import android.content.pm.PackageManager
7-
import android.content.res.Configuration
8-
import android.content.res.Resources
9-
import android.graphics.drawable.Drawable
108
import android.os.Build
119
import android.util.TypedValue
10+
import android.view.accessibility.AccessibilityManager
1211
import android.widget.Toast
1312
import androidx.annotation.AttrRes
1413
import androidx.annotation.ColorInt
15-
import androidx.annotation.DrawableRes
16-
import androidx.appcompat.content.res.AppCompatResources
1714

1815
fun Context.copyTextToClipboard(label: String? = null, textToCopy: String, toastMessage: String) {
1916
val clipboardManager = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
@@ -61,4 +58,9 @@ fun Context.isARSupported(): Boolean =
6158
true
6259
} catch (e : PackageManager.NameNotFoundException) {
6360
false
64-
}
61+
}
62+
63+
fun Context.isScreenReaderOn(): Boolean {
64+
val am = getSystemService(Context.ACCESSIBILITY_SERVICE) as AccessibilityManager
65+
return am.isEnabled && am.getEnabledAccessibilityServiceList(AccessibilityServiceInfo.FEEDBACK_SPOKEN).isNotEmpty()
66+
}

0 commit comments

Comments
 (0)