はじめに
上の画像のようにステータスバーを下にスワイプするとクイック設定が出る。
クイック設定が表示されたことを何とか検出できないかと色々試してみた。
試してダメだった方法
Activity#onTouchEvent(MotionEvent event) での検出
onTouchEventでイベントが取得できるかと思ったが画面外の為に検出はできなかった。
成功した方法
Activity#onWindowFocusChanged(boolean hasFocus) での検出
実装は以下のみ。
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
Log.d("MainActivity", "onWindowFocusChanged hasFocus: " + hasFocus);
}
}
Logを確認すると
クイック設定が出た場合
D/MainActivity: onWindowFocusChanged hasFocus: false
クイック設定が閉じた場合
D/MainActivity: onWindowFocusChanged hasFocus: true
のような通知がログで確認できた。
終わりに
一応、検出はできたが
Activity#onWindowFocusChanged(boolean hasFocus)
は、今回の操作以外に色々な状況で通知が来てしまう為、この方法だけでは不十分で完全にクイック設定が出たことを検出するのは難しいかもしれない。