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-Presentation双屏异显-一看就懂篇
[Android6.0][RK3399] 双屏异显代码实现流程分析
[Android6.0][RK3399] 双屏异显代码实现流程分析