一臺設(shè)備有兩個屏幕二拐,默認(rèn)是主屏和副屏都是顯示一樣的畫面寇蚊。
這里實(shí)現(xiàn)讓副屏顯示其他畫面
第一步芭碍、申請權(quán)限
AndroidManifest.xml
中添加兩個權(quán)限:
<!-- 顯示系統(tǒng)窗口權(quán)限 -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<!-- 在 屏幕最頂部顯示權(quán)限-->
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
因為android 6.0
及之后族吻,android.permission.SYSTEM_OVERLAY_WINDOW
需要系統(tǒng)動態(tài)授權(quán)才能啟用辽旋,所以在APP啟動時加入如下代碼進(jìn)行動態(tài)授權(quán):
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
//啟動Activity讓用戶授權(quán)
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窗口類型來創(chuàng)建懸浮窗。(其它窗口類型在8.0已經(jīng)被廢棄掉)
第二步聚至、副屏顯示頁面代碼
Android 提供了一個叫 Presentation 類酷勺,來實(shí)現(xiàn)第二屏, 繼承 Presentation
實(shí)現(xiàn)第二屏扳躬,相當(dāng)于一個特殊的彈窗窗口(具體實(shí)現(xiàn))
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();
}
}
}