Android 各个版本以及新特性

Android发行版本

Android 各代版本 Logo

Android 各代版本 Logo

 

Android在正式发行之前,最开始拥有两个内部测试版本,并且以著名的机器人名称来对其进行命名,它们分别是:阿童木(AndroidBeta),发条机器人(Android 1.0)。后来由于涉及到版权问题,谷歌将其命名规则变更为用甜点作为它们系统版本的代号的命名方法。甜点命名法开始于Android 1.5发布的时候。作为每个版本代表的甜点的尺寸越变越大,然后按照26个字母数序:纸杯蛋糕(Android 1.5),甜甜圈(Android 1.6),松饼(Android 2.0/2.1),冻酸奶(Android 2.2),姜饼(Android 2.3),蜂巢(Android 3.0),冰激凌三明治(Android 4.0),果冻豆(Jelly Bean,Android4.1和Android 4.2),奇巧(KitKat,Android 4.4),棒棒糖(Lollipop,Android 5.0),棉花糖(Marshmallow,Android 6.0),牛轧糖(Nougat,Android 7.0)。 [8-10] 

1.1

2008年9月发布的Android第一版。

1.5

Cupcake(纸杯蛋糕):2009年4月30日发布。

主要的更新如下:

拍摄/播放影片,并支持上传到Youtube;支持立体声蓝牙耳机,同时改善自动配对性能;最新的采用WebKit技术的浏览器,支持复制/贴上和页面中搜索;GPS性能大大提高;提供屏幕虚拟键盘;主屏幕增加音乐播放器和相框widgets;应用程序自动随着手机旋转;短信、Gmail、日历,浏览器的用户接口大幅改进,如Gmail可以批量删除邮件;相机启动速度加快,拍摄图片可以直接上传到Picasa;来电照片显示。

1.6

Donut(甜甜圈):2009年9月15日发布。

主要的更新如下:

重新设计的Android Market手势;支持CDMA网络;文字转语音系统(Text-to-Speech);快速搜索框;全新的拍照接口;查看应用程序耗电;支持虚拟私人网络(VPN);支持更多的屏幕分辨率;支持OpenCore2媒体引擎;新增面向视觉或听觉困难人群的易用性插件。

2.0

2009年10月26日发布。

主要的更新如下:

优化硬件速度;"Car Home"程序;支持更多的屏幕分辨率;改良的用户界面;新的浏览器的用户接口和支持HTML5;新的联系人名单;更好的白色/黑色背景比率;改进Google Maps3.1.2;支持Microsoft Exchange;支持内置相机闪光灯;支持数码变焦;改进的虚拟键盘;支持蓝牙2.1;支持动态桌面的设计。

Android 2.2/2.2.1 Froyo(冻酸奶) :2010年5月20日发布。主要的更新如下:

整体性能大幅度的提升;3G网络共享功能;Flash的支持;App2sd功能;全新的软件商店;更多的Web应用API接口的开发。

2.3.x

Gingerbread(姜饼) :2010年12月7日发布。

主要的更新如下:

增加了新的垃圾回收和优化处理事件;原生代码可直接存取输入和感应器事件、EGL/OpenGLES、OpenSL ES;新的管理窗口和生命周期的框架;支持VP8WebM视频格式,提供AACAMR宽频编码,提供了新的音频效果器;支持前置摄像头、SIP/VOIP和NFC(近场通讯);简化界面、速度提升;更快更直观的文字输入;一键文字选择和复制/粘帖;改进的电源管理系统;新的应用管理方式。

3.0

Honeycomb(蜂巢):2011年2月2日发布。

主要更新如下:

优化针对平板 ;全新设计的UI增强网页浏览功能 ;in-app purchases功能。

3.1

Honeycomb(蜂巢) :2011年5月11日布发布。

版本主要更新如下:

经过优化的Gmail电子邮箱 ;全面支持Google Maps ;将Android手机系统跟平板系统再次合并从而方便开发者;任务管理器可滚动,支持USB输入设备(键盘鼠标等) ;支持Google TV.可以支持XBOX 360无线手柄;widget支持的变化,能更加容易的定制屏幕widget插件。

3.2

Honeycomb(蜂巢):2011年7月13日发布。

版本更新如下:

