gpt4 book ai didi

java - 如何仅从我的应用程序获取辅助功能服务手势

转载 作者:行者123 更新时间:2023-11-29 23:07:46 26 4
gpt4 key购买 nike

我想在用户进入我的应用程序时收听辅助功能手势。这意味着 onGusture 应该在我的应用程序处于前台时调用,但无论我的应用程序是否在前台,onGesture 总是被调用。我尝试在 Java 和 XML 中设置包名称,但它不起作用。请看看这个告诉我我做错了什么

MyAccessibilityService.java

public class MyAccessibilityService extends AccessibilityService {
private String TAG="MyAccessibilityServiceTAG";


@Override
protected boolean onGesture(int gestured) {//This method always called, I want this method only called when my App in foreground
Log.d(TAG,"onGesture:"+gestureId);
Toast.makeText(getApplicationContext(),"Gesture: "+gestureId,Toast.LENGTH_SHORT).show();
return super.onGesture(gestureId);

}

@Override
public void onAccessibilityEvent(AccessibilityEvent event) {

System.out.println("Event Occurred");
Log.d(TAG, "onAccessibilityEvent: event=" + event);
AccessibilityNodeInfo nodeInfo = event.getSource();
if (null == nodeInfo) return;


}

@Override
protected void onServiceConnected() {
super.onServiceConnected();
AccessibilityServiceInfo info = getServiceInfo();
// your other assignments
info.packageNames = new String[]{"com.vorail.ttsdemo"};
setServiceInfo(info);
}

@Override
public void onInterrupt() {
Log.d(TAG,"Accessibility Interrupted" );

}

@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG,"Service Destroyed");
}
}

accessibility_service_config.xml

 <accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/app_name"
android:accessibilityEventTypes="typeTouchExplorationGestureStart"
android:canRequestFilterKeyEvents="false"

android:accessibilityFeedbackType="feedbackSpoken"
android:packageNames="com.vorail.ttsdemo"
android:notificationTimeout="100"
android:settingsActivity="com.vorail.ttsdemo.MainActivity"
android:accessibilityFlags="flagDefault|flagRequestTouchExplorationMode"
android:canRequestTouchExplorationMode="true"
/>

最佳答案

通过将 android:packageNames 设置为您应用的特定内容,您将过滤传入的事件:

<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeViewClicked|typeViewFocused|typeTouchInteractionStart|typeTouchInteractionEnd|typeTouchExplorationGestureStart|typeTouchExplorationGestureEnd"
android:packageNames="com.app.yourapplication"
android:accessibilityFeedbackType="feedbackGeneric"
android:accessibilityFlags="flagDefault"
android:canPerformGestures="true"
android:canRetrieveWindowContent="true" />

关于java - 如何仅从我的应用程序获取辅助功能服务手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56358702/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com