はじめに
- Android11ではフォルダブル端末の折り曲げている角度を取得できるヒンジ角度センサをサポートします。
- これまでのエミュレータでは実験的機能として折り曲げの調整ができる機能が追加されましたが、30.0.14(たしか)あたりで密かに一旦消えた状態となりました。
- 6/12にリリースされた、Emulatorの30.0.17で対応したようなので、少し試してみました。
参考
エミュレータにFold機能を対応させる
- 環境
- Android Emulator 30.0.17 (SDKManagerで取得)
- Android Studio 4.2 Canary1
- その他、Android11のイメージのEmulatorなど
- エミュレータの設定
- エミュレータのセンサ関連の挙動は、
~/.android/avd/avdName.avd/config.ini
で設定できます。 - リリースノートにのっとって、下記を追加したいエミュレータに追加します。
- 注:ここで、1行目のhw.sensor.hingeについてはリリースノートの記載に載っていないので追加しました。これがないと、fold機能が使えません。
- 注(7/13 追記):公式のリリースノートをみたらいつのまにか追加されていたので、そちらの通りでも多分大丈夫です。
- エミュレータのセンサ関連の挙動は、
hw.sensor.hinge = yes
hw.sensor.hinge.count = 2
hw.sensor.hinge.ranges = 0-360,0-360
hw.sensor.hinge.defaults = 180,180
hw.sensor.hinge.areas = 0-987-1440-0, 0-1974-1440-0
hw.sensor.posture_list=1, 2, 3, 4
hw.sensor.hinge_angles_posture_definitions=0-30 & 0-30, 30-150 & 30-150, 150-210 & 150-210, 210-360 & 210-360
- 上記の設定だと、三つ折り可能な端末となります。なかなか想像つきませんが。
- リリースノートによると、3まで対応している様です。
- posture_listが折りたたみの状態を表す番号のリスト
- 多分、getPostureで取れるもののはずです。
- hinge_angles_posture_definitionsが折りたたみの状態とヒンジ角度の対応を表すリストという感じだと思います。
- 例えば、上記の例なら、二つのヒンジ角度がそれぞれ0-30°なら、POSTURE_CLOSEDという感じだと思います。
実際に動かしてみた
センサ情報とれるかなと思って試してみた
- ヒンジ角が取れるなら、その数値も取れるかな?と思って、とりあえずサンプルアプリを作ってみました。
- と言っても、FABをタップすると利用可能なセンサの一覧をログ出力するだけです。
findViewById<FloatingActionButton>(R.id.fab).setOnClickListener { view ->
val sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
val sensors = sensorManager.getSensorList(Sensor.TYPE_ALL)
Log.d("SENSOR_TEST", sensors.toString())
}
→結果として、ヒンジ角度センサは載ってこず。まだシステムイメージの方が対応していないのか(?)、それとも何か抜けている設定があるのか。さらに追跡してみようと思います。
→ 2020/7/9追記 beta2で動くようになりました
おわりに
- ということで、エミュレータに追加されたFold設定を有効にするところまでを試してみました。
-
hw.sensor.hinge
の設定も必要となりますので、利用の際にはご注意ください。