支持7英寸设备;引入了应用显示缩放功能。

4.0

Ice Cream Sandwich(冰激凌三明治):2011年10月19日在香港发布。

安卓2.0版本安卓2.0版本

版本主要更新如下:

全新的UI;全新的Chrome Lite浏览器,有离线阅读,16标签页,隐身浏览模式等;截图功能;更强大的图片编辑功能;自带照片应用堪比Instagram,可以加滤镜、加相框,进行360度全景拍摄,照片还能根据地点来排序;Gmail加入手势、离线搜索功能,UI更强大;新功能People:以联系人照片为核心,界面偏重滑动而非点击,集成了Twitter、Linkedin、Google+等通讯工具。有望支持用户自定义添加第三方服务;新增流量管理工具,可具体查看每个应用产生的流量,限制使用流量,到达设置标准后自动断开网络。

4.1

Android 4.1Jelly Bean(果冻豆):2012年6月28日

新特性:

更快、更流畅、更灵敏;特效动画的帧速提高至60fps,增加了三倍缓冲;增强通知栏;全新搜索;搜索将会带来全新的UI、智能语音搜索和Google Now三项新功能;桌面插件自动调整大小;加强无障碍操作;语言和输入法扩展;新的输入类型和功能;新的连接类型。

4.2

Android 4.2 Jelly Bean 原生系统用户界面Android 4.2 Jelly Bean 原生系统用户界面

Android 4.2Jelly Bean(果冻豆):2012年10月30日

Android 4.2沿用“果冻豆”这一名称,以反映这种最新操作系统与Android 4.1的相似性,但Android 4.2推出了一些重大的新特性,具体如下:

Photo Sphere全景拍照功能;键盘手势输入功能;改进锁屏功能,包括锁屏状态下支持桌面挂件和直接打开照相功能等;可扩展通知,允许用户直接打开应用;Gmail邮件可缩放显示;Daydream屏幕保护程序;用户连点三次可放大整个显示频,还可用两根手指进行旋转和缩放显示,以及专为盲人用户设计的语音输出和手势模式导航功能等;支持Miracast无线显示共享功能;Google Now现可允许用户使用Gamail作为新的数据来源,如改进后的航班追踪功能、酒店和餐厅预订功能以及音乐和电影推荐功能等。

4.4

Android 4.4KitKat(奇巧巧克力): 2013年下半年

2013年9月4日凌晨,谷歌对外公布了Android新版本Android 4.4KitKat(奇巧巧克力),并且于2013年11月01日正式发布,新的4.4系统更加整合了自家服务,力求防止安卓系统继续碎片化、分散化。 [11] 

5.0

Android 5.0Lollipop(棒棒糖):美国太平洋时间2014年10月15日

Android 5.0 系统使用一种新的Material Design设计风格。从图片上就能看到一些全新的设计。从图片上看,这套设计图对 Android 系统的桌面图标及部件的透明度进行的稍稍的调整,并且各种桌面小部件也可以重叠摆放。虽然调整桌面部件透明度对 Android 系统来说并不算什么新鲜的功能,但是加入了透明度的改进。界面加入了五彩缤纷的颜色、流畅的动画效果,呈现出一种清新的风格。采用这种设计的目的在于统一 Android 设备的外观和使用体验,不论是手机、平板还是多媒体播放器。

6.0

Android 6.0Marshmallow(棉花糖):2015年5月28日

新系统的整体设计风格依然保持扁平化的MeterialDesign风格。Android6.0在对软件体验与运行性能上进行了大幅度的优化。据测试,Android6.0可使设备续航时间提升30%。

7.0

Android 7.0Nougat(牛轧糖):2016年8月22日 [10]  [12] 

8.0

Android 8.0  Oreo(奥利奥):2017 年 8 月 21 日

9.0

Android 9.0  Pistachio Ice Cream(开心果冰淇淋):2017 年 8 月 21 日

 

 

野路子

android6.0、7.0、8.0新特性总结之开发应用时加以考虑的一些主要变更。

android6.0

参考一:简书Android 6.0 新特性详解

参考二:关于Android6.0以上系统的权限问题

参考三:值得你关注的Android6.0上的重要变化(一)

参考四:值得你关注的Android6.0上的重要变化(二)

