我有一個Service
啓動一個Button
並通過調用WindowManager.addView()
添加它。這個按鈕總是顯示在一切之上。如何在Android中單擊浮動按鈕時通過AccessibilityService執行滾動事件?
還有另一個Service
,其延伸AccessibilityService
。我確實收到onAccessibilityEvent
的事件,但是在另一個Service
中創建的Button
上沒有發生點擊事件。我確實收到其他觀點的點擊事件。另一個問題是如何在用戶點擊另一個Service
中創建的Button
時觸發onAccessibilityEvent
?
我不知道爲什麼在Service
中創建的Button
不會觸發onAccessibilityEvent
。
這裏是我的FloatingButton
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() {
}
}
我需要FloatingButton Service
創建Button
無論是在onAccessibilityEvent
觸發一個事件或方法來執行AccessibilityNodeInfo.ACTION_SCROLL_FORWARD
。但沒有AccessibilityEvent
,我不知道如何執行滾動操作。還有,有沒有辦法在執行操作之前檢查當前視圖是否可滾動?
謝謝!