我有一个Service
启动 aButton
并通过调用添加它WindowManager.addView()
。此按钮始终显示在所有内容之上。
还有一个Service
延伸AccessibilityService
。我确实收到了事件onAccessibilityEvent
,但没有点击事件发生Button
在另一个中创建的事件上Service
。我确实收到了其他视图的点击事件。onAccessibilityEvent
另一个问题是当用户点击Button
在另一个中创建的时如何触发Service
?
我不知道为什么Button
created inService
不会触发onAccessibilityEvent
。
这是我的浮动按钮
public class FloatingButton extends Service {
private WindowManager wm;
private WindowManager.LayoutParams mButtonParams;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
wm = (WindowManager) getSystemService(WINDOW_SERVICE);
mButtonParams = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
mButtonParams.gravity = Gravity.TOP | Gravity.START;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
startFloatingButton();
return START_STICKY;
}
private void startFloatingButton() {
Button btn = new Button(this);
btn.setText("scroll");
wm.addView(btn, mButtonParams);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// should fire onAccessibilityEvent()
}
});
}
}
和我的AccessibilityService
public class MyAccessibilityService extends AccessibilityService {
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
Log.v(TAG, "event type: " + event.getEventType());
}
@Override
public void onInterrupt() {
}
}
我需要Button
在 FloatingButton 中创建的Service
或者触发事件onAccessibilityEvent
或者执行的方式AccessibilityNodeInfo.ACTION_SCROLL_FORWARD
。但没有AccessibilityEvent
,我不知道如何执行滚动操作。另外,有没有办法在执行操作之前检查当前视图是否可滚动?
谢谢!!!