参考五:Android从1.0到 6.0各版本的差别

参考六:Android历史版本 版本号对照 版本分布(截止到2017.11)

参考七:Android发展史(Android各版本特性-技术篇)(至android6.0) 

参考八: 了解Android已发布的各种版本(即1.0、2.0、3.0、4.0、5.0、6.0、7.0、8.0)

参考九:Android中判断当前API的版本号

参考十:关于Android6.0权限适配的问题

参考十一:Android 6.0权限机制及开发流程详解

参考十二:Android6.0动态权限申请步骤以及需要注意的一些坑

参考十三:彻底解决Android6.0权限管理问题


 

android7.0 

参考一:android 7.0新特性

参考二:Android7.0新特性,及Android N适配

参考三:Android7.0适配教程与心得

参考四:Android7.0适配(含实例)

参考五: Android 7.0 之拍照与图片裁剪适配

参考六:Android 7.0的适配问题,android.os.FileUriExposedException

参考七:项目android 6.0,7.0 版本适配问题

参考八:android app版本升级(DownloadManager、适配6.0、7.0)

参考九:Android N(Android 7.0)版本适配(开发者应该知道的一切新特性与新功能)

参考十:Android7.0新特性介绍(一)——多窗口支持

参考十一: Android7.0新特性介绍(二)——通知增强功能

参考十二:android7.0对开发有影响的变动

参考十三:Android7.0适配教程,心得

参考十四:Android 7.0

参考十五:Android 7.0 新特性详解


 android8.0

参考一:开发者必看|Android 8.0 新特性及开发指南

参考二:安卓8.0和7.0有什么区别 8.0系统新功能盘点

参考三:Android 8.0有什么新功能?看看这个就够了

参考四: Android O (8.0) 新特性介绍

参考五:Android 8.0新特性(看这篇文章就够了)

参考六:Android 8.0 新特性有哪些?

参考七: Android8.0运行时权限策略变化和适配方案

参考八:值得你关注的Android8.0(Android O)上的重要变化

参考九:Android 8.0 功能和 API

参考十:公司项目Android8.0适配分析

参考十一:Android 8.0 功能和 API(developer.android.google.cn)



 

自己总结 

android6.0新特性:

1-android6.0对应api级别为23;

2-android6.0版本引入了一种新的权限模式---运行时权限。

用户可直接在运行时管理应用权限。这种模式让用户能够更好地了解和控制权限,同时为应用开发者精简了安装和自动更新过程。用户可为所安装的各个应用分别授予或撤销权限。

3-android6.0版本引入了针对空闲设备和应用的最新节能优化技术---休眠和应用待机模式(Doze and App Standby)

这些功能会影响所有应用,因此请务必在这些新模式下测试您的应用。

休眠模式(Doze):如果用户拔下设备的电源插头,并在屏幕关闭后的一段时间内使其保持不活动状态,设备会进入低电耗模式,在该模式下设备会尝试让系统保持休眠状态。在该模式下,设备会定期短时间恢复正常工作,以便进行应用同步,还可让系统执行任何挂起的操作。

应用待机模式(App Standby):应用待机模式允许系统判定应用在用户未主动使用它时处于空闲状态。当用户有一段时间未触摸应用时,系统便会作出此判定。如果拔下了设备电源插头,系统会为其视为空闲的应用停用网络访问以及暂停同步和作业。
要详细了解这些节能变更,请参阅对低电耗模式和应用待机模式进行针对性优化

4-BoringSSL
Android正在将OpenSSL库替换为BoringSSL库。这将影响你的应用在NDK中所链接的加密库,比如libcrypto.so和libssl.so,它们不是NDK API的一部分。这些库不是公开的API,因此在不同版本和设备上的变化也不会及时通知开发者。而且,这也将暴露你应用的安全缺陷。因此,需要修改你的native代码,通过JNI的方式调用Java的加密API或者静态链接你选择的加密库。

5-文本选择(Text Selection)
用户在应用中选择文字后,你现在可以显示一个浮动工具栏(floating toolbar),展示并进行剪切、拷贝、粘贴操作,交互过程的实现和contextual action bar的实现一样( Enabling the contextual action mode for individual views)。

