双屏异显——Presention
- 双屏异显——Presention是一个应用于辅助屏显示的一个组件
- 一个双屏收银 主屏选择商品 副屏给客户显示需求
- Presention相当于一个在Window上显示的一个Dialog
- 与Activity一样Presention也是通过“setContentView();”来设置layout的。
<!-- 显示系统窗口权限 -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 在 屏幕最顶部显示addview -->
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
/**
* @author renquan
*/
public class SecondaryPresention extends Presentation {
public SecondaryPresention(int flag, Context outerContext, Display display) {
super(outerContext, display);
this.flag = flag;//主要用于显示不同的layout
this.context = outerContext;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
switch (flag) {
case 0:
setContentView(R.layout.second_default_layout);//默认显示
break;
case 1:
setContentView(R.layout.second_payface_layout);//刷脸支付页面
break;
default:
break;
}
}
}
//先获取权限
// 先判断是否有权限。
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED
|| ContextCompat.checkSelfPermission(this,Manifest.permission.WRITE_SETTINGS) != PackageManager.PERMISSION_GRANTED) { } else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.WRITE_SETTINGS}, 1);
}
//在Activity中
private void initSecond() {
mediaRouter = (MediaRouter) getSystemService(Context.MEDIA_ROUTER_SERVICE);
MediaRouter.RouteInfo localRouteInfo = mediaRouter.getSelectedRoute(MediaRouter.ROUTE_TYPE_LIVE_AUDIO);
display = localRouteInfo != null ? localRouteInfo.getPresentationDisplay() : null;
if (display != null) {
showPresentation(display, 0);
} else {
Toast.makeText(this, "不支持分屏", Toast.LENGTH_SHORT).show();
}
}
/**
* 主屏back键/home键隐藏后,副屏仍可使用。但是,再次打开主屏,副屏会失联,所以作如下设置
*
* @param display
*/
public static void showPresentation(Display display, int flag) {
secondaryPresention = null;
secondaryPresention = new SecondaryPresention(flag, MyApplication.context, display);
secondaryPresention.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);//TYPE_SYSTEM_ALERT / TYPE_PHONE
secondaryPresention.show();
}
ok简单的Presention就可以显示了
当然你在Android是无法操作的需要一个双屏设备(超市中的购物设备——双屏)
如果需要显示你可以再开发者选择中设置 默认是透明的
————————————————
原文链接:https://blog.youkuaiyun.com/weixin_45680654/article/details/111871686