美文网首页
Android9.0新特性

Android9.0新特性

作者: gogoingmonkey | 来源:发表于2018-04-08 14:05 被阅读1229次

    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.安全 性更高,指纹和 敏感交易的

    相关文章

      网友评论

          本文标题:Android9.0新特性

          本文链接:https://www.haomeiwen.com/subject/wrgphftx.html