6-USB连接(USB Connection)
android6.0版本,通过UAB端口连接设备,默认采用仅充电模式。通过USB连接设备并获取内容,必须明确的经过用户授权这种交互权限。如果你的应用支持通过USB端口的交互,要考虑到这种交互必须被明确的启用。

7-Android 密钥库变更

android6.0版本开始,Android 密钥库提供程序不再支持 DSA。但仍支持 ECDSA。

停用或重置安全锁定屏幕时(例如,由用户或设备管理员执行此类操作时),系统将不再删除需要闲时加密的密钥,但在上述事件期间会删除需要闲时加密的密钥。

8-WLAN 和网络连接变更。

9-相机服务变更

android6.0中,相机服务中共享资源的访问模式已从之前的“先到先得”访问模式更改为高优先级进程优先的访问模式。

(1)客户端应用进程基于优先级的方式访问相机子系统,包括打开和配置设备相机。用户可见的应用进程通常被赋予高优先级,使得相机资源的获取和使用更可靠。
(2)高优先级的应用能够“驱逐”低优先级应用,而使用相机(译注:高优先级应用能以抢占方式使用相机)
(3)在有合适的相机的硬件上,多个应用进程可以同时且独立地使用相机设备。但是,多进程同时访问的情况下,会导致相机设备的性能显著降低,而现在相机服务会检测并不允许此种情况发生。这种变化导致低优先级的应用被“驱逐”,直到没有其它应用直接访问同一个相机设备。
(4)改变当前使用者(译注:多用户情况下的用户切换)后,引起之前使用者所拥有的应用无法再使用相机。访问相机被限制在设备的当前使用者上。实际上,这意味着一个“guest”用户账户在切换到其它用户账户时,不能再保留一个运行的进程访问相机服务。

10-APK 验证

该平台现在执行的 APK 验证更为严格。如果在清单中声明的文件在 APK 中并不存在,该 APK 将被视为已损坏。移除任何内容后必须重新签署 APK。

11-锁屏下语音搜索

用户可以直接在锁屏状态下进行语音搜索,虽然现在的一些安卓手机支持语音唤醒功能,但这些语音唤醒都是第三方厂商开发的,而此次的Android 6.0在系统层面加入锁屏下语音搜索,这无疑会在体验上有一个明显的提升。

12-指纹识别

说到指纹识别,很多用户都会觉得现在的中高端安卓手机都支持,但事实上这些安卓手机的指纹识别都是各个厂商自行开发的并没有系统底层的支持。Android 6.0则在系统层面加入指纹识别,能提供原生指纹识别API,这不但降低了厂商开发指纹识别模块的成本,最重要的是原生指纹识别将会大大提升安卓手机的指纹识别支付安全性。

13-Now on Tap功能

Now on Tap功能是和Google搜索紧密结合的功能,它可以让谷歌从任何应用中进行搜索。例如,在微信中聊天的时候提到餐馆,那么就可以在不跳转的情况下进行谷歌搜索。

14-App Links

通过App Links功能,Android平台能够向网络服务器提出申请,自主识别链接内容。直接跳转到App客户端中,改善用户体验,有利于让用户在体验更完善的App客户端完成更多操作。

此外,在Android 6.0谷歌还加入了Android Pay进一步强化移动支付,同时也是为了对抗Apple Pay。在发布会上谷歌表示Android 6.0将在下周开始推送,Nexus5/6/7/9以及Nexus Player将能够在第一时间得到升级。

15-很有必要说明的(笔者觉得和应用开发密切相关的)共两处,第一Android 2.3,,第二处是6.0 以后的版本了。

首先,Android2.3 与之前的系统有很大改进,具体是,增加nfc 支持,增加sip支持(在没增加这些之前,android开发者要开发nfc或者sip的相关应用的难度和增加之后完全不同,Android2.3 后写nfc 或sip相关程序比之前要容易得多 ),第二个改进是把输入法的框架改了(主要是将之前的java实现变为c实现),结果是2.3以后输入法的输入效率更高了。 

