文章目录
支持两种模式Laptop Mode与Pad Mode(笔记模式、平板模式)的ChromeOS Android
- ChromeOS中Android与Chrome之间虽然是以mojo作为通信手段,但是对平板模式切换到笔记本模式的处理,却不是mojo来做通信的
- 当ChromeOS切换笔记模式、平板模式的时候,是通过wayland来进行通信的
当模式切换时,Chrome通过wayland与Android通信
- Chrome通过wayland与Android HWComposer通信,由HWComposer将Android的画面进行缩放转换
- 然后通过jni网往上调用到FrameWork。其中,FrameWork中的
InputManager
调用OnTabletModeChanged
方法,通过调用oberser的观察者方法来通知各个观察者模式发生了切换。 OnTabletModeChanged
的回调注册方法registerOnTabletModeChangedListener
虽然是public的,但是它被声明为@hide
,即这个方法不能被应用层调用,只能被FrameWork层才能使用。- 应用层可能需要通过反射
InputManager
并搜索回调注册方法来实现观察,完成回调调用。
曲线救国
- 无法在应用层添加观察者,那么可以考虑其它方案:
getResources().getConfiguration()
可以获取screenWidthDp
和screenHeightDp
,在笔记本于笔记模式和平板模式之间切换的时候,像素密度可能会发生对应的修改,这时有机会去识别当前的状态。