code: @SuppressWarnings("unused")
      public CharSequence getTextForAccessibility() {
          if (getObjects().size() == 0) {
              return getText();
          }
  
          SpannableStringBuilder description = new SpannableStringBuilder();
          Editable text = getText();
          int selectionStart = -1;
          int selectionEnd = -1;
          int i;
          //Need to take the existing tet buffer and
          // - replace all tokens with a decent string representation of the object
          // - set the selection span to the corresponding location in the new CharSequence
          for (i = 0; i < text.length(); ++i) {
              //See if this is where we should start the selection
              int origSelectionStart = Selection.getSelectionStart(text);
              if (i == origSelectionStart) {
                  selectionStart = description.length();
              }
              int origSelectionEnd = Selection.getSelectionEnd(text);
              if (i == origSelectionEnd) {
                  selectionEnd = description.length();
              }
  
              //Replace token spans
              TokenImageSpan[] tokens = text.getSpans(i, i, TokenImageSpan.class);
              if (tokens.length > 0) {
                  TokenImageSpan token = tokens[0];
                  description = description.append(tokenizer.wrapTokenValue(token.getToken().toString()));
                  i = text.getSpanEnd(token);
                  continue;
              }
  
              description = description.append(text.subSequence(i, i + 1));
          }
  
          int origSelectionStart = Selection.getSelectionStart(text);
          if (i == origSelectionStart) {
              selectionStart = description.length();
          }
          int origSelectionEnd = Selection.getSelectionEnd(text);
          if (i == origSelectionEnd) {
              selectionEnd = description.length();
          }
  
          if (selectionStart >= 0 && selectionEnd >= 0) {
              Selection.setSelection(description, selectionStart, selectionEnd);
          }
  
          return description;
      }
docs: Correctly build accessibility string for token contents
  
  This seems to be a hidden API, but there doesn't seem to be another reasonable way
  @return custom string for accessibility