至于6.0以后系统,第一开发工具只能用,谷歌官方的Android Studio 了。值得一提的是,从Android 4.4 开始,Android app 运行方式从原来的Dalvik 模式增加了一种可选模式 ART模式(全称是Android Runtime模式)。这种模式使得Android运行app的速度变快了(后面也有博客特别介绍)。还有就是从Android 5.0开始使用linux 3.0内核。这里就是多核处理器优化基础(因为linux内核中对于多核处理器进行了负载均衡处理)。

android6.0开发注意事项:

1-运行时权限检查(Runtime Permisssions)

作为开发者,当你的app的目标版本(target)为Android6.0(API 23)或更高时。

请确保在运行时进行权限的检查和请求。其中,

(1)新的方法checkSelfPermission()可以用来判断你的应用是否被授予了权限

(2)而requestPermissions()可请求权限。

即使你app的目标版本在android6.0以下,也应该在新的权限管理模型下测试你的应用。让你的应用支持新的权限管理模型,以及获得更多的官方提示,可查看Working with System Permissionss(https://developer.android.com/training/permissions/index.html)和 Permissions Best Practices(https://developer.android.com/training/permissions/best-practices.html#testing)

2-Android6.0版本移除了对Appache的HTTP Client(Apache HTTP Client Removal)

如果您的应用使用该客户端,并以 Android 2.3(API 级别 9)或更高版本为目标平台,

(1)请改用 HttpURLConnection 类,此 API 效率更高,因为它可以通过透明压缩和响应缓存减少网络使用,并可最大限度降低耗电量。

(2)如果要继续使用 Apache HTTP API,您必须先在 build.gradle 文件中声明以下编译时依赖项:

android {  

    useLibrary 'org.apache.http.legacy'  

}  

3-获取硬件标识符(Access to Hardware Identifier)

android6.0中,为了更好的保护用户的数据,

(1)Android移除了从代码中通过Wi-Fi和蓝牙的API访问设备本地网络标识符。因此WifiInfo.getMacAddress()和BluetoothAdapter.getAddress()将始终返回02:00:00:00:00:00

(2)而为了能够通过Wi-Fi和蓝牙扫描时,获取周边设备的硬件标识符,应用必须具有ACCESS_FINE_LOCATION 和 ACCESS_COARSE_LOCATION权限:
        WifiManager.getScanResults()
        BluetoothDevice.ACTION_FOUND
        BluetoothLeScanner.startScan()
注意:当运行Android6.0(API level 23)的设备启动后台Wi-Fi或蓝牙扫描时, 此操作对外部设备是可见的,且被显示为一个随机MAC的地址。

4-BoringSSL

Android 正在从使用 OpenSSL 库转向使用 BoringSSL 库。

(1)如果您要在应用中使用 Android NDK,请勿链接到并非 NDK API 组成部分的加密库,如 libcrypto.so 和 libssl.so。这些库并非公共 API,可能会在不同版本和设备上毫无征兆地发生变化或出现故障。此外,您还可能让自己暴露在安全漏洞的风险之下。

(2)如果要链接到并非 NDK API 组成部分的加密库请改为修改原生代码(native),以通过 JNI 调用 Java 加密 API,或静态链接到您选择的加密库。

5-通知(Notifications)

(1)移除了Notification.setLatestEventInfo()方法。

(2)用Notification.Builder类来构造通知,在需要反复更新通知的情况下,保存并重用Notification.Builder的实例;在获取更新后的Notification实例时,调用其build()方法。
(3)adb shell dumpsys notification命令不再输出你的通知文本,而adb shell dumpsys notification --noredact命令将输出一个notification对象的文本。

6-AudioManager Changes

  android6.0不再支持通过AudioManager类来直接对特定的音频流设置音量和静音,因此:
(1)setStreamSolo()方法过时(deprecated),替换调用requestAudioFocus()方法.
(2)setStreamMute()方法过时,替换调用为adjustStreamVolume()方法,传入的值也变为ADJUST_MUTE 或 ADJUST_UNMUTE。

7-文本选择(Text Selection)

用户在应用中选择文字后,你现在可以显示一个浮动工具栏(floating toolbar),展示并进行剪切、拷贝、粘贴操作,交互过程的实现和contextual action bar的实现一样( Enabling the contextual action mode for individual views)
实现选择文字后的浮动工具栏,在app代码中需要做如下修改:
(1)在View 或 Activity对象,ActionMode的调用从startActionMode(Callback) 变为 startActionMode(Callback, ActionMode.TYPE_FLOATING);
(2)替换原有的ActionMode.Callback为ActionMode.Callback2;
(3)重写OnGetContentRect()方法,提供内容Rect对象(文本选择的矩形框)在view中的位置;
(4)在矩形框作为唯一的元素不再有效时(矩形的定位不再有效),调用invalidateContentRect() 方法。
    如果你在使用Android Support Library revision 22.2,需要注意浮动工具栏不向后兼容且因为appcompat默认接管ActionMode对象,阻止了浮动工具栏被显示。为了在AppCompatActivity中支持ActionMode,需要调用getDelegate()方法,之后对返回的AppCompatDelegate对象调用setHandleNativeActionModesEnabled()方法,并设置输入参数为false,该调用将ActionMode对象的控制交还给系统框架层。在Android6.0(API level 23)的设备上,框架层支持ActionBar或浮动工具栏模式,在Android 5.1(API level 22)及以下的设备上,只支持ActionBar模式。

8-浏览器书签变化(Browser Bookmark Changes)

android6.0移除了全局书签的支持。

(1)android.provider.Browser.getAllBookmarks() 和 android.provider.Browser.saveBookmark()方法被移除;

(2)同样的READ_HISTORY_BOOKMARKS和WRITE_HISTORY_BOOKMARKS权限也被移除。

(3)如果你app的目标版本是android6.0或更高,请不要访问全局的provider获取书签,而是应该在应用的内部保存书签数据。

9-Wi-Fi和网络变化(Wi-Fi and Networking Changes)
  android6.0在Wi-Fi和网络API执行行为上有如下的变化
(1)现在,你的app只能修改你自己创建的WifiConfiguration对象的状态,而不再允许修改或删除由用户或其它app创建的WifiConfiguration对象;
(2)之前,应用可以使用enableNetwork(),设置disableAllOthers=true,来使设备断开其它网络,如蜂窝网络,而强制连接指定的Wi-fi网络。在此版本上,设备将不会从其它网络断开连接。如果你的app的targetSdkVersion是20或者更低,将固定在选择的Wi-Fi网络。如果targetSdkVersion是21或者更高,使用multinetwork APIs (如openConnection(), bindSocket()和bindProcessToNetwork()方法)来保证网络流量被发送到指定的网络上。

10-企业Android的变化(Android for Work Changes)

  此版本Android for Work包括一下行为的变化:

  个人环境中的企业联系人:当用户查看过去的通话记录时,Google拨号器的通话记录显示企业联系人(work contacts)。设置setCrossProfileCallerIdDisabled()为true,在Google拨号器中隐藏企业联系人的通话记录。默认情况下,在设备上通过蓝牙分享联系人时,企业联系人与个人联系人一起显示,除非设置setBluetoothContactSharingDisabled()为false。
  Wi-Fi配置移除:通过Profile Owner添加的Wi-Fi配置(例如,调用addNetwork()方法)在其对应的企业配置(work profile)被移除后删除。
  Wi-Fi配置锁定:当WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN值为非0时,用户无法修改或删除由启用的设备拥有者(Device Owner)创建的任何Wi-Fi配置。用户依然能够创建或修改他们自己的Wi-Fi配置。启用的设备拥有者拥有编辑或移除任何的Wi-Fi配置,即使这些配置不是它创建的。
  通过Google账户添加的下载企业策略控制器(Work Policy Controller):在管控环境之外,当需要进行管理的Google账号要求通过企业策略控制器(WPC)app添加到设备时,新增账号流程会提示给用户去安装合适的WPC。这一行为对通过设置>账号和初始化设备时添加的账号同样起作用。
  DevicePolicyManager API的变化:
(1)调用setCameraDisabled()方法,仅影响当前调用相机的用户;在managed profile中调用此方法并不影响primary user中使用相机的app运行。
(2)此外,setKeyguardDisabledFeatures()方法对配置拥有者(Profile Owner)和设备拥有者都可用。
(3)配置拥有者能够设置如下的锁屏限制:
      KEYGUARD_DISABLE_TRUST_AGENTS 和 KEYGUARD_DISABLE_FINGERPRINT, 影响配置父用户(parent user)的锁屏设置
      KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS, 仅影响在managed profile中应用产生的通知。
(4)createAndInitializeUser() 和 createUser()方法被废弃(deprecated)
(5)当给定的应用在前台时,setScreenCaptureDisabled()方法阻塞辅助框架(assist structure)  
(6)EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_CHECKSUM 默认为SHA-256. SHA-1 作为兼容性的备用,但未来将会被删除。
(7)EXTRA_PROVISIONING_DEVICE_ADMIN_SIGNATURE_CHECKSUM 目前只接受SHA-256。
(8)存在与Android6.0(API level 23)的Device initializer APIs现在被移除。
(9)EXTRA_PROVISIONING_RESET_PROTECTION_PARAMETERS被移除,因此,NFC触碰配置不能在代码上解锁一个恢复出厂设置被保护的设备。
(10)现在可以使用EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE在managed device上通过NFC触碰传递数据给device owner app
(11)Android for Work API在M的运行时权限上进行了优化,包括企业配置(Work profiles),辅助层(assist layer)等。新的DevicePolicyManager 权限API并不影响Android M之前的应用。
(12)当用户在初始化设置流程中通过ACTION_PROVISION_MANAGED_PROFILE 或 ACTION_PROVISION_MANAGED_DEVICE intent退出同步部分,系统将会返回RESULT_CANCELED这一返回值。

11- 其它API的变化:
    数据流量统计(Data Usage):android.app.usage.NetworkUsageStats类被重命名为NetworkStats。

  全局设置变化:
    (1)这些配置不再能通过setGlobalSettings()来设置:
      BLUETOOTH_ON
      DEVELOPMENT_SETTINGS_ENABLED
      MODE_RINGER
      NETWORK_PREFERENCE
      WIFI_ON
    (2)这些配置现在能通过setGlobalSettings()来设置:

      WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN

Android 9.0 新特性

Google于2018年3月8日悄无声息的推送了Android P,不出意外的话这也将是Android 9.0的代号。接下来一起看看在这次更新中有哪些新功能吧。 
本文参考:Google Developer

 

 


新特性

室内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{...});

