@ -5,6 +5,8 @@ import android.os.Build;
import android.view.View ;
import android.view.View ;
import android.view.accessibility.AccessibilityEvent ;
import android.view.accessibility.AccessibilityEvent ;
import android.view.accessibility.AccessibilityManager ;
import android.view.accessibility.AccessibilityManager ;
import android.accessibilityservice.AccessibilityServiceInfo ;
import cn.carbswang.android.numberpickerview.library.NumberPickerView ;
import com.henninghall.date_picker.DatePickerManager ;
import com.henninghall.date_picker.DatePickerManager ;
import com.henninghall.date_picker.State ;
import com.henninghall.date_picker.State ;
@ -13,6 +15,8 @@ import com.henninghall.date_picker.wheelFunctions.WheelFunction;
import com.henninghall.date_picker.wheels.Wheel ;
import com.henninghall.date_picker.wheels.Wheel ;
import java.util.Locale ;
import java.util.Locale ;
import java.util.Arrays ;
import java.util.List ;
public class Accessibility {
public class Accessibility {
@ -85,6 +89,60 @@ public class Accessibility {
picker . picker . getView ( ) . setContentDescription ( descriptionPrefix + ", " + descriptionPostFix + " " + selectedDateString ) ;
picker . picker . getView ( ) . setContentDescription ( descriptionPrefix + ", " + descriptionPostFix + " " + selectedDateString ) ;
}
}
/ * *
* Checks if the accessibility service responsible of spoken feedback is active
* /
public static boolean isSpokenFeedbackEnabled ( ) {
return hasAccessibilityFeatureTypeEnabled ( AccessibilityServiceInfo . FEEDBACK_SPOKEN ) ;
}
/ * *
* Get a list of accessibility services currently active
* /
private static boolean hasAccessibilityFeatureTypeEnabled ( int type ) {
List < AccessibilityServiceInfo > enabledServices =
systemManager . getEnabledAccessibilityServiceList ( type ) ;
return enabledServices ! = null & & enabledServices . size ( ) > 0 ;
}
/ * *
* Read a message out loud when spoken feedback is active
* /
public static void announce ( String message ) {
if ( systemManager = = null | | ! isSpokenFeedbackEnabled ( ) ) {
return ;
}
AccessibilityEvent event = AccessibilityEvent . obtain ( AccessibilityEvent . TYPE_ANNOUNCEMENT ) ;
event . getText ( ) . add ( message ) ;
systemManager . sendAccessibilityEvent ( event ) ;
}
/ * *
* Get NumberPickerView displayValue from value .
* /
private static String numberPickerValueToDisplayedValue ( NumberPickerView numberPicker , int value ) {
final String [ ] displayValues = numberPicker . getDisplayedValues ( ) ;
final String displayValue = displayValues [ value ] ;
if ( displayValue ! = null ) {
return displayValue ;
}
return String . valueOf ( value ) ;
}
/ * *
* Read NumberPickerView displayed value .
* For TalkBack to read dates etc . correctly , make sure they are in localised format .
* /
public static void announceNumberPickerValue ( NumberPickerView numberPicker , int newValue ) {
announce ( numberPickerValueToDisplayedValue ( numberPicker , newValue ) ) ;
}
private String getAccessibleTextForSelectedDate ( ) {
private String getAccessibleTextForSelectedDate ( ) {
String accessibleText ;
String accessibleText ;
switch ( state . getMode ( ) ) {
switch ( state . getMode ( ) ) {