How do I Handle Physical Keyboard Numeric KeyPress in my accessiblity service,
it seems I am missing something, the OnKeyEvent, OnAccessibilityEvent method is not hitting when I press numeric keys on physical keyboard
Here's my accesiblity serivice:
[Service(Label = "myApp", Permission = Manifest.Permission.BindAccessibilityService)]
[IntentFilter(new[] { "android.accessibilityservice.AccessibilityService" })]
[MetaData("android.accessibilityservice.AccessibilityService", Resource = "@xml/accessibility_service_config")]
public class TVNavigatorService : AccessibilityService
{
public TVNavigatorService()
{
}
protected override void OnServiceConnected()
{
var accessibilityServiceInfo = ServiceInfo;
accessibilityServiceInfo.EventTypes = EventTypes.AllMask;
accessibilityServiceInfo.Flags |= AccessibilityServiceFlags.IncludeNotImportantViews;
accessibilityServiceInfo.Flags |= AccessibilityServiceFlags.RequestFilterKeyEvents;
accessibilityServiceInfo.Flags |= AccessibilityServiceFlags.ReportViewIds;
accessibilityServiceInfo.Flags |= AccessibilityServiceFlags.RequestTouchExplorationMode;
accessibilityServiceInfo.FeedbackType = Android.AccessibilityServices.FeedbackFlags.AllMask;
accessibilityServiceInfo.NotificationTimeout = 100;
SetServiceInfo(accessibilityServiceInfo);
base.OnServiceConnected();
}
protected override bool OnKeyEvent(KeyEvent e)
{
//this code never gets executed
var action = e.Action;
var keyCode = e.KeyCode;
Console.WriteLine("key code : " + keyCode);
return base.OnKeyEvent(e);
}
public override void OnAccessibilityEvent(AccessibilityEvent e)
{
try
{
//if (e.PackageName == "")
{
//final int eventType = event.getEventType();
//switch(eventType) {
// case AccessibilityEvent.TYPE_VIEW_CLICKED:
// do somthing
// break;
// case AccessibilityEvent.TYPE_VIEW_FOCUSED:
// do somthing
// break;
//}
Console.WriteLine("event type : " + e.EventType);
Console.WriteLine("content decription : " + e.ContentDescription);
Console.WriteLine("package name : " + e.PackageName);
Console.WriteLine("source : " + e.Source);
Console.WriteLine("window id : " + e.WindowId);
Console.WriteLine("event time : " + e.EventTime);
var strBuilderTxt = new StringBuilder();
foreach (var txt in e.Text)
{
strBuilderTxt.Append(txt);
}
Console.WriteLine("actual text : " + strBuilderTxt);
}
}
catch (Exception e2)
{
Console.WriteLine(e2.Message);
}
}
public override void OnInterrupt()
{
throw new NotImplementedException();
}
}
Service config:
<?xml version="1.0" encoding="UTF-8" ?>
<accessibility-service
xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/accessibility_service_description"
android:packageNames=""
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFlags="flagRequestFilterKeyEvents"
android:accessibilityFeedbackType="feedbackAllMask"
android:notificationTimeout="100"
android:canRetrieveWindowContent="true"
android:canRequestFilterKeyEvents="true"
/>
how to implement numeric key event in accessibility service?
UPDATE Added onKeyEvent code but still no luck
here's my git repo https://github.com/nitinjs/XamarinNumericPadAccessilbiity