Android 双屏异显——Presention

双屏异显——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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值