Android 8.0 Oreo 新特性

本文详细介绍了Android 8.0 Oreo的主要新特性,包括自动填充功能API、画中画功能、通知API、Instant Apps、Emoji更新、自适应字体大小、Adaptive Icons、HTTP(s)规则变更、新添加的权限和蓝牙API等。此外,还探讨了后台执行限制、智能共享、位置限制API的改变,以及新增的StrictMode检测、缓存管理和内容提供程序分页等功能,帮助开发者更好地理解和利用Android 8.0的新特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android 8.0 Oreo 新特性:

1.自动填充功能 API

其实就是EditText自动记住用户名密码功能,需要用户登录google帐号,并允许自动记录自动填充功能。
打开服务的方式 Settings > System > Languages & input > Advanced > Input assistance > Autofill service.
并且自填充功能也需要设置一个密码,当输入框第一次获取焦点时,会弹出一个小窗口是否自填充,如果有自填充记录,会先让用户输入这个密码,然后就会自动填充对应的用户名和密码。
也可以长按编辑框弹出的小窗口里点击更多,也有自动填充选项。
直接在EditText加一个参数 android:autofillHints=”username” 或 android:autofillHints=”password”即可快速应用。
Demo

调查一下有没有简单的方式
没有简单的方式,但是设置服务只需设置一次。使用自填充服务时没有省略密码的途径。
已尝试换了一个新的包名,当作令一个新服务。设置里面服务是单选框,只能选择一个服务。这个服务相当于是系统的一套服务,可以给所有带autofillHints标签的EditText通用。
代码已验证 :不同包名的应用,只要android:autofillHints标签一直,可以通用一套历史数据。
标签不同提示的用户内容也不同。
不同标签的EditText第一次输入新账户时,会提示是否保存到自填充服务中。

2.画中画功能 API

其实国内好多应用都支持这个功能了,现在google是集成到系统层。
类似微信悬浮窗口视频功能。可以在播放视频时使用
使用方法:
先在Manifest里声明当前Activity支持画中画

<activity android:name="VideoActivity"
    android:supportsPictureInPicture="true"
    android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
    ...
/>

切换方式:

    //切换到画中画模式,由 args 指定纵横比和其他配置设置
    Activity.enterPictureInPictureMode(PictureInPictureParams args)

在Activity切换到画中画模式时,系统会认为Activity处于暂停状态,并调用Activity的onPause()方法。
所以应该在onPause()方法中处理一下,让视频继续播放。在Activity的onPause()方法中检查画中画,并对播放做相应处理。
例如:

@Override
public void onPause() {
    // If called while in PIP mode, do not pause playback
    if (isInPictureInPictureMode()) {
        // Continue playback
        ...
    }
}

因为画中画界面很小,所以在Activity进入画中画模式时,Activity应仅显示视频播放,隐藏掉一些不必要的UI元素

 @Override
public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) {
    super.onPictureInPictureModeChanged(isInPictureInPictureMode);
    if (isInPictureInPictureMode) {
        //处理UI界面,隐藏掉控制按钮等,只留下视频播放窗口
    } else {
        //恢复UI界面,启用控制按钮视频详情等UI元素
    }
}

Demo

同一个应用里是否支持画中画
已验证,可以在同一个应用中,支持画中画,点击画中画模式后,背景界面会返回上一个Activity。
已验证,系统不支持同时开启多个小窗口,系统只显示最后一个,不论这两个小窗口是不是同一个app的。

3.通知 API

Notification Dots:有新消息时,图标右上角会有小圆圈。并且长按图标,也会显示通知详情。

设置颜色,方便凸显自己应用的通知。

Notification.Builder.setColor() 

设置通知超时,如果一个通知显示过长时间用户没有处理,可以自动消失。

Notification.Builder.setTimeoutAfter() 

休眠:系统新功能。在通知处横滑,有选择休眠一小时的功能。

通知清除:系统现在可区分通知是由用户清除,还是由应用移除。要查看清除通知的方式,应实现 NotificationListenerService 类的新 onNotificationRemoved() 函数。

发送的消息不仅可以通过id区分,还可以通过自定义类别区分
新的特性看在demo中查看:

调起系统设置界面

    Intent i = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS);
    i.putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName());
    i.putExtra(Settings.EXTRA_CHANNEL_ID, channel);//自定义的通知类型,可以不传递此参数
    startActivity(i);

Demo

如果不传参数,会不会默认一类
调起设置界面可以不传通知类型参数。
老式的用法是NotificationCompat.Builder,此用法不需要传递通知类型参数,8.0任然可以使用此方法,是默认一种类型。
新式的用法是Notification.Builder,需要传递类型参数
启动通知时,必须先声明这个参数,再使用,不能不传参数。

//创建一个通知类型:
Notifica
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值