Android 双屏异显——Presention

Posted 吹着空调哼着歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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是无法操作的需要一个双屏设备(超市中的购物设备——双屏)
如果需要显示你可以再开发者选择中设置 默认是透明的

以上是关于Android 双屏异显——Presention的主要内容,如果未能解决你的问题,请参考以下文章

Android 双屏异显的实现

Android-Presentation双屏异显-一看就懂篇

[Android6.0][RK3399] 双屏异显代码实现流程分析

[Android6.0][RK3399] 双屏异显代码实现流程分析

iTOP-iMX6开发板Android系统下LVDS和HDMI双屏异显方法

rk3288 MIPI+EDP 双屏显示