本次使用的平台为致远电子SX-3568系列智慧商显主板,支持HDMI、eDP、LVDS、MIPI DSI等多种显示接口,搭载高性能GPU,具备视频解码能力,支持4K 60FPS显示。本次选用HDMI屏幕作为主屏,MIPI DSI屏幕作为副屏进行讲解,使用SX-3568在Android系统上实现双屏异显,可以应用在商业显示器、智能家居等多种应用场景。
确认主副屏
使用命令getprop | grep vendor.hwc.device可以查看当前的主副屏。对应属性vendor.hwc.device.primary为主屏,vendor.hwc.device.extend为副屏。可以看到此处主屏为MIPI DSI,副屏为HDMI。
![8f01ccf8-b3f7-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/99/5F/wKgaomTnamKAbeihAAAqn_KDLUI464.png)
代码实现
private void showSecondByActivity(Context context){
ActivityOptions options = ActivityOptions.makeBasic();
MediaRouter mediaRouter = (MediaRouter)
context.getSystemService(Context.MEDIA_ROUTER_SERVICE);
MediaRouter.RouteInfo route =
mediaRouter.getSelectedRoute(MediaRouter.ROUTE_TYPE_LIVE_VIDEO);
if (route != null) {
Display presentationDisplay = route.getPresentationDisplay();
options.setLaunchDisplayId(presentationDisplay.getDisplayId());
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent, options.toBundle());
}
}
第一步,在showSecondByActivity函数中,首先通过ActivityOptions类的makeBasic方法,创建一个基本的ActivityOptions类变量 ,ActivityOptions是一个可用于在新建一个Activity时候,将Bundle信息传递给新Activity的类,用于后面在创建新的Activity时候通过setLaunchDisplayId指定 SecondActivity 在启动后应显示在副屏上;
第二步,获取系统中的MediaRouter系统服务,用于后续获取显示屏幕ID来指定屏幕。MediaRouter Service是一个用于多媒体路由的系统服务,getSelectedRoute方法会返回一个可用的RouteInfo,也就是多媒体路由的对应信息。然后使用getPresentationDisplay从路由信息中获取一个新的Presentation,Presentation是一个特殊的Dialog,可以在创建它的时候将它直接关联到新的显示器上;
第三步,调用getDisplayId方法获取显示器ID,将ActivityOptions的DisplayId设置为新的显示器的ID,再通过Intent在新的Presentation创建一个新的Activity即可。这样在新的Activity上显示的内容就会跟随新的Presentation显示在副屏上。
然后在MainAvctivity中就可以直接调用showSecondByActivity,比如在onCreate方法中调用。这里让它显示activity_main.xml里面的内容。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showSecondByActivity(MainActivity.this);
}
SecondActivity类的内容用于测试,仅仅用于显示不同内容。这里让它显示activity_second.xml里面的内容,并让activity_second.xml的内容和activity_main.xml有差异。
public class SecondActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}
}
最后修改AndroidManifest,xml中内容。Activity的多显示器支持需要支持。同时 application 或者 activity 需要支持分屏属性即或者标签下设置新的属性属性用于指定应用支持多窗口模式。
<uses-feature android:name="android.software.activities_on_secondary_displays" />
<application
...
android:resizeableActivity="true"
...
<activity
android:name=".SecondActivity"
android:exported="true">
activity>
application>
manifest>
显示效果
编译并运行后,可以在SX-3568上看到双屏异显的效果如下图,其中MIPI DSI主屏上显示为activity_main.xml的内容;HDMI副屏上显示为activity_second.xml的内容。
![8f3f5eb0-b3f7-11ed-bfe3-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/99/5F/wKgaomTnamKAa4_-AAABH5UOQQI506.jpg)
![8fea7f8e-b3f7-11ed-bfe3-dac502259ad0.png](https://file1.elecfans.com//web2/M00/99/5F/wKgaomTnamOAXV-ZAADtkKOp78A323.png)
![906b5a64-b3f7-11ed-bfe3-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/99/5F/wKgaomTnamOABaHmAAC2Hh6LevA681.jpg)
![9089957e-b3f7-11ed-bfe3-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/99/5F/wKgaomTnamOAbVJ3AACL_TffxQM762.jpg)
![90a6f876-b3f7-11ed-bfe3-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/99/5F/wKgaomTnamOAebJJAACg0BL51P4862.jpg)
![90e7eb2e-b3f7-11ed-bfe3-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/99/5F/wKgaomTnamOAKacrAAB5J39ieQw233.jpg)
![90f853d8-b3f7-11ed-bfe3-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/99/5F/wKgaomTnamSAdCZIAADvie_3xuM207.jpg)
![911d61fa-b3f7-11ed-bfe3-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/99/5F/wKgaomTnamSAKhnUAADDl_n4KOw298.jpg)
原文标题:【技术分享】快速在SX-3568商显主板的Android系统上实现双屏异显
文章出处:【微信公众号:ZLG致远电子】欢迎添加关注!文章转载请注明出处。
-
致远电子
+关注
关注
13文章
409浏览量
31472
原文标题:【技术分享】快速在SX-3568商显主板的Android系统上实现双屏异显
文章出处:【微信号:ZLG_zhiyuan,微信公众号:ZLG致远电子】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
MD9360多屏同显异显应用实例
![MD9360多屏同<b class='flag-5'>显</b><b class='flag-5'>异</b><b class='flag-5'>显</b>应用实例](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
3568F-三屏同显、异显方案演示
新品|酷暑的新打开方式:SXB3568主板
![新品|酷暑的新打开方式:SXB<b class='flag-5'>3568</b><b class='flag-5'>主板</b>](https://file1.elecfans.com/web2/M00/8F/50/wKgZomTMciWAD54NAABOGP2pQZY452.png)
全志T3+Logos FPGA开发板——双屏异显开发案例
广和通智能模组助力双屏异显技术革新
三商显产品的EMC问题整改案例
![三<b class='flag-5'>商</b><b class='flag-5'>显</b>产品的EMC问题整改案例](https://file1.elecfans.com/web2/M00/C6/AC/wKgZomYLpQmAA7e2AAAd1_zY74U298.png)
评论