地图导航开启后,将地图app弄到后台运行,会发送系统通知。
在Unity中去截获这些通知内容,这些内容包括文字以及导航icon图标,这些信息的获取通过NotificationListenerService得到:
1,首先从通知中取得contentView或bigContentView,他们是RemoteViews类型
2,把contentView转换为View:
View contentView = notification.contentView.apply(this, null);
3, 得到的View是一个ViewGroup, 得到所有的子View并遍历
ArrayList contentViewList = getAllChildren(contentView);
4, 如果子View是一个TextView,拿到上面的文本
String str = ((TextView) v).getText().toString();
5, 如果子View是一个ImageView,发现显示的是导航动作icon(把这个ImageView转换为bitmap,再通过ImageView.setImageBitmap把这个View显示到测试Activity中)。所以如果要再Unity中显示这个icon,可以先把ImageView转为Bitmap,Bitmap转为byte数组,在android端(aar)提供一个接口去get这个byte数组。在Unity端,使用这个byte[]去创建一个Texture2D,再用它给Unity 的Image的Spirit赋值。
关键代码(继承通知接口的类中):
private byte[] mNaviIcon= new byte[0];
public byte[] getNaviI