2015-06-18 2 views
4

Есть ли способ получить текстовый контент, отображаемый на экране мобильного телефона Android. Это может быть любое приложение для Android.Получить текстовое содержимое экрана андроида

http://i.stack.imgur.com/vMPcD.jpg

, например, в изображении связаны выше, я хотел бы получить весь текст (начиная с «Ларри Пейдж» до конца «Фред Смит», а также положение всех слов на экране), который находится на изображении и его соответствующем положении на экране.

+1

те тексты в вашем приложении? –

+1

@phuc_tran похоже, что он хочет поцарапать текст из любого приложения для Android. – aga

+0

Нет, текст не будет из моего приложения, я хочу получить любой текст, отображаемый любым приложением на мобильном экране. – ZeekHuge

ответ

0

Этого можно достичь с помощью функции специальных возможностей Android (как это делает приложение Universal copy).

Что вам нужно сделать, это реализовать класс AccessabilityService , который может получить доступ ко всем пользовательским интерфейсам экрана через прослушиватель.

Для того, чтобы что вам нужно объявить его в манифесте:

<service android:name=".MyAccessibilityService"> 
<intent-filter> 
    <action android:name="android.accessibilityservice.AccessibilityService" /> 
</intent-filter> 
<meta-data android:name="android.accessibilityservice" android:resource="@xml/accessibilityservice" /> 

файл @ XML/accessibilityservice где можно настроить службу, как в какой пакет слушать или какого рода события, которые вы хотите получить:

<accessibility-service 
android:accessibilityEventTypes="typeViewClicked|typeViewFocused" 
android:packageNames="com.example.android.myFirstApp, com.example.android.mySecondApp" 
android:accessibilityFeedbackType="feedbackSpoken" 
android:notificationTimeout="100" 
android:settingsActivity="com.example.android.apis.accessibility.TestBackActivity" 
android:canRetrieveWindowContent="true"/> 

в классе переопределить метод:

@Override 
public void onAccessibilityEvent(AccessibilityEvent event) { 
    Log.v(TAG, String.format(
      "onAccessibilityEvent: type = [ %s ], class = [ %s ], package = [ %s ], time = [ %s ], text = [ %s ]", 
      getEventType(event), event.getClassName(), event.getPackageName(), 
      event.getEventTime(), getEventText(event))); 
} 

В этом методе вы должны найти в пользовательском интерфейсе желаемый текст/TextView/EditText и извлечь из него текст, который вы хотите.

ПРИМЕЧАНИЕ: этот способ требовал разрешения на доступность, которое может предоставить только пользователь, и его невозможно выполнить во время выполнения.

Вы можете прочитать в документации Android о how to implement an AccessabilityService

0

Это может быть сделано с помощью «uiautomatorviewer». Этот файл bin можно найти внутри Android SDK/tools/bin/folder.

Запустите uiautomatorviewer в терминале.

$./uiautomatorviewer 
  • сделать отладку убедитесь USB включен, и подключить устройство к компьютеру.
  • Нажмите на кнопку сброса uiautomator
  • Нажмите на текст, и вы можете скопировать текст с «Детали узла» сбоку.

enter image description here

Упакуйте WebView, выше подход не может работать.

Если вы хотите сделать это программно, не проверить на android.getText() метод

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

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