该功能API在android.net.wifi.rtt下。

“刘海”屏幕支持

Android P 支持了手机屏幕是不规则形状时的获取(主要是应对刘海屏吧)。可以使用类似windowInsets.getDisplayCutout()来获取一些你想要的信息。

//您可以在自己的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;

通知

Android P还增加了许多对通知的支持。

增强体验

从Android 7.0开始,就优化了Android通知栏的体验。 
在P当中,又新增了下述功能: 
支持图像:Android P现在在手机上的消息通知中显示图像。您可以在消息上使用setData()来显示图像。 
会话参与者的简化支持:新的Notification.Person类用于标记参与聊天的人,包括他们的头像和URI。还有其他的一些API,现在都用Person类作为标志参数而不是CharSequence。

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();

将回复另存为草稿:当用户无意中关闭消息通知时,您的应用可以检索系统发送的EXTRA_REMOTE_INPUT_DRAFT来获取一些信息。 
确定对话是否是群组对话:您可以使用setGroupConversation()来有目的地将对话标识为群组对话或非群组对话。 
为意图设置语义动作:setSemanticAction()方法允许您为某个动作提供语义含义,如标记为读取,删除,回复等。 
SmartReply

通道设置、广播以及免打扰

Android O引入了Notification Channels,可让您为要显示的每种类型的通知创建一个用户可自定义的频道。 Android P通过以下更改简化了通知渠道设置: 
阻止渠道:用户现在可以在应用的通知设置中阻止整组渠道。您可以使用isBlocked()方法来确定某个组何时被阻止,不对被阻止的组发送消息。 
此外,您的应用可以使用新的getNotificationChannelGroup()方法查询当前渠道设置。 
新的广播类型:Android系统现在在通知频道和频道组的阻塞状态发生变化时发送广播。拥有被阻止的频道或群组的应用可以监听这些Intent并作出相应的反应。有关这些Intent的更多信息,请参阅NotificationManager参考中更新后的常量列表。有关对广播Intent作出反应的信息,请参阅广播。 
新的免打扰优先级类别:NotificationManager.Policy有两个新的策略常量:PRIORITY_CATEGORY_ALARMS(按优先级排列)和PRIORITY_CATEGORY_MEDIA_SYSTEM_OTHER(优先排列媒体,系统和游戏声音)

