2015-10-28 5 views
1

Я пытаюсь отправить доступность сразу после показа закуски. Но ничего не играет. Вот мой код, который находится в OnStart() метод жизненного цикла:не удалось отправить событие доступности в Android

  final Snackbar snackbar = Snackbar 
         .make(findViewById(R.id.container), "snackbars are cool", Snackbar.LENGTH_INDEFINITE); 
       snackbar.setActionTextColor(getResources().getColor(R.color.snackbar_actions)); 


     View snackbarView = snackbar.getView(); 
    snackbarView.setBackgroundColor(Color.DKGRAY); 
    TextView textView = (TextView) snackbarView.findViewById(android.support.design.R.id.snackbar_text); 
    textView.setTextColor(Color.WHITE); 
    snackbar.show(); 


//time to send a accessibility event below 
     final ViewGroup parentView = (ViewGroup)findViewById(R.id.container); 
     if (parentView != null) { 
      final AccessibilityManager a11yManager = 
        (AccessibilityManager) this.getSystemService(Context.ACCESSIBILITY_SERVICE); 

      if (a11yManager != null && a11yManager.isEnabled()) { 
       final AccessibilityEvent e = AccessibilityEvent.obtain(); 
       snackbarView.onInitializeAccessibilityEvent(e); 
       e.getText().add("some more text to say"); 
//nothing happens here 

      parentView.requestSendAccessibilityEvent(snackbarView, e); 
     } 

    } 

ответ

0

Если вы хотите добавить больше информации на мероприятие доступности можно реализовать AccessibilityDelegate для вашего зрения и переопределить onInitializeAccessibilityEvent

@Override 
public void onInitializeAccessibilityEvent(AccessibilityEvent event) { 
    super.onInitializeAccessibilityEvent(event); 
    event.getText().add("some more to say"); 
} 
+0

нет, потому что я не хотел, чтобы это уволят прямо как только закусочная показывается это было не. – j2emanue

1

некоторый разработчик написал исправление для этого. Моя другая проблема заключалась в том, что я почему-то не вызывал ее в onStart. Во всяком случае я создал метод Utils и использовали разработчики команды, которые выглядят следующим образом:

if (!mA11yManager.isEnabled()) { 
    return; 
} 

// Prior to SDK 16, announcements could only be made through FOCUSED 
// events. Jelly Bean (SDK 16) added support for speaking text verbatim 
// using the ANNOUNCEMENT event type. 
final int eventType; 
if (Build.VERSION.SDK_INT < 16) { 
    eventType = AccessibilityEvent.TYPE_VIEW_FOCUSED; 
} else { 
    eventType = AccessibilityEventCompat.TYPE_ANNOUNCEMENT; 
} 

// Construct an accessibility event with the minimum recommended 
// attributes. An event without a class name or package may be dropped. 
final AccessibilityEvent event = AccessibilityEvent.obtain(eventType); 
event.getText().add(text); 
event.setEnabled(isEnabled()); 
event.setClassName(getClass().getName()); 
event.setPackageName(mContext.getPackageName()); 

// JellyBean MR1 requires a source view to set the window ID. 
final AccessibilityRecordCompat record = new AccessibilityRecordCompat(event); 
record.setSource(this); 

// Sends the event directly through the accessibility manager. If your 
// application only targets SDK 14+, you should just call 
// getParent().requestSendAccessibilityEvent(this, event); 
mA11yManager.sendAccessibilityEvent(event);} 

вы можете увидеть это here

 Смежные вопросы

  • Нет связанных вопросов^_^