三星远程开发测试平台

反馈 注册 登录

三星DeX适配指导


Samsung DeX为用户提供类似于电脑桌面的环境,可以利用鼠标、键盘打开应用并进行交互,在同一桌面下可以启动多个应用,并可以轻松在多个应用间切换。 在Android7.0中推出了一项非常实用的多任务处理功能:多窗口模式,Samsung DeX是基于此功能进行了功能开发和拓展。从Note10开始只需一根 USB 数据线,即可通过 Samsung DeX 将手机和电脑相连。开发者适配非常简单,只要遵循Android的最佳编码实例,应用即可正常运行。下面介绍如何为Samsung DeX优化应用。 


1.   启用多窗口


建议应用程序支持多窗口,这样可以最小化,最大化和调整应用窗口大小。如果不支持多窗口,则应用程序将在固定大小的窗口中打开。支持多窗口需要在Manifest文件中进行声明:


image.png


如下图,支持多窗口的应用,可根据需要调整大小,并在窗口提供最小化、最大化和关闭按键。不支持多窗口的应用将以固定的手机尺寸运行,无法调整大小,默认无法最大化,但可以选择进入DeX实验室强制将应用最大化。


image.png

 

2.   启用鼠标和键盘


不能声明支持触摸屏,因为可能会禁止使用鼠标和键盘的交互。如果声明支持触摸屏,在桌面模式启用应用时,提示“该应用专为触摸屏设计,无法在DeX中运行”并无法打开应用。应用不能包含以下声明代码:

image.png

         


3.   运行时配置变更-系统默认


Mobile和DeX模式之间切换会导致运行时配置变更,类似于旋转屏幕触发的配置变更,每当发生配置更改时,Android默认情况下会重启正在运行的Activity(先后调用onDestroy()和onCreate())。目的是使用与新设备匹配的备用资源自动重新加载您的应用。为了更好的适配DeX,应用需要支持以下运行时更改,在配置变更时妥善处理界面的状态和数据。


Ø  运行时配置变更

1)Density在xxxhdpi和mdpi之间变化;

2)WQHD和FHD的分辨率更改;

3)横向和纵向的方向更改;

4)屏幕布局更改;

5)屏幕尺寸变化;

6)屏幕最小尺寸变化;

7)UI模式在mobile和桌面模式之间切换;

8)  色彩模式变更(只有支持Samsung DeX Dual Mode才需要进行此项修改)。

 

Ø  资源配置:

可以使用以下限定符为Samsung DeX模式提供替代的Android资源。


image.png


例如,下图显示了针对不同的屏幕密度使用不同资源的示例。在drawable目录提供资源图片:


image.png


Ø  字体适配:


同样,在不同的屏幕尺寸上根据dpi处理字体大小,这样在调整应用大小的时候,字体也会随比例变化,适合屏幕尺寸。


image.png

 

4.   运行时配置变更-自行处理


如果选择自行处理配置变更(不建议),则需要在清单文件中提供以下声明。 当手机和Samsung DeX模式之间切换时,将阻止应用程序重新启动。


1.     在manifest文件中声明“keepalive”并设置android:configChanges属性。


Ø  声明“keepalive”,可以避免在mobile和Samsung DeX之间切换时被杀死进程。

代码示例:

   <!-- Version < 3.0. DeX Mode and Screen Mirroring support -->

   <meta-data android:name="com.samsung.android.keepalive.density" android:value="true"/>

    <!-- Version >= 3.0. DeX Dual Mode support -->

   <meta-data android:name="com.samsung.android.multidisplay.keep_process_alive" android:value="true"/>

 

Ø   设置android:configChanges属性。在使用DeX时,声明以下配置变更将会避免触发系统发起的Activity重启。

image.png

代码示例:

<activity android:name=".MainActivity"

      android:configChanges="orientation|screenSize|smallestScreenSize|density|screenLayout|uiMode|keyboard|keyboardHidden|navigation">

 </activity>


 

2.     在onConfigurationChanged()中获得新设备配置,自行调整布局。


Ø  检测DeX模式的方法:

在onCreate()中初始化Samsung DeX,在onConfigurationChanged()中检测DeX模式,一旦连接到DeX应用就可以及时获得状态变化。

示例代码:

image.png

 image.png

5.   参考资料


1)   请参阅Android开发者指南中的详细信息多窗口:

Ø  https://developer.android.google.cn/guide/topics/ui/multi-window

2)请参阅Android开发者指南中的详细信息运行时配置变更:

Ø  https://developer.android.google.cn/guide/topics/resources/runtime-changes

3)三星开发者网站:

Ø  https://developer.samsung.com/samsung-dex/modify-optimizing.html

4)Samsung DeX下载官网:

Ø  https://www.samsung.com/cn/apps/samsung-dex/


6.   联系我们


如果您在适配过程中遇到了技术问题,对折叠屏适配有任何建议或意见:

欢迎发邮件到:rdtpservice@samsung.com

邮件主题:三星DeX适配+APP名 

感谢您的关注和参与!