多相机支持和相机更新

现在,可以同时从两个或更多的物理摄像头同时获得数据流。在具有双前置或双后置摄像头的设备上,可以实现无法使用单个摄像头实现的功能,例如无缝缩放,散景 ,和立体视觉。 该API还允许您调用合理的或者融合的相机流,以便在两台或更多台相机之间自动切换。 
相机的其他改进包括新的android.hardware.camera2.params.SessionConfiguration,有助于减少初始捕捉期间的延迟。而Surface共享可让相机客户端处理各种使用情况,而无需停止和启动相机流式传输。 此外还添加了基于显示的闪光灯支持的API。 
Android P还支持支持deveices上的外部USB / UVC相机

新的图片解码

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);

动画

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();  
}

HDR VP9视频,HEIF图像压缩和媒体API

Android P增加了对HDR VP9 Profile 2的内置支持。

Android P支持HEIF图像(隔壁IOS在2017年10月推的新的图片编码)编码。 
Android P还引入了MediaPlayer2。该播放器支持使用DataSourceDesc构建的播放列表。

MediaPlayer2.create();

注:笔者对图像/视频编解码方面不甚了了,有兴趣的可以自行参阅API

JobScheduler中的数据成本敏感度

在Android P当中,JobScheduler得到了改进,使其能够更好地为用户处理与网络相关的工作,并配合运营商分别提供网络状态信号。 
Jobs现在可以定义出其估计的数据大小,预取信号,并指定详细的网络要求 - 运营商可以将网络报告为拥塞或不用流量计费的。然后,JobScheduler根据网络状态管理工作。例如,当网络拥塞时,JobScheduler可能推迟大型网络请求。在不用流量计费的的网络上时,JobScheduler可以预读来改进用户体验。

