LGのAndroidタブレットに搭載されているQボタン
でスクショを撮る
全画面表示しているアプリのアニメを観ながら、ポチッとな!!
- Qua tab PX
- Qua tab PZ
- au LGT32 (動作確認端末)
- とか?
- ユーザー補助サービス
BIND_ACCESSIBILITY_SERVICE
を登録 - MediaProjectionでスクリーンショットを取れるようにする
- ユーザー補助サービスに接続
- ユーザー補助サービスで物理キー(ハードウェアキー)のイベントを拾う
- スクショの取得と保存を
別スレッド
で実行する MediaScanner
に登録を依頼- とりあえずトーストを出す(笑)
いつものように正常系しか実装していないので、参考程度にお願いします…
ちょっとハマったのは別スレッド
のところ。
トーストでUIが動くと、キーイベントが無効化できず、本体のQボタン
で設定済みアプリが動いてしまうのですよ、詳しい説明は…
どこかで見たけど、メモってなかった…
と、画像を保存したらMediaScanner
に登録しないと、ギャラリーに表示されないのを忘れていたので、サクッとコピペ(笑)
まず、スクショってどうやって撮るの?から始めて、MainActivityからスクショを撮れるのを確認してからサービスを作ったので、サービスから強引(static)にImageReaderなど参照してますが、よくよく調べてみるとAccessibilityService
にtakeScreenshot
なんてメソッドがあるから、もっとスマートな実装方法があるかもしれない。
AccessibilityService リファレンス
https://developer.android.com/reference/android/accessibilityservice/AccessibilityService
How to capture key events inside a service?
https://stackoverflow.com/questions/3229929/how-to-capture-key-events-inside-a-service?lq=1
Android Tips #40 AccessibilityService でユーザー補助サービスを作ってみる
https://dev.classmethod.jp/smartphone/android/android-tips-40-accessibility-service/
ANDROID 5.0 アプリからスクリーンショットを撮影する
https://techbooster.org/android/application/17026/
MediaScannerに登録を依頼する方法
https://qiita.com/wasnot/items/ae1e6282d2c33626b604
とりあえずビルドしたapp-release-unsigned.apk
も置いときますね!