Android9.0新特性

2018-04-08  本文已影响1229人  gogoingmonkey

1、wifi RTT

室内WIFI定位 Android P增加了对RTT Wi-Fi协议的支持,以此作为室内定位的基础。
在支持硬件支持的Android P设备上,开启定位并且打开WIFI扫描后就可以使用该功能进行定位。应用可以测量与附近支持RTT的Wi-Fi接入点(AP)的距离。设备必须启用位置并启用Wi-Fi扫描(在设置>位置下)。使用这个功能不会连接到WIFI,而且为了保持隐私,只有手机能确定AP到设备的距离,反之则不能。 如果设备测量到3个或更多AP的距离,则可以使用多点定位算法来估算最适合这些测量值的设备位置。其结果通常可以精确到1至2米范围

 //注:该处在2018.3.8的版本中还有bug,WIFI_RTT_RANGING_SERVICE没有添加到@ServiceName标记中 
WifiRttManager wifiRttManager = (WifiRttManager) getSystemService(Context.WIFI_RTT_RANGING_SERVICE); 
RangingRequest.Builder builder = new RangingRequest.Builder(); 
builder.addAccessPoint(); 
builder.addWifiAwarePeer(); 
wifiRttManager.startRanging(builder.build(), () -> {...}, new RangingResultCallback{...});

刘海屏支持

可以使用类似windowInsets.getDisplayCutout()来获取一些你想要的信息。现在比较主流的厂家 比如华为P20 Vivo Oppo R15都学习苹果的刘海设计。

//您可以在自己的View中获取到不应该绘制的部分屏幕 
getRootWindowInsets().getDisplayCutout().getBounds(); 
getRootWindowInsets().getDisplayCutout().getSafeInsetBottom(); 
getRootWindowInsets().getDisplayCutout().getSafeInsetLeft(); 
getRootWindowInsets().getDisplayCutout().getSafeInsetRight(); 
getRootWindowInsets().getDisplayCutout().getSafeInsetTop(); 
//也可以设置Window的属性 
WindowManager windowManager = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE); 
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(); 
layoutParams.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
 layoutParams.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT; 
layoutParams.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER;

3.通知栏的体验优化

从安卓7.0 开始优化 在P版本可以使用setData()来显示图像

 Notification.Builder builder = new Notification.Builder(this, "a"); 
//新的聊天对象 Notification.Person p = new Notification.Person();
//在MessagingStyle中用Person代替了以往的CharSequence
Notification.MessagingStyle messageStyle = new Notification.MessagingStyle(p); 
Notification.MessagingStyle.Message message = new Notification.MessagingStyle.Message("aaa", 100, p); 
//可以显示图像了
message.setData(); 
messageStyle.addMessage(message); 
builder.setStyle(messageStyle); 
Notification notification = builder.build();

4.多相机支持和相机更新

5.新的图片解码

Android P新增了ImageDecoder类,为解码图像提供了一种更优的方法。由此可以用ImageDecoder来替换BitmapFactory和BitmapFactory.Options。更多使用方法请参见官方API。

String filePath = "test";
File file = new File(filePath);
ImageDecoder.Source source = ImageDecoder.createSource(file);
ImageDecoder.decodeBitmap(source);
ImageDecoder.decodeDrawable(source, (imageDecoder, imageInfo, source1) -> {
    //裁剪图像
    imageDecoder.setCrop();
    //调整大小
    imageDecoder.setResize();
});
BitmapFactory.decodeFile(filePath);

6.新的动画库:

Android P引入了一个新的AnimatedImageDrawable类来绘制和显示GIF和WebP动画图像。 AnimatedImageDrawable与AnimatedVectorDrawable类似,因为AnimatedImageDrawable动画也是基于RenderThread工作的。 RenderThread本身在内部使用工作线程进行解码,因此解码不会干扰RenderThread。 这种实现允许您的应用拥有动画图像,而无需管理其更新或干扰应用的UI线程。

Drawable d = ImageDecoder.decodeDrawable(...); 
if (d instanceof AnimatedImageDrawable) { // Prior to start(), the first frame is displayed ((AnimatedImageDrawable) d).start(); }

7.安全 性更高,指纹和 敏感交易的

上一篇下一篇

猜你喜欢

热点阅读