神经网络API 1.1

对神经网络API新增了9个功能:Pad, BatchToSpaceND, SpaceToBatchND, Transpose, Strided Slice, Mean, Div, Sub, and Squeeze。

改进表单自动填充

Android 8.0(API26)引入了自动填充框架,这使得在应用中填写表单变得更加容易。 Android P引入了自动填充服务并实现了多项改进,以在填写表单时进一步增强用户体验。 有关更多详细信息,请参阅自动填充框架。 
注:该自动填充框架笔者应是Google服务中的内容,国内用户可能会体验不到(或许有厂商自己的版本)。

安全增强

Android P引入了许多新的安全功能,包括统一的指纹验证对话框和敏感交易的高确信度的用户确认。 有关更多详细信息,请参阅安全更新页面。

Android 备份加密

Android P支持使用客户端密钥对Android备份进行加密。 这项隐私措施,需要设备的PIN,图案密码或标准密码才能从用户设备备份的数据中恢复数据。 
要了解有关在Android设备上备份数据的更多信息,请参阅数据备份概述。 
注:据笔者所知,国内厂商基本都做了自己的备份系统(或者和其他大厂合作),所以没兴趣的同学散了吧。

总结

Android 5.0

1,扁平化的开始

2,Dvk被Art替换

Android 6.0

1,动态权限管理

2,指纹识别

3,电源管理

4,移除了了httpClient

Android 7.0

1,分屏多任务

2,Android有popupwindow显示bug

Android 8.0

1,画中画

2,通知

3,自适应图标

4,后台进程限制

5,特殊访问权限

Android 9.0

1,刘海平支持

https://blog.csdn.net/haovip123/article/details/54618642

https://blog.csdn.net/lzllzllhl/article/details/76889957

https://blog.csdn.net/GenlanFeng/article/details/79496359

写在最后

本文主要是针对Developer的新特性,以上如有各种纰漏欢迎各位在评论区指出,笔者会不定时/根据Android API更新而更新。也欢迎各位同学使用新的API,帮助我们OS的进步。

 

原文地址:https://blog.csdn.net/GenlanFeng/article/details/79496359

原文地址:https://www.cnblogs.com/JLZT1223/p/8108783.html

原文地址:https://blog.csdn.net/lovelyprogrammer/article/details/80752003

  • 7
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值