#android #android-studio #kotlin
Вопрос:
До сих пор мне удавалось прослушивать ключевые события с помощью службы доступа в Android, но я не могу получать клики с softkeyboard. Не могли бы вы помочь мне, пожалуйста, также, можно ли узнать, какую кнопку пользователь нажал на softkeyboard ? Это мой класс AcessibilityService
class AccessService : AccessibilityService() {
private val TAG = "AccessService"
override fun onServiceConnected() {
Log.e(TAG, "onServiceConnected: Our AccessService ic connected....")
}
override fun onAccessibilityEvent(event: AccessibilityEvent?) {
// Log.e(TAG, "onAccessibilityEvent: ${event.toString()}")
}
override fun onKeyEvent(event: KeyEvent): Boolean {
val action = event.action;
val code = event.keyCode;
if (action == KeyEvent.ACTION_UP) {
if (code == KeyEvent.KEYCODE_VOLUME_UP) {
Toast.makeText(this, "Увеличение громкость", Toast.LENGTH_SHORT).show()
} else if (code == KeyEvent.KEYCODE_VOLUME_DOWN) {
Toast.makeText(this, "Уменшение громкость", Toast.LENGTH_SHORT).show()
}
}
return true;
}
override fun onGesture(gestureId: Int): Boolean {
Log.e(TAG, "onGesture: $gestureId")
return super.onGesture(gestureId)
}
override fun onInterrupt() {
}
}
Это моя конфигурация для службы
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFeedbackType="feedbackSpoken"
android:accessibilityFlags="flagRequestFilterKeyEvents"
android:canRequestFilterKeyEvents="true"
android:canRetrieveWindowContent="true"
android:notificationTimeout="100"
android:packageNames=""
android:settingsActivity="com.example.android.accessibility.ServiceSettingsActivity" />
И, наконец, мой файл манифеста
<service
android:name=".AccessService"
android:label="Service for listening to view and focus"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
<meta-data
android:name="android.accessibilityservice"
android:resource="@xml/access_service_config" />
</service>