Android 11 Beta きたぞおおおおおおおおお
🥳←これすき
追記:2020/06/13
Google Payが使えないと言いました。が、Suicaで電車に乗れたので多分おサイフケータイアプリでは対応していないNFC Payあたりが使えないんだと思います。
Felica使う系は多分行けるんじゃないですかね?
あとスライダー(RangeTemplate)動いたのでそれも
本題
Android 11 Beta 1 来ました。
わたし的に楽しみにしてる機能は
- Device Control API (正式名称しらん)
- 証明のON/OFFとか明るさスライダーなど
- Quick Settings のスマートホーム版
- スマートホームなんて金かかるからやらないと思う(よって使わない)
- Dynamic Intent Filter
- Wi-Fi経由のADB
- カスROMには前からあるって?
- 公式で対応なんですよ!!!
- Bubble
- 他のアプリに重ねて表示が年々厳しくなってるので(最近、設定アプリの上に表示できなくなった)代替。
- ポップアップ再生の代替にはならなそう。あくまでメッセージアプリ向けなのかな。
Android 11 Beta入れようとしている各位
Google Pay 使えなくなるらしいよ。DP4の段階では使えたんだけどまた使えなくなった。
Suica使えるんかな?
Device Control API を試す
スマートホームなんてする予定なけどせっかくBeta版の登場と一緒にAPIが文書化されてるので試しに追加してみる。
ドキュメント
環境
なまえ | あたい |
---|
言語 | Kotlin |
Android | 11 Beta 1 |
端末 | Pixel 3 XL |
Android R Betaの環境を揃えます。
SDK Manager開いて、SDK Platformsタブを押して、Android 10.0+(R)にチェックを入れてApply押してダウンロードしましょう。
build.gradle
バージョン
compileSdkVersion 30
とtargetSdkVersion 30
になってればいいと思います。多分
ライブラリいれる
ドキュメントがRxJava入れてることを前提にしているので私も入れます。
RxJavaなんて使ったことないんだけどね。
AndroidManifest書く
おまじないです。
DeviceControlsService っていうサービス作成
DeviceControlsService.kt
を作成します。
作成したら、ControlsProviderService()
を継承します。
でもこのままだと返り値なにもないのでIDEが赤いなみなみ出すので今から書いていきましょう。
利用可能コントローラーの一覧を用意する
これから追加可能コントローラーを作っていきます。
ここからユーザーが選ぶわけですね。
createPublisherForAllAvailable()
に書いていきます。
コメント文は各自消してね。
注意
ここで使うControl
はControl.StatelessBuilder
の方です。
これはまだ状態が(スイッチがONとかOFFとかって話)が分からない時に使うとか書いてあるけど多分この時に使います。
ユーザーが選んだコントローラーを用意する
利用可能コントローラーの一覧を用意する
で選んだコントローラーをユーザーが操作できるようにします。
これでエラーは一応消えるので、早速実行してみましょう。
コントローラー追加
電源ボタン長押しすると、デバイス コントロールが追加されているので、押してみましょう。
押すと、コントローラーが提供されているアプリ一覧画面が表示されるので、今作っているアプリを選びましょう。
すると、さっき作ったコントローラーが現れるのでチェックを入れて、右下の保存ボタンを押しましょう。
するとコントローラーが追加されているはずです。
ですがこの段階では押してもなにも変わらないのでこれから押した時にON/OFF
を切り替える処理を書いていきたいと思います。
ちなみにエミュレータでAndroid 11動かすのにダウンロードが長かった。
コントローラーを押したときの処理
押した時にON/OFFを切り替えられるようにします。
これで押した時にON/OFFが切り替わるようになりました。
DeviceType#TYPE_LIGHT
見た目いい感じ。
スマートホームやってみたい(金ないけど)
おわりに
ソースコードです。https://github.com/takusan23/DeviceControlsTest
それと本当はスライダー(値を調整できるRangeTemplate
てやつ)コントローラーがあったんですけど、私の環境ではうまく動きませんでした。Beta版だからなのかそもそも私が間違ってるのか?
RangeTemplate動きました。参考にしました
performControlAction()はこうです。
あとDeviceType
がいっぱいあるので全種類アイコンと色を見てみたい。やってみるか。
やりました→ https://github.com/takusan23/DeviceControlAllDeviceTypeSample
Dynamic Intent Filterもやりたい