私はButton
を開始し、WindowManager.addView()
を呼び出すことによってそれを追加するService
を持っています。このボタンは常にすべての上に表示されます。AndroidでフローティングボタンをクリックしたときにAccessibilityService経由でスクロールイベントを実行する方法は?
AccessibilityService
を拡張する別のService
があります。私はonAccessibilityEvent
でイベントを受け取りますが、別のService
で作成されたButton
のクリックイベントは発生しません。私は他のビューthoのクリックイベントを受け取ります。もう1つの問題は、ユーザーがButton
を別のService
で作成したときに、onAccessibilityEvent
をトリガーする方法ですか?
で作成されたButton
がなぜService
で作成されたのかわかりません。
は、ここに私の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
がなければ、私はスクロールアクションを実行する方法を知らない。また、アクションを実行する前に現在のビューがスクロール可能かどうかをチェックする手段がありますか?
ありがとうございました!