云开·全站APP登录入口 Android O新特性和行为变更总结
1.Android O新特性
前段时间解决了几个 QQ 音乐多窗口屏幕显示的 Bug,虽然这个问题不是 Android O 版本的问题,但是多窗口是在 Android 7.1 之后才引入的(多窗口适配有一些需要注意的地方,不过这也是一个了解 Android O 版本新特性的好机会,另外 Google IO 大会刚过,趁热介绍一下)。
发布会上介绍的Android O新版本更新优化主要集中在Fluid Experiences和Vitals两个方面,其中Fluid Experience主要包括Notification Dots、Picture In Picture、Autofill Framework和Smart Text Selection四大显著特性;而Vitals则主要针对电池续航、安全性、启动时间和稳定性进行了优化。
1.1 变更通知
Android O 版本对通知进行了重新设计,使其管理起来更加简单。首先,引入了通知渠道,让用户能够统一管理通知。当 targetApi 设置为 O 版本时,必须实现一个或多个通知渠道。如果设置为 O 版本之前的版本,则在 O 版本设备上的行为与 7.x 版本一致。通知渠道提供了一种将应用内的通知变成易于管理的群组的方法。在创建通知渠道并提交给通知管理器后,通知渠道的行为无法通过编程方式修改。这些设置随后由用户控制。用户现在可以使用一致的系统 UI 来管理大多数与通知相关的设置。发布到同一个通知渠道的所有通知都具有相同的行为。当用户长按通知或通过设置进入通知设置页面时,可以看到这些界面:
从这个设置页面可以看到,用户可以关闭应用的所有通知渠道,也可以关闭单个通知渠道。每个通知渠道都有对应的行为,用户可以自行修改,比如修改通知渠道的优先级。如果支持的话,用户还可以声明该通知是否也显示为应用的徽章。Android O 还引入了通知徽章,当应用的通知没有被关闭时,应用的图标上会显示一个徽章。长按应用的图标还会显示通知的详细信息:
O版本废弃了设置单条通知优先级的功能,现在设置优先级是针对通知渠道的,该通知渠道的所有通知都受优先级影响,优先级从IMPORTANCE_NONE(0)(#IMPORTANCE_NONE)到IMPORTANCE_HIGH(4)(#IMPORTANCE_HIGH),对用户的提醒级别从小到大。创建通知渠道组、向渠道组发送通知、修改通知渠道组设置的代码请参考Google文档:Notification Channels (#CreatingGroups)。
同时引入了通知休眠功能,用户可以休眠通知,并在指定时间重新出现。休眠时,通知的设置仍然可以修改,但通知不会立即出现。此外,还可以设置通知超时时间,在一段时间后自动取消通知。其他功能,如获取通知清除方式、修改通知背景颜色、修改通知样式等,请参考官方文档:Android O-Notification (#notifications)。
使用场景:针对应用不同优先级的通知设置不同的通知渠道,强提醒可以发出声音、振动,弱提醒可能只需要呼吸灯、角标等kaiyun 官方网站,这样可以最大程度减少对用户的干扰。
1.2 画中画模式
在Android O之前,画中画模式已经在Android TV上可用,而Android O将这个功能推广到了其他Android设备。当Activity处于PIP模式时,会回调生命周期的onPause方法。因此在PIP模式下,视频播放等操作不能在onPause中暂停,而应该在onStop中暂停。这一点和多窗口模式是一样的,我们来看看它的效果:
我们可以看到,切换出YouTube视频之后,会回到桌面,此时所有应用的上方会浮起一个视频播放窗口,这个小窗口正在播放视频。此时点击这个小窗口区域会弹出几个操作按钮,你可以选择关闭或者重新打开YouTube视频播放页面,底部的按钮也可以自定义,非常方便。
这里要提一下的是,升级到 8.0 后不会立即激活该功能。激活该功能可能有点复杂:
直到系统提示System UI Tuner已开启;
完成以上操作后,进入支持画中画模式的页面,例如YouTube的视频播放页面,点击导航栏中新增的按钮kaiyun下载app下载安装手机版,页面就会收缩为小窗口进行播放,如上例图所示。
要指定 Activity 可以使用 PIP 模式,您需要在 Manifest 文件中将 android:supportsPictureInPicture 设置为 true。除了上述用户手动将 Activity 转为 PIP 模式之外,您还可以使用 Activity.enterPictureInPictureMode(PictureInPictureArgs args) 动态将 Activity 设置为 PIP 模式。PictureInPictureArgs 对象参数用于指定 Activity 处于 PIP 模式时的行为。此对象还指定各种属性,例如 Activity 的首选宽高比。您还可以使用 Activity.setPictureInPictureArgs() 更新 Activity 的 PIP 配置设置。如果 Activity 当前处于 PIP 模式,则此设置将被更新。
使用场景:这个功能很贴心,相比之前的多窗口,更加强调了两个应用的主次区分,适用场景可能是最小化视频播放页面、最小化地图应用等,对于QQ音乐来说,可以在直播页面、MV播放页面等使用。
1.3 自适应图标
为了帮助开发者更好地与设备 UI 集成,Android O 支持创建自适应图标,系统可以根据设备选择的遮罩以不同的形状显示这些图标。系统还会自动与图标进行交互,并在启动器、快捷方式、设置、共享对话框和概览屏幕中使用它们:
您可以通过定义两个图层(前景和背景)来指定桌面图标的外观。您必须提供不带形状和阴影的 PNG 格式图像作为图层:
在以前的 Android 版本中,图标大小定义为 48 x 48 dp,但现在图层大小必须按照以下规范定义:
两个图层都必须是 108 x 108 dp。
图层中心的 72 x 72 dp 区域是可见区域。
系统在边缘保留了 18dp 的范围,用于产生有趣的视觉效果,如视差和反弹:
创建自适应图标请参考:使用Android Studio创建自适应图标(#studio):
这样会把之前比较混乱的图标统一起来,现在很多Android应用图标都是方形的,有的有弧形的,弧形的弧度也不一样,有的图标还是圆形的,有的则是不规则的图片,统一之后,所有的应用图标都会有一致的风格,比较推荐。
1.4 自动填充框架
Android O 还引入了自动填充框架,简化了用户在账户创建、登录和信用卡表单方面的工作。用户选择自动填充框架后,新老用户都可以使用自动填充框架。我们在使用 Chrome 时就体验过自动填充用户名和密码的功能。不过这次是在系统层面提供的,可以快速填写用户名、地址甚至密码,用户也无需担心安全问题。
同样的,也需要在设置页开启自动填充框架:设置 > 应用和通知 > 默认应用 > 自动填充应用,关于如何适配自动填充框架:Autofill Framework():
对于这种场景,可以参考Chrome的记住账号和密码功能,比如现在的QQ登录其实就有类似的Auto-Fill功能,更适合记住账号和密码这样的场景。
1.5 XML 字体和可下载字体
Android O已经引入了XML字体,可以在资源文件中建立一个字体资源文件夹,放上对应的字体ttf文件,然后建立自己的字体xml文件,在R文件中编译通过,最后作为TextView等的资源使用。
同时,Android O 和 Android 支持库 26 提供了可以从其他应用获取字体资源的 API,而不用将字体资源打包到 apk 中或者让 apk 下载。通过 Android 支持库版本 26,该功能可以在 14 以上版本的设备上支持。具体的 API 可以看这个:DownloadableFonts() 或者这个 android-DownloadableFonts():
适用场景:这个比较适合在公司一系列app中使用,同时更换皮肤和字体等。
1.6 固定快捷方式
该功能自 7.1.1 开始可用。长按桌面图标会显示一个应用快捷方式菜单栏。然后长按菜单栏上的某个项目会将其向下拖动以成为一个单独的应用图标。向下拖动的单独应用图标即为固定快捷方式。虽然该功能是在 7.1.1 中引入的,但在 O 版本中我们可以使用提供的 API 按照某些步骤使用代码添加它:固定快捷方式和小部件(#shortcuts)。
适用场景:这样可以把某些应用中经常使用的小功能分离出来,比如QQ中最常用的联系人,音乐里的识别歌曲功能。
1.7 TextView字体自动适配
Android O 版本允许设置 TextView 的字体大小,使其根据设置的初始大小自动放大或缩小,使字体显示在不同的屏幕、不同的显示内容上达到最佳效果。另外,使用 Android support library 26 中的 android.support.v4.widget.TextViewCompat 可以将该功能支持到 14 版本。Android O 版本的 TextView 已经支持 autosize,设置 autosize 功能也很简单,在 O 版本中,只需要使用 setAutoSizeTextTypeWithDefaults(@AutoSizeTextType int autoSizeTextType) 或者
就是这样,使用细节:Autosizing TextViews()。
适用场景:当TextView显示内容很多时,如果可以接受,适当缩小字体,增加显示的字数。
1.8 媒体增强
Android O版本新增VolumeShaper类,为应用提供淡入淡出等音效;新增AudioFocusRequest类,提供检测音频焦点的新功能;新增以下方法:getMetrics方法用于返回包含配置和性能信息的Bundle对象:
MediaPlayer 添加了一些新方法,可用于增强应用程序处理媒体播放的能力:
音频录制器 MediaRecorder 现在支持可用于流式传输的 MPEG2_TS 格式,MediaMuxer 现在可以处理任意数量的音频和视频流,而不仅限于一个音频轨道和/或一个视频轨道。使用 addTrack() 可以混合任意数量的轨道,MediaMuxer 还可以添加一个或多个包含用户定义的每帧信息的元数据轨道。元数据的格式由应用程序定义。元数据轨道仅支持 MP4 容器。
1.8.1 音频播放设置
Android O 允许应用查询和获取设备如何发出声音。应用可以通过 requestAudioFocus() 函数提交设备范围音频焦点的细粒度请求。例如kaiyun官方网app下载app,通过传入 AudioFocusRequest 对象并设置相应的类型,可以指定要获取的焦点类型。同时,还可以设置音频焦点被抢占时应用的行为,是继续安静地播放还是完全暂停。
1.8.2 LDAC音质增强
值得一提的是,在Android O上引入了索尼“捐助”的LDAC无线声音加密格式,用于高品质音乐的蓝牙通信,从而可以通过蓝牙耳机播放真正的无损音乐:
可以看到使用LDAC无线音频加密协议后,最高传输速率可以达到990kbps,这可真是个好消息啊,不是吗?不过可惜的是,LDAC只能用在索尼的耳机上,比如售价330英镑的MDR-1000X,索尼真棒~~
1.9 其他功能
1、可以设置Activity支持广色域;
2.可以设置最大屏幕比例;
3.多屏支持,支持将外接显示器连接到设备;
4.最新版表情符号支持,使用EmojiCompat类可以让应用在旧版应用上显示新的表情符号;
5.支持点击位置的捕捉;
6.支持设置应用类别。这些类别用于将具有相同目的或功能的应用分组在一起呈现给用户,例如按流量消耗、电池消耗和存储消耗对应用进行分类。
7.智能文本选择。这个功能可能有人在今年罗永浩的锤子手机发布会上见过,思路很类似,复制一个号码,就会出现直接拨打电话的选项,复制一个地址,就会弹出进入地图的选项,地图APP可以看看这个地方能不能成为一个很方便的入口。
2 Android O 版本行为变更
这里列出了可能影响您的应用的几个当前行为变化。
2.1 后台执行限制
在 Android O 中,当进程进入缓存状态时,如果不存在活跃组件,系统会释放应用持有的所有唤醒锁(缓存状态意味着不存在正在执行的前台 Activity 或前台服务)。同时,Android O 上后台运行的应用对后台服务的使用会受到限制,应用也无法在 Manifest 中注册一些不必要的隐式广播用于自启动等操作:
上述限制针对targetApi为0及以上的应用有效,但用户可以在设置页面设置此限制对所有targetApi应用生效。
在前台时,应用可以自由创建和运行前台和后台服务。在后台时,在某些情况下,应用仍可以在持续几分钟的时间窗口内创建和使用服务,包括:
然而,在时间窗口结束后,应用程序被视为空闲状态,系统将停止应用程序的后台服务,就像应用程序调用了服务的 Service.stopSelf() 方法一样。
官方推荐使用JobScheduler来处理后台任务,详细的适配指南请参见Background executive limit()。
2.2 安全性
Android O 包括以下与安全相关的变更:
我要评论