HDMI输出支持双屏幕编程(HDMI out programming for dual screen

2019-07-29 15:25发布

在我的搜索,我发现,Android SDK提供了用于控制HDMI端口的活动和处理HDMI输出,截至目前不支持。 虽然某些设备制造商如摩托罗拉(不知道是否有任何其他确实太)好一点的控制提供的API。 下面是链接,他们两个人,外面的双屏幕一个(这符合我的要求很接近)的支持。

摩托罗拉HDMI状态API

摩托罗拉HDMI双屏API

镜像是在连接HDMI的默认行为,但是,我想我的应用程序运行在一个HDMI绑定服务的。 这将使手机可以同时执行其他任务,W / O干扰HDMI屏幕上运行我的服务。

有人可以请建议我该怎么做呢? 或者,如果其他厂商提供类似的灵活性摩托罗拉?

Answer 1:

创建服务类,像这样。

public class MultiDisplayService extends Service {
    @Override
    public void onCreate() {
        super.onCreate();
        DisplayManager dm = (DisplayManager)getApplicationContext().getSystemService(DISPLAY_SERVICE);
        if (dm != null){
            Display dispArray[] = dm.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION);

        if (dispArray.length>0){
            Display display = dispArray[0];
            Log.e(TAG,"Service using display:"+display.getName());
            Context displayContext = getApplicationContext().createDisplayContext(display);
            WindowManager wm = (WindowManager)displayContext.getSystemService(WINDOW_SERVICE);
            View view = LayoutInflater.from(displayContext).inflate(R.layout.fragment_main,null);
            final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                    WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.TYPE_TOAST,
                    WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
                    PixelFormat.TRANSLUCENT);
            wm.addView(view, params);
        }
    }
}

在你的应用程序类启动服务,也许吧。

public class MultiDisplayApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        startService(new Intent(this, MultiDisplayService.class));
    }
}

你可能会需要更复杂的显示添加/基于删除逻辑DisplayManager.DisplayListener

mDisplayManager = (DisplayManager) this.getSystemService(Context.DISPLAY_SERVICE);
mDisplayManager.registerDisplayListener(this, null);

使用WindowManager.LayoutParams.TYPE_TOAST不需要权限,但似乎是一个黑客。 WindowManager.LayoutParams.TYPE_SYSTEM_ALERT可能更为合理,但requieres

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

在AndroidManifest。



文章来源: HDMI out programming for dual screen