をService
開始し、Button
を呼び出して追加する がありWindowManager.addView()
ます。このボタンは常にすべての上に表示されます。
Service
拡張する別のものがありますAccessibilityService
。でイベントを受け取りますが、別の で作成されonAccessibilityEvent
た ではクリック イベントが発生しません。私は他のビューでクリックイベントを受け取ります。別の問題は、ユーザーが別のもので作成されたものをクリックしたときにトリガーする方法ですか?Button
Service
onAccessibilityEvent
Button
Service
Button
created inが起動しない理由がわかりService
ません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
と、スクロールアクションを実行する方法がわかりません。また、アクションを実行する前に現在のビューがスクロール可能かどうかを確認する方法はありますか?
ありがとう!!!