首页 Android 正文
  • 本文约1460字,阅读需7分钟
  • 137
  • 0

Android双屏异显

摘要

Android双屏异显一台设备有两个屏幕,默认是主屏和副屏都是显示一样的画面。 这里实现让副屏显示其他画面 第一步、申请权限AndroidManifest.xml中添加两个权限: <!-- ...

Android双屏异显

一台设备有两个屏幕,默认是主屏和副屏都是显示一样的画面。

这里实现让副屏显示其他画面

第一步、申请权限

AndroidManifest.xml中添加两个权限:

  <!-- 显示系统窗口权限 -->
  <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
  <!-- 在 屏幕最顶部显示权限-->
  <uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />

因为android 6.0及之后,android.permission.SYSTEM_OVERLAY_WINDOW需要系统动态授权才能启用,所以在APP启动时加入如下代码进行动态授权:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
    //启动Activity让用户授权
    if (!Settings.canDrawOverlays(this)) {
        Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse( "package:com.xxx.自己的包名"));
        startActivityForResult(intent, 1010);
        return;
    }
}

说明一下:Android8.0及以后只能使用TYPE_APPLICATION_OVERLAY窗口类型来创建悬浮窗。(其它窗口类型在8.0已经被废弃掉)

第二步、副屏显示页面代码

Android 提供了一个叫 Presentation 类,来实现第二屏, 继承Presentation实现第二屏,相当于一个特殊的弹窗窗口(具体实现)

public class DifferentDisplay extends Presentation {
    public DifferentDisplay(Context outerContext, Display display) {
        super(outerContext, display);
        getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.different_display);
    }
}

第三步、使用副屏显示

public class MainActivity extends AppCompatActivity {

    DifferentDisplay mPresentation;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (mPresentation == null) {
            DisplayManager mDisplayManager;// 屏幕管理类
            mDisplayManager = (DisplayManager) this.getSystemService(Context.DISPLAY_SERVICE);
            Display[] displays = mDisplayManager.getDisplays();

            mPresentation = new DifferentDisplay(this, displays[displays.length - 1]);// displays[1]是副屏
            mPresentation.show();
        }
    }
}
标签:双屏异显

扫描二维码,在手机上阅读


    评论