[官方原文](https://developer.android.com/about/versions/jelly-bean.html)
## **果冻豆**
### **Android 4.1**
欢迎来到Android 4.1 Jelly Bean的第一个版本!
Android 4.1是Android最快和最流畅的版本。我们在整个平台上进行了改进,并为用户和开发人员添加了很多新的功能。本文档提供了开发人员新功能的一瞥。
查看[Android 4.1 API](https://developer.android.com/about/versions/android-4.1.html)文档详细了解新的开发者API。
在 www.android.com 上查找更多关于Jelly Bean功能的信息。
#### **更快,更流畅,更有反应**
Android 4.1经过优化,可以在简单直观的用户界面中提供Android的最佳性能和最低的触摸延迟。
为了确保一致的帧率,Android 4.1扩展了由Android框架完成的所有绘图和动画的异步时序。一切运行在16毫秒vsync心跳上 - 应用程序渲染,触摸事件,屏幕组成和显示刷新 - 所以帧不会超前或落后。
Android 4.1还在图形管道中增加了三重缓冲功能,以便更加一致地呈现,从滚动到分页和动画,使得一切都变得更加流畅。
Android 4.1不仅可以通过将触摸同步到vsync时间来减少触摸延迟,还可以通过实际预测屏幕刷新时手指的位置。这导致更加反应和均匀的触摸响应。另外,经过一段时间不活动之后,Android会在下一次触摸事件中应用CPU输入提升,以确保没有延迟。
工具可以帮助您从应用程序中获得绝对最佳的性能。Android 4.1被设计为与称为systrace的新工具一起工作,该工具直接从Linux内核收集数据以产生系统活动的总体图。数据被表示为一组垂直堆叠的时间序列图,以帮助隔离渲染中断和其他问题。该工具现在可在[Android SDK](https://developer.android.com/tools/index.html)(Tools R20或更高版本)
![](https://box.kancloud.cn/f48794c755e9ee9b2f067205331edaee_250x489.png)
#### **增强的可访问性**
新的可访问性服务API使您能够在用户通过屏幕上的元素和导航按钮使用辅助功能手势,配件和其他输入来移动时处理手势和管理辅助功能。对讲系统和触摸探索被重新设计,以便于使用易用性,并为开发人员提供一套完整的API。
辅助功能服务可将自己的教程链接到“辅助功能”设置中,以帮助用户配置和使用其服务。
使用标准View组件的应用程序会自动继承对新辅助功能的支持,而不会对其代码进行任何更改。使用自定义视图的应用程序可以使用新的辅助功能节点API来指示对辅助功能服务感兴趣的视图部分。
#### **支持国际用户**
#### **双向文本和其他语言支持**
通过支持TextView和EditText元素中的双向文本,Android 4.1可以帮助您接触更多的用户。应用程序可以显示文本,也可以在从左到右或从右到左的脚本中处理文本编辑。应用程序可以使用新的阿拉伯语和希伯来语语言环境和相关的字体。
其他类型的新语言支持包括:
其他印度语言:卡纳达语,泰卢固语和马拉雅拉姆语
来自Unicode版本6.0的新Emoji字符
日本用户更好的字形支持(当系统语言设置为日语时,呈现日文特定版本的字形)
除了TextViews的阿拉伯文字形之外,阿拉伯字形还针对WebViews进行了优化
WebView中的垂直文本支持,包括Ruby文本和附加的垂直文本字形
Synthetic Bold现在可用于没有专用粗体字形的所有字体
#### **用户可安装的键盘映射**
该平台现在支持用户可安装的键盘映射,例如用于其他国际键盘和特殊布局类型。默认情况下,Android 4.1包含27个键盘的国际键盘映射,包括Dvorak。当用户连接键盘时,他们可以转到“设置”应用程序并选择一个或多个要用于该键盘的键盘映射。键入时,用户可以使用快捷键(ctrl-space)在键盘映射之间切换。
您可以创建一个应用程序来发布其他键盘映射到系统。APK将包含键盘布局资源,基于标准Android键盘映射格式。应用程序可以通过在其清单中声明适当的ACTION_QUERY_KEYBOARD_LAYOUTS广播接收器来为用户提供额外的键盘布局。
#### **新的方法来创造美丽的用户界面**
开发人员可以创建自定义通知样式,如上例所示,以显示丰富的内容和操作。
#### **可扩展的通知**
通知一直是Android上独一无二的流行功能。开发人员可以使用它们将重要的或基于时间的信息放在应用程序正常用户界面之外的通知栏中的用户面前。
Android 4.1带来了Android通知框架的重大更新。应用程序现在可以向用户显示更大,更丰富的通知,可以通过捏或轻扫进行展开和折叠。通知支持新类型的内容,包括照片,具有可配置的优先级,甚至可以包含多个操作。
通过改进的通知生成器,应用程序可以创建使用更大区域的通知,高度可达256 dp。有三种模板通知样式可用:
* BigTextStyle - 包含多行TextView对象的通知。
* BigInboxStyle - 显示任何类型的消息,标题等列表的通知。
* BigPictureStyle - 显示视觉内容(如位图)的通知。
![](https://box.kancloud.cn/1549309c7192bf466ba0111e9672d517_300x587.png)
开发人员可以创建自定义通知样式,如上例所示,以显示丰富的内容和操作。
除了模板化样式之外,您还可以使用任何远程视图创建自己的通知样式。
应用程序最多可以为通知添加三个操作,这些通知显示在通知内容的下面。这些操作让用户以其他方式直接回应通知中的信息。如通过电子邮件或电话,而无需访问应用程序。
借助可扩展的通知,应用程序可以轻松地按需向用户提供更多信息。用户保持控制,并可以长时间按任何通知来获取有关发件人的信息,并可以选择禁用来自应用程序的进一步通知。
应用小部件可以自动调整大小以适应主屏幕,并随着尺寸的变化加载不同的内容。
#### **可调整大小的应用部件**
Android 4.1引入了改进的App Widget,可以根据用户在主屏幕上的放置位置,用户扩展的大小以及主屏幕上的可用空间量自动调整大小。新的应用程序小部件API让您利用这个优化您的应用程序小部件内容随着小部件大小的变化。
当小部件更改大小时,系统会通知主机应用程序的小部件提供程序,它可以根据需要重新加载小部件中的内容。例如,一个小部件可以显示更大,更丰富的图形或附加功能或选项。开发人员仍然可以保持对最大和最小大小的控制,并且可以随时更新其他小部件选项。
您还可以为您的小部件提供单独的横向和纵向布局,当屏幕方向更改时,系统会根据情况适当膨胀。
应用程序小部件现在可以通过新的绑定Intent(AppWidgetManager.ACTION_APPWIDGET_BIND)显示在第三方启动器和其他主机应用程序中。
![](https://box.kancloud.cn/cba0e7f06840b557b5026830b9750f1b_300x587.png)
应用小部件可以自动调整大小以适应主屏幕,并随着尺寸的变化加载不同的内容。
#### **简化任务导航**
Android 4.1使您可以轻松管理应用内部用户可用的“向上”导航,并有助于确保为用户提供一致的体验。
您可以通过在应用程序的清单文件中添加新的XML属性来为UI的单个Activity组件定义预期的Up导航。在运行时,当活动启动时,系统从清单文件中提取上导航树,并自动在操作栏中创建上导航功能导航。在清单中声明Up导航的开发人员不再需要在运行时通过回调来管理导航,尽管如果需要也可以这样做。
另外还有一个新的TaskStackBuilder类,它可以让您快速地将一个综合任务堆栈放到一起,以便立即启动或在从PendingIntent启动一个Activity时使用。当用户从远程视图(例如主屏幕小部件和通知)中启动活动时,创建合成任务堆栈尤其有用,因为它可以让开发人员在后退导航中提供托管的一致体验。
#### **活动启动简单的动画**
您可以使用新的助手类ActivityOptions来创建和控制启动“活动”时显示的动画。通过辅助类,你可以指定在活动启动时,或要求任何矩形开始您在屏幕上指定并选择性的包括缩略图位图新的缩放动画中使用自定义动画资源。
#### **转到熄灯和全屏模式**
在查看新的系统UI标志让你干净地从一个普通的应用程序UI转换(有操作栏,导航栏和系统栏可见),以“熄灯模式”(与状态栏和操作栏隐藏和导航栏变灰)或“全屏模式”(状态栏,操作栏和导航栏全部隐藏)。
#### **新类型的可远程视图**
开发人员现在可以在主屏幕小部件和通知中使用GridLayout和ViewStub视图。通过GridLayout,您可以构建远程视图的内容,并使用较浅的UI层次结构管理子视图对齐。ViewStub是一个不可见的零大小的视图,可以用来在运行时延迟布局资源。
#### **动态壁纸预览**
Android 4.1使用户更容易从包含它们的应用程序中查找并安装动态壁纸。如果您的应用包含动态壁纸,则现在可以启动一个活动(ACTION_CHANGE_LIVE_WALLPAPER),通过您的应用向用户显示动态壁纸的预览。从预览中,用户可以直接加载动态壁纸。
#### **更高分辨率的联系人照片**
使用Android 4.1,您可以存储大小达720 x 720的联系人照片,使联系人更加丰富,更加个性化。应用程序可以存储和检索该尺寸的联系照片或使用任何其他所需的尺寸。特定设备支持的最大照片大小可能会有所不同,因此应用程序应在运行时查询内置联系人提供程序以获取当前设备的最大大小。
#### **新的输入类型和功能**
#### **了解有关正在添加和删除的设备**
应用程序可以通过USB,蓝牙或任何其他连接类型进行注册,以便在任何新的输入设备连接时收到通知。他们可以根据需要使用这些信息来更改状态或功能。例如,一个游戏可能会收到一个新的键盘或操纵杆被连接的通知,表明新玩家的存在。
#### **查询输入设备的功能**
Android 4.1包含API,可让应用和游戏充分利用所有连接且可用的输入设备。
应用程序可以查询设备管理器来枚举当前所连接的所有输入设备,并了解每个输入设备的功能。
#### **控制输入设备上的振动器**
除了其他功能之外,应用程序现在可以使用与连接的输入设备相关的任何振动器服务,例如用于Rumble Pak控制器。
### **动画和图形**
#### **Vsync的应用程序**
在Android框架中扩展vsync可以带来更一致的帧率和流畅稳定的用户界面。因此,应用程序也受益,Android 4.1 延伸vsync时间到由应用程序启动的所有绘图和动画。这使他们能够优化UI线程上的操作,并为同步提供稳定的时间基准。
应用程序可以通过Android的动画框架免费使用vsync时间。动画框架现在使用vsync timing来自动处理动画师之间的同步。
对于专业用途,应用程序可以通过新的编排器类显示的API访问vsync时序。应用程序可以在下一个vsync框架上请求失效 - 在应用程序不使用动画框架时调度动画的好方法。对于更高级的用途,应用程序可以发布Choreographer类将在下一帧运行的回调。
#### **新的动画动作和转换类型**
现在,动画框架允许您定义运行ViewPropertyAnimator动画时要执行的开始和结束动作,以帮助将其与应用程序中的其他动画或动作同步。该操作可以运行任何可运行的对象。例如,runnable可能会指定另一个动画,以便在前一个动画完成时启动。
您现在也可以指定ViewPropertyAnimator在其动画过程中使用一个图层。以前,通过在开始动画之前设置图层,然后在动画完成时处理onAnimationEnd()事件来移除图层,这是最佳实践。现在,ViewPropertyAnimator上的withLayer()方法通过一个方法调用简化了这个过程。
LayoutTransition中新的转换类型使您能够响应ViewGroup中的所有布局更改来自动执行动画。
#### **新的连接类型**
#### **Android Beam**
Android Beam是一款流行的基于NFC的技术,只需将两台NFC手机连接在一起,即可让用户即时分享。
在Android 4.1中,Android Beam通过利用蓝牙进行数据传输,可以更轻松地共享图像,视频或其他有效载荷。当用户触发传输时,Android Beam从NFC切换到蓝牙,使管理文件从一个设备到另一个设备的传输变得非常容易。
#### **Wi-Fi网络服务发现**
Android 4.1引入了对基于DNS的多播服务发现的支持,它使应用程序能够通过Wi-Fi网络(包括移动设备,打印机,相机,媒体播放器等)查找并连接到由对等设备提供的服务。开发者可以利用Wi-Fi网络服务发现来构建跨平台或多人游戏和应用体验。
使用服务发现API,应用程序可以创建和注册任何类型的服务,以供任何其他支持NSD的设备发现。该服务通过使用人可读的字符串标识符在网络上进行广播进行广播,这使得用户可以更容易地识别服务的类型。
消费者设备可以使用API来扫描和发现连接到本地Wi-Fi网络的设备可用的服务。发现之后,应用程序可以使用API将服务解析为可以建立套接字连接的IP地址和端口。
您可以利用此API在您的应用程序中构建新功能。例如,您可以让用户连接到支持Wi-Fi点对点连接的其他移动设备上的网络摄像头,打印机或应用程序。
#### **Wi-Fi P2P服务发现**
[Ice Cream Sandwich](https://developer.android.com/about/versions/android-4.0-highlights.html)(Android 4.0)推出了支持Wi-Fi对等(P2P)的技术,这种技术可以让应用通过高带宽的点对点连接直接发现和配对(遵循Wi-Fi联盟的[Wi- Fi Direct™ ](http://www.wi-fi.org/discover-and-learn/wi-fi-direct)认证程序)。Wi-Fi P2P是共享媒体,照片,文件和其他类型的数据和会话的理想方式,即使没有可用的蜂窝网络或Wi-Fi。
Android 4.1进一步进行Wi-Fi P2P,为预先关联的服务发现添加API支持。预先关联的服务发现功能可让您的应用程序在尝试连接之前从附近的设备获取有关所支持服务的更多有用信息。应用程序可以启动对特定服务的发现,并将发现的设备列表筛选为实际支持目标服务或应用程序的设备。
例如,这意味着您的应用只能发现“打印机”或具有特定游戏可用的设备,而不是发现所有附近的Wi-Fi P2P设备。另一方面,您的应用可以将其提供的服务通告给其他设备,这些设备可以发现该服务,然后协商连接。这极大地简化了用户的发现和配对,并让应用更有效地利用Wi-Fi P2P。
借助Wi-Fi P2P服务发现,您可以创建可共享照片,视频,游戏玩法,分数或其他任何内容的应用程序和多人游戏,而无需任何Internet或移动网络。您的用户只能使用直接的p2p连接进行连接,避免使用移动带宽。
#### **网络带宽管理**
当设备连接到计量网络时,Android 4.1可以帮助应用程序恰当地管理数据使用情况,包括连接到移动热点。应用程序可以在开始大量下载之前查询当前网络是否被计量,否则对于用户而言可能相对昂贵。通过API,您现在可以清楚地了解哪些网络对数据使用敏感,并相应地管理您的网络活动。
#### **新的媒体功能**
#### **媒体编解码器访问**
Android 4.1提供对平台硬件和软件编解码器的低级访问。应用程序可以查询系统以发现设备上可用的低级别媒体编解码器,然后以他们所需的方式使用它们。例如,您现在可以创建媒体编解码器的多个实例,排队输入缓冲区,并接收输出缓冲区。另外,媒体编解码器框架支持受保护的内容。应用程序可以查询可用的编解码器,该编解码器能够使用设备上可用的DRM解决方案播放受保护的内容。
#### **USB音频**
USB音频输出支持允许硬件供应商构建与Android设备接口的硬件,如音频扩展坞。Android 开放配件开发工具包(ADK)也公开了此功能,为所有开发人员创建自己的硬件提供了机会。
#### **音频记录触发**
Android现在可以让您基于完成音频播放轨道来触发录音。这对于回放提示音来提示用户开始说话来录制他们的声音很有用。此功能可帮助您同步录制,因此您不会录制当前正在播放的音频,也不会过早录制。
#### **多声道音频**
Android 4.1支持通过HDMI端口输出硬件多声道音频的设备上的多声道音频。多声道音频可让您为游戏,音乐应用程序和视频播放器等应用程序提供丰富的媒体体验。对于没有支持硬件的设备,Android会自动将音频缩混为设备支持的通道数(通常为立体声)。
Android 4.1还增加了对编码/解码AAC 5.1音频的内置支持。
#### **音频预处理**
开发人员可以对正在录制的音频应用预处理效果,比如应用噪声抑制技术来改善语音录制质量,回声消除以及音量不一致的音频自动增益控制。需要高质量和清晰录音的应用程序将受益于这些预处理器。
#### **音频链接**
MediaPlayer支持将音频流链接在一起播放音频文件而不会暂停。这对于需要音频文件(如音乐播放器)之间无缝转换的应用程序来说,可以播放连续曲目或游戏的专辑。
#### **媒体路由器**
新的API MediaRouter,MediaRouteActionProvider和MediaRouteButton提供了标准的机制和UI来选择播放媒体的位置。支持内置有线耳机和A2DP蓝牙耳机和扬声器,您可以添加自己的路由选项,在自己的应用程序。
### **Renderscript计算**
Android 4.1扩展了Renderscript计算,给你更多的灵活性。您现在可以在Renderscript计算脚本中对纹理进行示例,并且可以使用新的编译指示来定义脚本所需的浮点精度。这使您可以在CPU路径上启用NEON指令,例如快速矢量数学运算,否则在完整的IEEE 754-2008标准下是不可能的。
您现在可以在基于x86的仿真器和硬件设备上调试 Renderscript计算脚本。您也可以在一个Renderscript源文件中定义多个根样式的内核。
#### **Android浏览器和WebView**
在Android 4.1中,Android Browser和WebViews包含以下增强功能:
更好的HTML5视频用户体验,包括触摸播放/暂停和从内嵌到全屏模式的平滑过渡。
提高了渲染速度,减少了内存占用,从而获得更好的滚动和缩放性能。
改进了HTML5 / CSS3 / Canvas动画的性能。
改进的文本输入。
更新了JavaScript引擎(V8)以获得更好的JavaScript性能。
支持更新的HTML5媒体捕捉规范(输入类型=文件元素的“捕捉”属性)。
#### **Google API和服务**
为了进一步扩展Android的功能,有几款适用于Android的新服务。
#### **适用于Android的Google云消息传递**
Google Cloud Messaging(GCM)是一项服务,可让开发者在Android设备上向其用户发送短消息数据,而不需要专有的同步解决方案。
GCM处理排队消息的所有细节并将其有效传送到目标Android设备。它支持消息多播,并且可以通过一个请求同时连接多达1000个连接的设备。它还支持消息有效载荷,这意味着除了向设备上的应用程序发送痒感消息之外,开发人员还可以发送高达4K的数据。
Google Cloud Messaging 对于所有开发者来说都是完全免费的,注册很容易。有关注册,下载和文档,请参阅[Google Cloud Messaging](https://developer.android.com/google/gcm/index.html)页面。
#### **应用程序加密**
从Android 4.1开始,Google Play将通过使用设备专用密钥加密所有付费应用,然后将其交付并存储在设备上,从而帮助保护应用资产。
#### **智能应用更新**
智能应用更新是Google Play的一项新功能,它引入了向应用更新设备的更好方式。当开发者发布更新时,Google Play现在只会提供已更改为设备的位数,而不是整个APK。这使得大多数情况下更新更加轻量化,因此它们可以更快下载,节省设备的电量,并节省用户移动数据计划中的带宽使用。平均而言,智能应用更新大约是完整APK更新的1/3。
#### **Google Play服务**
Google Play服务可帮助开发者将Google服务(如身份验证和Google+)集成到通过Google Play提供的应用中。
Google Play服务是通过Google Play自动配置给最终用户设备的,因此您只需要在应用中使用瘦客户端库。
由于您的应用只包含小型客户端库,因此您可以充分利用这些服务,而不会大大增加下载大小和存储空间。另外,Google Play还会定期更新这些服务,而无需开发人员发布应用更新以利用这些更新。
### **Android 4.2**
欢迎来到安卓4.2,果冻豆的最新版本!
Android 4.2具有性能优化,刷新的系统UI以及用户和开发人员的新功能。本文档提供了开发人员新功能的一瞥。
有关 详细了解新开发人员API的信息,请参阅[Android 4.2 API](https://developer.android.com/about/versions/android-4.2.html)文档。
在 www.android.com 上查找更多关于用户的新Jelly Bean功能。
#### **更快,更流畅,更有反应**
Android 4.2基于已经包含在Jelly Bean中的性能改进 - vsync时序,三重缓冲, 减少的触摸延迟和CPU输入提升 - 并增加了新的优化,使Android更快。
硬件加速2D渲染器的改进使常见的动画(如滚动和滑动更平滑和更快)。特别是绘图针对图层,裁剪和某些形状(圆角矩形,圆形和椭圆形)进行了优化。
各种WebView渲染优化使得网页滚动更平滑,没有抖动和滞后。
Android的Renderscript Compute是第一个移植到移动设备GPU上的计算平台。它会尽可能自动利用GPU计算资源,显着提高图形和图像处理的性能。在受支持的设备上使用Renderscript的任何应用程序都可以立即从GPU集成中受益,而无需重新编译。
运行Android 4.2的10英寸平板电脑
#### **精致,刷新的用户界面**
Android 4.2改进了Jelly Bean用户体验,并为所有平板电脑带来了熟悉的Android UI模式,例如状态栏,系统栏和通知窗口。
现在,所有屏幕尺寸的状态栏位于顶部,可通过下拉菜单访问通知和新的“ 快速设置”菜单。熟悉的系统栏出现在底部,用任何一只手都可轻松访问按钮。该应用程序托盘,也适用于所有的屏幕尺寸。
#### **一个平板电脑,许多用户**
现在,几个用户可以共享一个Android平板电脑,每个用户都可以方便地访问专用的用户空间。用户可以通过锁定屏幕上的一键轻松切换到他们的空间。
在多用户设备上,Android为每个用户提供一个独立的环境,包括用户专用的模拟SD卡存储。用户也有他们自己的主屏幕,小部件,帐户,设置,文件和应用程序,系统将这些独立。所有用户共享核心系统服务,但系统确保每个用户的应用程序和数据保持隔离。实际上,多个用户中的每一个都有他或她自己的Android设备。
用户可以随时在自己的环境中安装和卸载应用程序。为了节省存储空间,Google Play只有在设备上的其他用户尚未安装的情况下才能下载APK。如果应用已安装,Google Play会以通常的方式记录新用户的安装,但不会下载该应用的其他副本。多个用户可以运行APK的相同副本,因为系统会为每个用户创建一个新实例,其中包括用户特定的数据目录。
对于开发人员来说,多用户支持是透明的 - 您的应用程序无需在多用户环境中正常运行,也无需做任何特殊的事情,您现有的或发布的APK中无需进行任何更改。系统在每个用户空间管理您的应用,就像在单用户环境中一样。
#### **吸引用户的新方法**
#### **日历锁定屏幕小部件**
您可以扩展应用程序小部件以在锁定屏幕上运行,以便即时访问您的内容。
#### **锁定屏幕小部件**
在Android 4.2中,用户可以将应用程序小部件直接放置在锁屏上,即时访问喜欢的应用程序内容,而无需解锁。用户可以添加多达五个锁屏小部件,从已安装的应用程序提供的小部件中进行选择。锁定屏幕显示每个小部件在自己的面板,让用户左右滑动查看不同的面板和他们的小部件。
像所有应用程序小部件一样,锁定小部件可以显示任何类型的内容,并且可以接受直接的用户交互。它们可以是完全独立的,例如提供播放音乐控件的小部件,也可以让用户在需要时沿着解锁方式直接跳到应用程序中的“活动”。
对于开发者来说,锁屏小部件提供了一个吸引用户的好方法。他们可以让用户将自己的内容放在他们经常看到的位置,并为用户提供更多机会将用户直接带入应用。
您可以通过构建新的应用程序小部件或扩展现有的主屏幕小部件来利用此新功能。如果您的应用程序已经包含主屏幕小部件,您可以将其扩展到锁屏,只需进行很少的更改。为了给用户提供最佳体验,您可以更新小部件,以便在可用时使用完整的锁定屏幕区域,并在需要时在较小的屏幕上调整大小。您也可以添加功能到您的小部件,可能是特别有用或方便的锁定屏幕上。
![](https://box.kancloud.cn/431ca2aab6145fde290a8694c59afde7_280x543.png)
您可以扩展应用程序小部件以在锁定屏幕上运行,以便即时访问您的内容。
#### **梦话**
Daydream是一种交互式屏幕保护模式,在用户设备停靠或充电时启动。在这种模式下,系统将启动一个白日梦 - 由安装的应用程序提供的远程内容服务 - 作为设备屏幕保护程序。用户可以从“设置”应用启用“白日梦”,然后选择要显示的白日梦。
白日梦将动态壁纸和主屏幕小部件的最佳功能相结合,但它们更强大。他们让您可以在全新的环境中提供任何类型的内容,通过用户互动(例如翻阅照片,播放音频或视频或直接跳入应用程序)。
由于白天可以在设备充电或停靠时自动启动,因此它们也为您的应用提供了一种很好的方式来支持新的用户体验,例如后退或展示模式,演示或信息亭模式以及“吸引模式” - 所有这些都不需要特殊的硬件。
Daydream屏保模式
Daydream让你创建强大的交互式屏幕保护程序,显示任何类型的内容。
白日梦类似于活动,可以做任何活动可以做的事情 - 从渲染UI层次结构(不使用RemoteViews)直接使用画布,OpenGL,SurfaceTexture,等等。他们可以播放视频和音频,他们甚至可以接受直接的用户交互。然而,白日梦不是活动,所以他们不会影响后台或出现在最近,他们不能直接从您的应用程序启动。
实现一个白日梦很简单,你可以利用已经为你的应用的其他部分创建的UI组件和资源。您可以在您的应用中提供多个白日梦,并且可以为每个白日梦提供独特的内容和显示设置。
![](https://box.kancloud.cn/356231b659a716da95ad0561aa7eea76_775x532.png)
Daydream让你创建强大的交互式屏幕保护程序,显示任何类型的内容。
#### **外部显示支持**
Android 4.2引入了对外部显示的平台支持,远远超出了镜像 - 应用程序现在可以将独特内容锁定到连接到Android设备的任何一个或多个显示。应用程序可以在此基础上为用户提供新的交互和娱乐体验。
#### **显示管理器**
应用程序通过新的显示管理器系统服务与显示交互。您的应用程序可以枚举显示并检查每个显示的功能,包括大小,密度,显示名称,ID,安全视频支持等等。当您的应用程序添加或删除显示或功能发生变化时,您的应用程序也可以收到回调,从而更好地管理外部显示器上的内容。
#### **演示窗口**
为了便于在外部显示器上显示内容,该框架提供了一个称为演示的新UI对象- 一种对话框,用于在特定外部显示器上呈现应用内容的窗口。你的应用程序只是给显示器使用,窗口的主题,以及任何独特的内容显示。演示文稿根据目标显示器的特性来处理资源膨胀并呈现您的内容。
![](https://box.kancloud.cn/0908e50b97c5c537310488fb74dd3314_555x351.png)
您可以使用演示文稿完全控制两个或更多的独立显示。
演示文稿可让您的应用完全控制远程显示窗口及其内容,并可根据用户输入事件(如按键,手势,动作事件等)对其进行管理。您可以使用所有常规工具在演示文稿中创建UI和呈现内容,从构建任意视图层次结构到使用SurfaceView或SurfaceTexture直接在流媒体内容或摄像机预览的窗口中绘制。
#### **首选显示选择**
当多个外部显示器可用时,您可以根据需要创建尽可能多的演示文稿,每个演示文稿在特定的显示器上显示唯一的内容。在很多情况下,您可能只想在单个外部显示器上显示您的内容 - 但始终在演示内容上最好。为此,该系统可以帮助您的应用程序选择使用最好的显示器。
要找到最佳显示方式,您的应用程序可以查询显示管理器以获取系统首选的演示显示,并在显示更改时接收回调。或者,您可以使用在Android 4.2中扩展的媒体路由器服务在系统视频路由更改时接收通知。您的应用程序可以在主要活动中默认显示内容,直到附加了首选的演示文稿显示,届时它可以自动切换到首选显示的演示文稿内容。您的应用程序也可以使用媒体路由器的MediaRouteActionProvider和MediaRouteButton来提供标准的显示选择UI。
#### **受保护的内容**
对于处理受保护或加密内容的应用,显示API现在可以报告所连接显示器的安全视频功能。您的应用程序查询显示屏,以确定它是否提供安全的视频输出或提供受保护的图形缓冲区,然后选择适当的内容流或解码以使内容可见。为了提高SurfaceView对象的安全性,您的应用程序可以设置一个安全标志,以指示内容不应该出现在屏幕截图或非安全显示输出中,即使在镜像时也是如此。
#### **无线显示**
从Android 4.2开始,受支持设备上的用户可以使用Wi-Fi Display(符合Miracast™认证计划的对等无线显示解决方案),通过Wi-Fi连接到外部显示器 。当连接无线显示器时,用户可以将任何类型的内容传送到大屏幕上,包括照片,游戏,地图等等。
应用程序可以像使用其他外部显示器一样利用无线显示器,无需额外的工作。系统管理网络连接,并根据需要将您的演示文稿或其他应用程序内容传输到无线显示器。
#### **原生RTL支持**
![](https://box.kancloud.cn/b680bb40aa727540f5af2cd59afb619e_769x1033.png)
现在开发人员可以将他们的布局镜像为RTL语言。
Android 4.2引入了对RTL (从右到左)布局的全面本机支持,包括布局镜像。通过本地RTL支持,您可以为所有用户提供同样出色的应用体验,无论他们的语言使用的是从右向左阅读的脚本还是从左向右阅读的脚本。
当用户将系统语言切换为从右至左的脚本时,系统现在提供对应用UI布局和所有视图窗口小部件的自动镜像,以及用于阅读和字符输入的文本元素的双向镜像。
您的应用程序可以在您的应用程序中尽可能利用RTL布局镜像。如果您希望应用程序被镜像,只需在您的应用程序清单中声明一个新属性,并将所有“左/右”布局属性更改为新的“开始/结束”等价物。系统会根据需要处理您的用户界面的镜像和显示。
为了精确控制您的应用程序UI,Android 4.2包含新的API,可让您管理View组件中的布局方向,文本方向,文本对齐方式,重力和区域设置方向。您甚至可以在使用从右至左的脚本时创建自定义版式的布局,绘图和其他资源。
为了帮助您调试和优化自定义的从右到左布局,HierarchyViewer工具现在允许您查看层次结构中所有视图的开始/结束属性,布局方向,文本方向和文本对齐方式。
#### **国际语言的增强**
Android 4.2 为国际用户提供了各种字体和字符优化:
对于韩国用户,提供了一种新的字体选项 - Nanum(나눔글꼴)Gothic,一种专门为韩文脚本设计的Unicode字体。
改进了对WebViews中显示的日文垂直文本的支持。
改进了印度语,泰语,阿拉伯语和希伯来语默认字体的字体调整和定位。
默认的Android键盘还包含一组更新的字典:
改进的法语词典(支持bigram),英语和俄语
丹麦语,希腊语,芬兰语,立陶宛语,拉脱维亚语,波兰语,斯洛维尼亚语,塞尔维亚语,瑞典语,土耳其语的新词典
#### **创建漂亮的用户界面的新方法**
#### **嵌套片段**
为了更好地控制你的UI组件,并使它们更加模块化,Android 4.2允许你在Fragments中嵌套Fragments。对于任何片段,新的片段管理器允许您将其他片段作为子节点插入到View层次结构中。
您可以以各种方式使用嵌套的片段,但对于在自己动态且可重用的UI组件内部实现动态且可重用的UI组件尤其有用。例如,如果您使用ViewPager创建左右滑动的片段,则现在可以将片段插入视图寻呼机的每个片段中。
为了让您在应用中更广泛地利用嵌套的片段,此功能将添加到Android支持库的最新版本中。
#### **无障碍**
该系统现在在触摸探索模式下帮助无障碍服务区分触摸探索和无障碍手势。当用户触摸屏幕时,系统通知服务一般触摸交互已经开始。然后跟踪触摸交互的速度,并确定它是触摸探索(缓慢)还是无障碍手势(快速)并通知服务。当触摸交互结束时,系统通知服务。
系统提供了新的全局可访问性选项,可通过辅助功能服务根据用户的操作打开“快速设置”菜单。在Android 4.2中还增加了一个新的盲文设备可访问性反馈类型 。
为了使辅助功能服务能够深入了解视图的含义以实现可访问性,框架提供了将视图作为另一个视图的标签关联的新API。每个视图的标签可通过AccessibilityNodeInfo提供给辅助功能服务。
#### **改进的HDR相机**
Android 4.2引入了一个新的相机硬件接口和管道,以提高性能。在支持的设备上,应用程序可以使用新的HDR相机场景模式使用高动态范围成像技术来捕捉图像。
此外,该框架现在提供了一个API来让应用程序检查是否可以禁用相机快门声音。然后,应用程序可以让用户禁用声音,或者选择替代声音来代替建议的标准快门声音。
#### **Renderscript计算**
在Android 4.2中,Renderscript Compute引入了新的脚本功能,新的优化和直接GPU集成,以实现计算操作的最高性能。
#### **Filterscript**
Filterscript是Renderscript的一个子集,专注于优化广泛的设备芯片组的图像处理。开发人员可以使用标准的Renderscript运行时API在Filterscript中编写图像处理操作,但要在更严格的约束条件下进行,以确保更宽的兼容性,并改进跨CPU,GPU和DSP的优化。
对于硬件加速简单的图像处理和计算操作(例如可能为OpenGL ES片段着色器编写的操作)而言,Filterscript非常适合。由于它在硬件上放置了一套宽松的约束条件,所以您的操作在更多类型的设备芯片组上进行了优化和加速。任何定位API级别17或更高的应用程序都可以使用Filterscript。
#### **脚本内在函数**
在Android 4.2中,Renderscript增加了对一组脚本内在函数的支持 - 预先实现的过滤原语,这些原语被加速以减少需要编写的代码量,并确保您的应用程序获得最大的性能提升。
Intrinsics可用于混合,模糊,颜色矩阵,3x3和5x5卷积,每通道查找表,并将Android YUV缓冲区转换为RGB。
#### **脚本组**
您现在可以创建一组Renderscript脚本,并使用一次调用就可以执行它们,就像它们是单个脚本的一部分一样。这允许Renderscript以脚本独立执行的方式来优化脚本的执行。
![Renderscipt优化图表](https://box.kancloud.cn/761cf8f08da91279ba76b3b134fc839a_470x327.png)
Renderscript图像处理基准测试仅在Galaxy Nexus设备上的CPU上运行在不同的Android平台版本(Android 4.0,4.1和4.2)上。
![](https://box.kancloud.cn/9cff1bed22b0ac7bb9e2bcfe1e801800_471x327.png)
Renderscript图像处理基准测试比较GPU + CPU运行的CPU和运行在同一个Nexus 10设备上的CPU。
如果有一个Renderscript操作的定向非循环图可以运行,则可以使用构建器类来创建定义操作的脚本组。在执行时,Renderscript会优化运行顺序以及这些操作之间的连接以获得最佳性能。
#### **持续优化改进**
当您使用Renderscript进行计算操作时,您的应用程序将受益 于Renderscript引擎本身的持续性能和优化改进,而不会对您的应用程序代码产生任何影响,也不需要重新编译。
随着优化的改进,您的操作在更快的速度和更多的芯片组上执行,而无需任何工作。右侧的图表突出显示了通过在Android平台的后续版本中进行的Renderscript优化改进所带来的性能提升。
GPU计算
Renderscript Compute是第一个移植到移动设备GPU上的计算平台。现在它会自动利用GPU计算资源来提高性能。通过GPU集成,即使是最复杂的图形或图像处理计算,也可以显着提高性能。
在支持的设备上使用Renderscript的任何应用程序都可以立即从GPU集成中受益,而无需重新编译。Nexus 10平板电脑是第一款支持这种集成的设备。
**新的内置开发人员选项**
Android 4.2系统包含各种新的开发者选项,使得创建出色的应用程序变得更加容易。新选项提供了用于从任何设备或仿真器调试和分析应用程序的功能。
在运行Android 4.2的设备上,默认情况下隐藏开发人员选项,有助于为用户创造更好的体验。您可以在任何兼容的Android设备上点击“设置” >“ 关于手机” >“ 内部版本号”,随时显示开发人员选项。
![](https://box.kancloud.cn/cd1ea6c2c9a3144a539a3f1c9754ea06_280x543.png)
新的开发人员选项为您提供了更多方式来在设备上进行配置和调试。
Android 4.2中的新开发人员选项包括:
采取错误报告 - 立即拍摄屏幕截图并将设备状态信息转储到本地文件存储,然后将其附加到新的传出电子邮件。
电源菜单错误报告 - 添加一个新的选项到设备的电源菜单和快速设置,以采取错误报告(见上文)。
通过USB验证应用程序 - 允许您禁用通过USB端装应用程序的应用程序检查,同时仍然从其他来源(如浏览器)检查应用程序。这可以加速开发过程,同时保持启用安全功能。
显示硬件层更新 - 在硬件层更新时闪烁。
显示GPU透支 - 突出显示GPU透支区域。
强制4x MSAA - 在Open GL ES 2.0应用程序中启用4x MSAA。
模拟辅助显示 - 在当前屏幕上创建一个或多个不安全的叠加窗口,以用作模拟远程显示。您可以控制模拟显示器的大小和密度。
启用OpenGL跟踪 - 允许您在glGetError上使用Logcat,Systrace或callstack来跟踪OpenGL的执行情况。
#### **新的平台技术**
Android 4.2包括各种新的和增强的平台技术,以支持广泛的硬件设备中的创新通信用例。在大多数情况下,新的平台技术和增强功能不会直接影响您的应用程序,因此您可以从中受益而不做任何修改。
#### **安全增强**
每个Android版本都包含数十个安全增强功能,以保护用户。以下是Android 4.2中的一些增强功能:
应用程序验证 - 用户可以选择启用“验证应用程序”,并在安装前通过应用程序验证程序筛选应用程序,应用程序验证可以提醒用户是否尝试安装可能有害的应用程序;如果应用程序特别糟糕,它可以阻止安装。
高级短信的更多控制 - 如果应用程序尝试将短信发送到使用可能会导致额外费用的高级服务的短代码,Android将提供通知。用户可以选择允许应用程序发送消息还是阻止消息。
永远在线的VPN - 可以对VPN进行配置,以便在建立VPN连接之前应用程序无法访问网络。这可以防止应用程序通过其他网络发送数据。
证书锁定 - libcore SSL实现现在支持证书锁定。如果证书没有链接到一组期望的证书,则被锁定的域将收到证书验证失败。这样可以防止证书颁发机构可能的妥协。
改进了Android权限的显示 - 权限已被组织到用户更容易理解的组中。在审查权限时,用户可以单击权限查看有关权限的更多详细信息。
installd强化 - installd守护程序不会以root用户身份运行,从而减少root权限升级的潜在攻击面。
init脚本强化 - 初始化脚本现在应用O_NOFOLLOW语义来防止符号链接相关的攻击。
FORTIFY_SOURCE - Android现在实现了FORTIFY_SOURCE。这被系统库和应用程序用来防止内存损坏。
ContentProvider默认配置 - 针对API级别17的应用程序将默认情况下为每个ContentProvider设置“导出”为“false”,从而减少应用程序的默认攻击面。
加密 - 修改了SecureRandom和Cipher.RSA的默认实现来使用OpenSSL。使用OpenSSL 1.0.1添加了对TLSv1.1和TLSv1.2的SSLSocket支持
安全修复 - 具有安全修复程序的升级的开源库包括WebKit,libpng,OpenSSL和LibXML。Android 4.2还包含针对Android特定漏洞的修复程序。有关这些漏洞的信息已经提供给Open Handset Alliance成员,Android开放源代码项目中提供了修复程序。为了提高安全性,一些早期版本的Android设备也可能包含这些修复程序。
#### **新的蓝牙堆栈**
Android 4.2引入了一个新的蓝牙堆栈,针对Android设备进行了优化。Google和Broadcom合作开发的新型蓝牙堆栈取代了基于BlueZ的堆栈,并提供了更好的兼容性和可靠性。
#### **低延迟音频**
Android 4.2改进了对低延迟音频播放的支持,从使用OpenSL ES,Soundpool和音频发生器API的Android 4.1发行版对音频输出延迟的改进开始。这些改进取决于硬件支持 - 提供这些低延迟音频功能的设备可以通过硬件功能常数向应用宣传其支持。提供了新的AudioManager API来查询本地音频采样率和缓冲区大小,以用于声称此功能的设备上。
#### **新的相机硬件接口**
Android 4.2引入了相机堆栈的一个新的实现。摄像机子系统包括摄像机流水线中的组件的实现,例如带有处理控制的突发模式捕获。
#### **新的NFC硬件接口和控制器接口**
Android 4.2引入了对来自NFC论坛的基于NCI标准的控制器的支持。NCI提供NFC控制器(NFCC)和设备主机之间的标准通信协议,Google和Broadcom合作开发的新NFC协议栈支持它。
#### **Dalvik运行时优化**
Dalvik运行时包括在更广泛的体系结构中对性能和安全性的增强:
* 来自Intel的x86 JIT支持和来自MIPS的MIPS JIT支持
* 针对大于512MB的设备优化垃圾收集参数
* SecureRandom和Cipher.RSA的默认实现现在使用OpenSSL
* SSLSocket支持通过OpenSSL 1.0.1的TLSv1.1和TLSv1.2
* 对StrictMath方法abs,min,max和sqrt的新内在支持
* BouncyCastle更新至1.47
* zlib更新到1.27
* dlmalloc更新到2.8.6
### **Android 4.3**
欢迎来到Android 4.3,一个更甜的版本的果冻豆!
Android 4.3为用户和开发人员提供了性能优化和卓越的新功能。本文档提供了开发人员新功能的一瞥。
查看[Android 4.3 API](https://developer.android.com/about/versions/android-4.3.html) 文档详细了解新的开发者API。
在 www.android.com 上查找更多关于用户的新Jelly Bean功能。
#### **更快,更流畅,更有反应**
Android 4.3基于已经包含在Jelly Bean - vsync时序,三重缓冲, 减少触摸延迟,CPU输入提升和 硬件加速2D渲染中的性能改进- 增加了新的优化,使Android更快。
为了提升图形性能,硬件加速的2D渲染器现在 优化了绘图命令流,通过重新排列和合并绘制操作,将其转换为更高效的GPU格式。对于多线程处理,渲染器现在也可以跨多个CPU内核使用多线程来执行特定的任务。
Android 4.3还改进了形状和文本的渲染。现在以更高效的方式提供更高质量的圆形和圆角矩形等形状。对文本的优化包括使用多种字体或复杂字形集(CJK)时的性能提高,缩放文本时的渲染质量更高以及阴影渲染速度更快。
改进的窗口缓冲区分配可为您的应用程序分配更快的图像缓冲区,从而减少创建窗口时开始渲染的时间。
为了获得最高性能的图形,Android 4.3引入了对OpenGL ES 3.0的支持, 并通过框架和本地API使应用程序可以访问它。在支持的设备上,硬件加速2D渲染引擎利用OpenGL ES 3.0优化纹理管理并提高梯度渲染保真度。
#### **用于高性能图形的OpenGL ES 3.0**
Android 4.3引入了[Khronos OpenGL ES 3.0](http://www.khronos.org/opengles/3_X/)的平台支持,在支持的设备上为游戏和其他应用程序提供了最高性能的2D和3D图形功能。您可以通过Android本机开发套件(NDK)使用框架API 或本机API绑定来利用OpenGL ES 3.0和相关的EGL扩展。
OpenGL ES 3.0中提供的关键新功能包括加速高级视觉效果,高质量的ETC2 / EAC纹理压缩作为标准功能,具有整数和32位浮点支持的新版本GLSL ES着色语言,高级纹理渲染,和标准化的纹理尺寸和渲染缓冲区格式。
您可以使用OpenGL ES 3.0 API创建在各种兼容的Android设备上运行的高度复杂,高效的图形,并且您可以在这些设备上支持单一的标准纹理压缩格式。
OpenGL ES 3.0是一个可选功能,取决于底层的图形硬件。Nexus 7(2013),Nexus 4和Nexus 10设备已经提供支持。
#### **增强的蓝牙连接**
连接蓝牙智能设备和传感器
现在,您可以设计和构建与使用[蓝牙智能技术](http://www.bluetooth.com/Pages/Bluetooth-Smart-Devices.aspx)的最新一代小型低功耗设备和传感器进行交互的应用程序。
![](https://box.kancloud.cn/4b909ad7b6f6213eb8f1395be06dddcd_472x265.png)
Android 4.3为您提供了一个用于与Bluetooth Smart设备交互的标准API。
Android 4.3引入了对Bluetooth Smart Ready的内置平台支持,并提供了一组标准的API,应用程序可以使用这些API来发现附近的设备,查询GATT服务以及读/写特性。
使用新的API,您的应用程序可以高效地扫描感兴趣的设备和服务。对于每个设备,您可以通过UUID检查支持的GATT服务,并通过设备ID和信号强度来管理连接。您可以连接到设备上托管的GATT服务器,读取或写入特征,或者注册侦听程序以在这些特征发生更改时接收通知。
您可以实现对任何GATT配置文件的支持。您可以根据需要读取或写入标准特性或添加对自定义特性的支持。您的应用程序可以作为客户端或服务器,并可以在任一模式下传输和接收数据。这些API是通用的,因此您将能够支持与各种设备(如邻近标签,手表,健身计,游戏控制器,遥控器,健康设备等)的交互。
在Nexus 7(2013)和Nexus 4设备上已经可以支持蓝牙智能就绪,并且在未来几个月内将会在越来越多的Android兼容设备中得到支持。
**AVRCP 1.3配置文件**
Android 4.3增加了对蓝牙AVRCP 1.3的内置支持,因此您的应用程序可以支持与远程流媒体设备进行更丰富的交互。媒体播放器等应用程序可以通过Android 4.0中引入的远程控制客户端API来利用AVRCP 1.3 。除了在通过蓝牙连接的远程设备上公开播放控件之外,应用程序现在还可以传输元数据,例如曲目名称,作曲家和其他类型的媒体元数据。
AVRCP 1.3的平台支持基于Google和Broadcom在Android 4.2中引入的Bluedroid蓝牙协议栈。Nexus设备和其他Android兼容设备提供支持A2DP / AVRCP功能。
#### **支持受限配置文件**
![设置受限制的配置文件](images/jb-profiles-create-n713.png)
平板电脑拥有者可以在“设置”中设置一个或多个受限制的配置文件并独立管理它
![在配置文件中设置限制](images/jb-profiles-restrictions-n713.png)
您的应用可以提供限制,让所有者在配置文件中运行时管理您的应用内容。
Android 4.3扩展了具有受限配置文件的平板电脑的多用户功能,这是一种在单个设备上管理用户及其功能的新方法。借助受限制的配置文件,平板电脑所有者可以为每个用户快速设置 单独的环境,并且可以在这些环境中提供的应用程序中管理更细粒度的限制。受限制的配置文件是朋友和家人,访客用户,信息亭,销售点设备等的理想选择。
每个受限制的配置文件都提供了一个隔离的安全空间,并拥有自己的本地存储,主屏幕,小部件和设置。与用户不同,配置文件是根据所有者安装的应用程序和系统帐户,从平板电脑所有者的环境创建的。所有者控制在新配置文件中启用了哪些已安装的应用程序,并且默认情况下禁止访问所有者的帐户。
需要访问所有者帐户的应用(登录,首选项或其他用途)可以通过声明清单属性来选择加入,并且所有者可以从配置文件配置设置中检查和管理这些应用。
对于开发者来说,受限制的配置文件为用户提供了更多的价值和控制权。您可以实施应用程序限制 - 应用程序支持的内容或功能控制 - 并在配置文件配置设置中将其通告给平板电脑所有者。
您可以使用预定义的布尔值,选择和多选类型直接将应用限制添加到配置文件配置设置。如果您需要更多的灵活性,您甚至可以从配置文件配置设置启动您自己的UI,以提供您想要的任何类型的限制。
当您的应用程序在配置文件中运行时,它可以检查所有者配置的任何限制,并适当地执行它们。例如,媒体应用可能会提供一个限制,让所有者为该配置文件设置成熟度级别。在运行时,应用程序可以检查成熟度设置,然后根据首选的成熟度级别管理内容。
如果您的应用不适合在受限个人资料中使用,则可以选择退出,以便您的应用无法在任何受限个人资料中启用。
#### **优化的位置和传感器功能**
[Google Play服务](https://developer.android.com/google/play-services/index.html) 提供了可在您的应用中使用的高级定位API。Android 4.3 在支持的设备上优化这些API,并具有最大限度减少电池使用的新硬件和软件功能。
硬件geofencing通过在设备硬件中执行位置计算而不是在软件中优化功率效率。在支持硬件地理围栏的设备上,Google Play服务地理围栏API将能够利用此优化功能在设备移动时节省电量。
Wi-Fi只扫描模式是一种新的平台优化,可让用户在不连接Wi-Fi网络的情况下保持Wi-Fi扫描,以提高位置精度,同时节省电池。依靠Wi-Fi进行位置服务的应用程序现在可以要求用户从Wi-Fi高级设置启用“仅扫描”模式。Wi-Fi仅扫描模式不依赖于设备硬件,可作为Android 4.3平台的一部分。
新的传感器类型允许应用程序更好地管理传感器读数。一个游戏旋转向量游戏开发者可感测装置的旋转,而不必担心磁场干扰。 未校准的陀螺仪和未校准的磁力计传感器报告原始测量值以及估计的应用偏差。
新的硬件功能已经在Nexus 7(2013)和Nexus 4设备上提供,任何设备制造商或芯片组供应商都可以将其构建到设备中。
#### **新的媒体功能**
#### **模块化DRM框架**
为了满足下一代媒体服务的需求,Android 4.3引入了模块化DRM框架,使媒体应用程序开发人员能够更加轻松地将DRM集成到自己的流媒体协议中,如MPEG DASH(基于HTTP的动态自适应流媒体,ISO / IEC 23009 -1)。
媒体DRM框架通过结合使用新API和现有API的增强功能,为管理许可和供应,访问低级别编解码器以及解码加密媒体数据提供了一套完整的服务。新的MediaExtractor API可让您获取DASH媒体的PSSH元数据。使用媒体DRM框架的应用程序管理与许可证服务器的网络通信,并处理来自内容库的加密数据的流式传输。
#### **VP8编码器**
Android 4.3引入了对VP8编码的内置支持,可以从框架和本地API访问。对于使用本地API的应用程序,该平台包含OpenMAX 1.1.2扩展头以支持VP8配置文件和级别。VP8编码支持包括目标比特率,码率控制,帧率,令牌分区,错误恢复,重构和环路滤波器的设置。平台API以各种格式引入了VP8编码器支持,因此您可以利用最适合您的内容的格式。
在运行Android 4.3的所有兼容设备上,软件中都提供了VP8编码。为了获得最高性能,该平台还支持在有能力的设备上进行硬件加速的VP8编码。
#### **视频编码从表面**
从Android 4.3开始,您可以使用曲面作为视频编码器的输入。例如,您现在可以将来自OpenGL ES表面的流引导到编码器,而不必在缓冲区之间进行复制。
#### **媒体复合器**
应用程序可以使用新的媒体复用器API将基本音频和视频流合并到一个输出文件中。目前,应用程序可以将单个MPEG-4音频流和单个MPEG-4视频流复用到一个MPEG-4输出文件中。新的API是Android 4.2中引入的媒体多路分配API的对应物。
在遥控器客户端播放进度和清理
由于Android 4.0,媒体播放器和类似的应用程序已经能够提供远程控制客户端的回放控制,例如设备锁定屏幕,通知和通过蓝牙连接的远程设备。从Android 4.3开始,这些应用程序现在可以通过遥控器客户端显示播放进度和速度,并接收命令跳转到特定的播放位置。
#### **新的方法来建立美丽的应用程序**
#### **访问通知**
通知一直是一个流行的Android功能,因为它们让用户可以在一个地方看到系统中的信息和更新。现在,在Android 4.3中,应用程序可以在用户许可的情况下观察通知流,并以任何他们想要的方式显示通知,包括将通知发送到通过蓝牙连接的附近设备。
您可以通过新的API访问通知,这些API可以让您注册通知侦听器服务并获得用户的许可,并可以在状态栏中显示通知。通知将全部提供给您,包括原始应用程序,发布时间,内容视图和样式以及优先级的所有详细信息。您可以评估通知中感兴趣的字段,处理或添加应用程序的上下文,并以您选择的任何方式将其路由显示。
当新的API添加,更新和删除(或者因为用户解雇了它或者原始应用程序撤销了它),新的API会为您提供回调。您可以启动附加到通知或其操作的任何意图,也可以将其从系统中解除,从而允许您的应用程序提供完整的用户界面来通知。
用户仍然可以控制哪些应用可以接收通知。在任何时候,他们都可以在“设置”中查看哪些应用具有通知访问权限,并根据需要启用或禁用访问权限。通知访问在默认情况下是禁用的 - 应用程序可以使用新的Intent将用户直接带到“设置”以在安装后启用侦听器服务。
#### **查看重叠**
现在,您可以在Views和ViewGroups之上创建透明叠加层,以呈现临时View层次结构或瞬态动画效果,而不会影响底层布局层次结构。当您要创建动画(如在容器外滑动视图或在屏幕上拖动项目而不影响视图层次结构)时,叠加层特别有用。
#### **光学边界布局模式**
新的布局模式可以让您根据视域的光学边界而不是视频边界来管理视图内的视图的位置。剪辑边界表示一个小部件的实际外部边界,而新的光学边界描述了小部件在剪辑边界内的位置。您可以使用光学边界布局模式来正确对齐使用外部视觉效果(如阴影和发光)的小部件。
#### **自定义旋转动画类型**
应用程序现在可以在设备旋转时定义窗口上使用的退出和输入动画类型。您可以设置窗口属性以启用 跳转,交叉渐变或 标准窗口旋转。当窗口是全屏时,系统使用自定义动画类型,而不被其他窗口覆盖。
#### **屏幕方向模式**
应用可以为“活动”设置新的方向模式,以确保在设备翻转时它们以正确的方向显示。另外,应用程序可以使用新模式将屏幕锁定到当前的方向。这对于使用相机的应用程序 在拍摄视频时要禁用旋转很有用 。
#### **意图处理快速响应**
Android 4.3引入了一个新的公共意图,它允许任何应用程序处理快速响应 - 用户响应来电时发送的短信,无需接听电话或解锁设备。您的应用程序可以侦听意图,并通过消息传递系统将消息发送给调用者。意图包括收件人(调用者)以及消息本身。
#### **支持国际用户**
![](https://box.kancloud.cn/6aab916d33e4e5245f30d4c8010f33bd_180x349.png)
![](https://box.kancloud.cn/21ebd343fa7bffa846afd0c4e42ee10e_180x349.png)
Android 4.3的更多部分针对RTL语言进行了优化。
#### **RTL改进**
Android 4.3包括RTL性能增强和跨框架UI小部件(包括ProgressBar / Spinner和ExpandableListView)的更广泛的RTL支持。通过uiautomatorviewer工具可以看到更多的调试信息 。此外,现在有更多的系统UI组件可以感知RTL,比如通知,导航栏和Action Bar。
为了在RTL脚本中提供更好的全系统体验,更多的默认系统应用程序现在支持RTL布局,包括启动器,快速设置,电话,人员,设置向导,时钟,下载等等。
#### **本地化的公用事业**
![](https://box.kancloud.cn/c166090f88fad660b63441c0a80fdab6_520x492.png)
伪区域可以更容易地测试您的应用程序的本地化。
Android 4.3还包括用于创建更好的RTL字符串和测试本地化用户界面的新工具和API。一个新的BidiFormatter 类为包装Unicode字符串提供了一个简单的API,以便RTL脚本数据在LTR区域消息中按照预期显示,反之亦然。为了让您在应用程序中更广泛地使用此实用程序,BidiFormatter API现在也可通过Android SDK中的支持包提供给更早的平台版本。
为帮助您管理跨语言环境的日期格式,Android 4.3包含一个新的getBestDateTimePattern()方法,该方法自动为您指定的语言环境生成Unicode UTS日期的最佳本地化表单。这是为用户提供更本地化体验的一种便捷方式。
为了帮助您在其他语言环境中更轻松地测试您的应用,Android 4.3引入了伪区域作为新的开发人员选项。伪区域模拟与语言环境或语言组关联的语言,脚本和显示特征。目前,您可以使用Accented English的伪语言环境进行测试,通过该语言,您可以查看UI如何与各种欧洲语言中使用的脚本重音和字符配合使用。
#### **辅助功能和UI自动化**
从Android 4.3开始,辅助功能服务可以观察和过滤关键事件,例如处理键盘快捷键或通过基于手势的输入提供导航奇偶校验。该服务接收事件,并可以在传递给系统或其他安装的应用程序之前根据需要处理它们。
辅助功能服务可以声明新的功能属性 来描述他们的服务可以做什么以及他们使用什么平台功能。例如,他们可以声明过滤关键事件,检索窗口内容,启用触摸浏览或启用Web辅助功能的功能。在某些情况下,服务必须声明一个功能属性,然后才能访问相关的平台功能。系统使用该服务的能力属性为用户生成一个选择性对话框,以便他们在发布前可以看到并同意这些能力。
基于Android 4.3的可访问性框架,新的UI自动化框架可以让测试通过模拟用户操作和反思屏幕内容来与设备的用户界面进行交互。通过UI自动化框架,您可以执行基本操作,设置屏幕旋转,生成输入事件,截屏等等。这是在真实的用户场景中自动进行测试的强大方式,包括跨多个应用程序的动作或序列。
#### **企业和安全**
#### **WPA2-Enterprise网络的Wi-Fi配置**
应用程序现在可以配置连接到WPA2企业接入点所需的Wi-Fi凭据。开发人员可以使用新API为企业中使用的身份验证方法配置可扩展身份验证协议(EAP)和封装的EAP(阶段2)凭据。有权访问和更改Wi-Fi的应用程序可以配置各种EAP和第2阶段身份验证方法的身份验证凭据。
**用SELinux加强Android沙箱**
Android现在使用SELinux,Linux内核中的强制访问控制(MAC)系统来扩充基于UID的应用程序沙箱。这可以保护操作系统免受潜在的安全漏洞影响。
**KeyChain增强功能**
KeyChain API现在提供了一种方法,允许应用程序确认系统级密钥绑定到设备的硬件信任根。这提供了创建或存储无法从设备导出的私钥的地方 ,即使在根或内核受到损害的情况下也是如此。
**Android密钥库提供者**
Android 4.3引入了一个keystore提供者和API,允许应用程序创建专用密钥。使用这些API,应用程序可以创建或存储其他应用程序无法看到或使用的私钥,并且可以将其添加到密钥库,而无需任何用户交互。
Keystore提供程序提供了与KeyChain API为系统范围的凭证提供的相同的安全性好处,例如将凭证绑定到设备。密钥库中的私钥不能从设备中导出。
**从Android应用程序限制Setuid**
这个/system分区现在被安装nosuid为zygote-spawned进程,阻止Android应用程序执行 setuid程序。这减少了根攻击面和潜在的安全漏洞的可能性。
#### **分析绩效的新方法**
![](https://box.kancloud.cn/085a3e3f123acd975cd21ff7ce2443c4_780x406.png)
Systrace使用新的命令语法,并允许您收集更多类型的分析数据。
#### **增强的Systrace日志记录**
Android 4.3支持 更易于使用的Systrace工具的增强版本,使您可以访问更多类型的信息来分析应用程序的性能。您现在可以从硬件模块,内核函数, Dalvik VM(包括垃圾收集,资源加载等)收集跟踪数据 。
Android 4.3还包含新的跟踪API,您可以在您的应用程序中使用这些API来标记要使用Systrace 开始/结束事件跟踪的特定代码段。当代码的标记部分执行时,系统将开始/结束事件写入跟踪日志。对应用程序性能的影响最小,因此所报告的时间可以准确地查看您的应用程序正在执行的操作。
您可以在Systrace输出文件的时间线中可视化应用程序特定事件,并在其他内核和用户空间跟踪数据的上下文中分析事件。与现有的Systrace标签一起,自定义应用程序部分可以为您提供了解应用程序的性能和行为的新方法。
![](https://box.kancloud.cn/76419cf78c37c2fdf213348119f19e37_360x698.png)
Android 4.3中的屏幕GPU分析。
![](https://box.kancloud.cn/c5a36ac2fb5cb5d7da81b99ffbb9c4cd_360x698.png)
#### **屏幕上的GPU分析**
Android 4.3添加了新的开发人员选项,可帮助您分析应用程序的性能,并确定任何设备或模拟器上的渲染问题。
在配置文件GPU渲染选项中,您现在可以在应用程序运行时在屏幕上可视化您的应用程序的有效帧率。您可以选择将分析数据显示为屏幕上的条形图或线形图,其颜色表示绘制命令(蓝色)所用的时间,发出命令(橙色)以及等待命令完成(黄色)。系统不断更新屏幕图形,显示每个可见活动的图形,包括导航栏和通知栏。
绿线突出显示渲染操作的16ms阈值,因此您可以评估您的应用程序的有效帧率,相对于60 fps的目标(因为1/60秒等于大约16ms)。如果您看到跨越绿线的操作,则可以使用Systrace和其他工具进一步分析它们。
> 在运行Android 4.2及更高版本的设备上,默认情况下隐藏开发人员选项。您可以随时 在任何兼容的Android设备上点击“设置”>“关于手机”>“内部版本号” 7次以显示这些内容。
**文件URI的StrictMode警告**
StrictMode工具的最新增加了一个策略约束,当您的应用程序file://向系统或其他应用程序公开URI 时会发出警告。在某些情况下,接收应用程序可能无法访问file:// URI路径,因此在应用程序之间共享文件时,content://应使用URI(具有适当的权限)。这个新的政策可以帮助你捕捉和修复这种情况。如果您正在寻找一种方便的方式来存储文件并将其展示给其他应用程序,请尝试使用[支持库中](https://developer.android.com/tools/support-library/index.html) FileProvider提供的内容提供程序。
- 前言
- Google官网对Android API各版本的介绍
- jelly Bean(果冻豆)Android 4.1、4.2、4.3
- Android 4.1
- Android 4.2
- Android 4.3
- KitKat(Android 4.4.*)巧克力
- Android 4.4 APIS
- Lollipop(棒棒糖)Android 5.*
- Android 5.0 APIs
- Android 5.0 Changes(变更)
- Android 5.1APIs
- Marshmallow(棉花糖)Android 6.0
- Android 6.0 APIs
- Android 6.0 Changes(变更)
- Android 6.0 Samples
- Android 6.0 Testing
- Nougat(牛扎塘)Android 7.*
- Android 7.0
- API
- 行为变更
- 示例
- Android 7.1
- 开发者API
- 示例Sample
- Oreo(奥利奥)8.*
- Android 8.0
- 功能和 API
- Android 8.0 行为变更
- 向 Android 8.0 迁移应用
- Android 8.0 示例
- Android 8.1
- 后台执行限制
- 后台位置限制
- API指南
- Android 简介
- 应用基础知识
- 设备兼容性
- 系统权限
- 请求权限
- 定义权限
- 平台架构
- Java8 概览
- 在ART上验证应用行为
- 应用组件
- Intent 和 Intent 过滤器(Google官网介绍)
- 通用intent
- Activity
- 任务和返回栈(官网译文)
- 概览屏幕
- 活动简介
- 活动生命周期
- 活动状态更改
- 进程和应用程序生命周期
- 包裹和捆绑
- 最近的屏幕
- 片段
- 加载器
- 服务Service
- 绑定服务
- AIDL
- 内容提供程序
- 内容提供程序基础知识
- 创建内容提供程序
- 日历提供程序
- 联系人提供程序
- 存储访问框架
- 使用存储访问框架打开文件
- 创建自定义文档提供程序
- 应用小部件
- 应用小部件主机
- 进程和线程
- 应用资源
- 概览
- 提供资源
- 访问资源
- 处理运行时变更
- 本地化
- ICU4J Android框架API
- Android上的国际化
- 语言和语言区域
- 复杂的XML资源
- 资源类型
- 动画
- 颜色状态列表
- 可绘制对象
- 布局
- 菜单
- 字符串
- 样式
- 其他类型
- 应用清单
- <action>
- <activity>
- <activity-alias>
- <application>
- <category>
- <compatiable-screens>
- <data>
- <grant-uri-permission>
- <intent-filter>
- <manifest>
- <meta-data>
- <path-permission>
- <permission>
- <permission-group>
- <permission-tree>
- <provider>
- <receiver>
- <service>
- <supporte-gl-texture>
- <supports-screens>
- <uses-configuration>
- <uses-feature>
- <uses-library>
- <uses-permission>
- <uses-permission-sdk-23>
- <uses-sdk>
- 用户界面
- 界面概览
- 界面布局
- 线性布局
- 相对布局
- 列表视图
- 网格视图
- 回收站视图
- 外观和感觉
- 可下载的字体
- XML中的字体
- 表情符号兼容性
- 自动调整TextView
- 样式和主题-
- 输入控件
- 按钮
- 文本字段
- 复选框
- 单选按钮
- 切换按钮
- 微调框
- 选取器
- 输入事件
- 菜单Menu
- 设置
- 对话框
- 通知
- Toast
- 自适应图标
- 应用快捷方式
- 搜索
- 创建搜索界面
- 添加近期查询建议
- 添加自定义建议
- 可搜索配置
- 多窗口支持
- 拖放
- 无障碍功能
- 为应用设置无障碍功能
- 无障碍功能开发者检查单
- 构建无障碍服务
- 让应用更容易访问
- 使用节点树调试
- 构建可访问自定义视图
- 样式和主题
- 自定义组件
- 动画和图形
- 概览介绍
- 属性动画
- 视图动画
- 可绘制动画
- 画布和可绘制对象
- 基于物理的动画
- Spring Animation
- Fling Animation
- OpenGL ES
- 硬件加速
- 计算
- RenderScript
- 高级RenderScript
- Runtime API Reference(参考)
- Numerical Types(数字类型)
- Object Types(对象类型)
- Conversion Functions(转换函数)
- Mathematical Constants and Functions(数学常量和函数)
- Vector Math Functions(矢量数学函数)
- Matrix Functions(矩阵函数)
- Quaternion Functions(四元数函数)
- Atomic Update Functions(原子更新函数)
- Time Functions and Types(时间函数和类型)
- Allocation Data Access Functions(分配数据访问函数)
- Object Characteristics Functions(对象特性函数)
- Kernel Invocation Functions and Types(内核调用函数和类型)
- Input/Output Functions(输入输出函数)
- Debugging Functions(调试函数)
- Graphics Functions and Types(图形函数和类型)
- Index(索引)
- Media Apps(媒体应用)
- Media Apps Overview(媒体应用程序概述)
- Working with a Media Session(使用媒体会话)
- Building an Audio App(建立一个音频应用)
- Building a Media Browser Service(构建媒体浏览器服务)
- Building a Media Browser Client(构建媒体浏览器客户端)
- Media Session Callbacks(媒体会话回调)
- Building a Video App(建立一个视频应用)
- Building a Video Player Activity(建立一个视频播放器Activity)
- Media Session Callbacks-(媒体会话回调)
- Responding to Media Buttons(响应媒体按钮)
- Handling Changes in Audio Output(处理音频输出的变化)
- Managing Audio Focus(管理音频焦点)
- The Google Assistant and Media Apps(Google智能助理和媒体应用)
- 媒体和相机
- Supported Media Formats(支持的媒体格式)
- MediaPlayer(媒体播放器)
- MediaRecorder
- ExoPlayer
- Controller Amplitude with VolumeShaper(VolumeShaper控制器振幅)
- Media Routing(媒体路由)
- MediaRouter API
- MediaRouteProvider API
- Camera API(相机API)
- 位置和传感器
- Location and Maps(位置和地图)
- Location Strategies(位置策略)
- Sensors Overview(传感器概览)
- Motion Sensors(运动传感器)
- Position Sensors(位置传感器)
- Environment Sensors(环境传感器)
- Raw GNSS Measurements(原始的GNSS测量)
- 连接
- Bluetooth
- Bluetooth Low Energy(蓝牙低功耗)
- NFC
- NFC Basics(NFC基础知识)
- Advanced NFC(高级NFC)
- Host-based Card Emulation(基于主机的卡模拟)
- Telecom(电信)
- Self-Managed ConnectionServices(自我管理的连接服务)
- Wi-Fi P2P
- Wi-Fi Aware
- Companion Device Pairing
- USB
- Accessory(配件)
- Host(主机)
- SIP
- 文本和输入
- Autofill Framework(自动填充框架)
- Test your app with autofill(使用自动填充测试你的应用)
- Building autofill services(构建自动填充服务)
- Copy and Paste(复制和粘贴)
- Creating an IME(创建IME)
- Image Keyboard(图像键盘)
- Spelling Checker(拼写检查程序)
- 数据存储
- Storage Options(存储选项)
- Data Backup(数据备份)
- Account Transfer API(账户转移API)
- Auto Backup(自动备份)
- Key/Value Backup(键值备份)
- Testing Backup and Restore(测试备份和还原)
- App Install Location(应用安装位置)
- 库
- 支持库
- 功能
- 修订历史记录
- 库设置
- 数据绑定库
- 测试支持库
- 管理
- 设备策略
- 网络应用
- Supporting Different Screens in Web Apps(在网络应用中支持不同屏幕)
- Building Web Apps in WebView(在WebView中构建网络应用)
- Managing WebViews
- Migrating to WebView in Android 4.4(迁移到Android4.4中的WebView)
- Debugging Web Apps(调试网络应用)
- Best Practices for Web Apps(网络应用最佳做法)
- 最佳实践
- Supporting Multiple Screens(支持多种屏幕)
- Distributing to Specific Screens(分配到特定屏幕)
- Screen Compatibility Mode(屏幕兼容性模式)
- Designing for Seamlessness
- Supporting Tablets and Handsets
- 培训