Android 4.2开发者新特性

标签: 计算机与 Internet Android jellybean | 发表时间:2012-11-28 11:35 | 作者:biAji
出处:http://www.biaji.net/wp

Android 4.2沿用了Jelly Bean开发代号,版本名为:Jelly Bean MR2。相对于Android 4.1,4.2进一步的提高了系统性能,更新了系统UI,并加入了其它一些新特性。

更快,更平滑,更高响应性

Android 4.2继承了4.1已经加入性能优化— 全面垂直同步, 三倍缓冲,触摸延迟消除和CPU 随输入调整。 并加入了新的改善:

硬件加速2D 渲染 的调优使得一些诸如卷动和滑动等动画变得更顺滑。更加入了针对图层处理,和某些图形(圆角矩形、圆和椭圆)的绘制优化。

WebView 渲染优化进行了大量修整,页面卷动更加平滑。

Android的 渲染脚本( Renderscript )计算 是首次移植的计算平台,直接运行于 移动设备 GPU 上。它会自动启用 GPU 计算 资源,动态的为图形和图像处理进行性能优化。所有采用了渲染脚本技术的应用都可以在不 重新编译 的情况下, 在支持的设备上 ,由此GPU 混合获得性能提升。

全新UI

 

Android 4.2重新定义了Jelly Bean的用户体验,并将诸如状态条、系统栏通知窗口等我们熟知的Android UI元素全面覆盖到平板上。

所有的屏幕尺寸都将在顶部显示 状态条,以及 通知新加入的 快速设置下拉菜单。我们熟悉的系统栏位于屏幕下部,同时适合左右手使用。 应用栏也将在所有的屏幕尺寸上启用。

平板多用户支持

现在,多个用户可以 共享同一个Android 平板,每个用户都有自己 独立的用户空间。用户可以在锁屏界面进行用户切换。

在多用户设备上,Android给每个用户分配了独立的环境,包括用户特定的虚拟SD卡存储。每个用户都有他们自己的主屏、widget、账户、设置、文件和应用,而系统负责将他们分隔开。所有的用户共享核心的系统服务,但系统会确保每个用户的应用数据是分开的。其最终效果就好像每个用户都拥有他们自己的Android 设备。

用户可以在他们自己的使用环境中随时安装/删除应用。为了节省存储空间,仅在设备中没有任何一个用户安装过的情况下,Google Play才会去下载应用APK。如果应用曾经安装过,Google Play

会跟平时一样记录下新用户的安装,但不会重新下载应用。多个用户可以使用同一个APK,但用户数据保存在各自的空间里。

对开发者而言, 多用户支持是透明的 — 你毋须为多用户环境做更多考虑。也毋须对发布的APK做任何改变( 但由于存储的改变,任何原先在程序中写死的 /mnt/sdcard 这样的存储位置都将出现问题)。系统会针对每个用户的空间管理应用,好像它运行在单用户环境中一样。

吸引用户的新方式

锁屏widgets

Android 4.2中,用户可以将应用widget放置于锁屏界面上,在不解锁的情况下,即可访问他们的应用。用户可以由安装的应用提供的widget中选择多至5个锁屏widget。锁屏界面将它们显示在独立的面板上,用户可以通过左右滑动面板来进行切换。

与所有应用widget类似,锁屏widget可以显示 任何种类的内容,并与用户进行直接交互。比如用于控制音乐播放的widget或者它们可以使用户在进行必要的解锁操作后,直接跳转到应用中的Activity。

对开发者来说,锁屏widget提供了一个吸引用户的崭新方式。它们可以帮你将应用内容放置于用户最常看到的位置,从而拥有更多用户使用你应用的机会。

你可以新建一个应用widget或扩展你目前的主屏widget来获得这个新功能。如果你的应用中已经有了主屏widget,你只需做非常少的修改,就可以令其支持锁屏widget。为了提供更好的体验,你可以更新你的widget以使用全部的锁屏界面。或在小屏幕上提供尺寸修改版本。你也可以在widget上添加新功能,以使其更适合锁屏界面使用。

白日梦(Daydream)

白日梦是一种 互动屏保模式。当用户的设备置于底座或充电时启用。启用时,系统加载一个白日梦作为屏保。它其实是由安装的应用提供的远程内容服务。用户可以在设置应用中启用白日梦,然后选择一个应用用以显示。

白日梦接合了动态壁纸和主屏widget的优势,但更加有力。它们在全新的使用模式中帮你为用户提供各种内容。并响应用户交互,比如翻阅图片,播放音频/视频,或一触之下,跳转至你的应用。

因为白日梦会在充电或者放入底座的时候自动启动,所以这给了你的应用程序提供新型用户体验的机会,比如后靠模式、展示模式、演示模式、全屏浏览模式和吸引模式。所有这些都不需要特殊的硬件支持。

白日梦跟Activity很类似,可以执行所有Activity的操作:从渲染UI树(毋须使用RemoteViews)到直接用Canvas、OpenGL、SurfaceTexture等绘图。但是,白日梦并不是Activity,所以它们不会存在于返回堆栈当中,也不会在近期使用的列表中出现,也无法由你的应用中直接启动。

白日梦的实现是比较简明的,你可以直接使用你应用中其它部分的现成的UI组件和资源。你可以在一个应用中提供多个白日梦,而且可以为它们提供不同的内容和设置项。

扩展显示支持

Android 4.2为平台引入了 扩展显示支持。这种支持并不只是在不同的屏幕上显示相同的内容。应用可以针对不同的显示输出,显示不同的内容。应用可以借此来为用户提供新形态互动和娱乐体验。

显示管理器

应用通过一个新的显示管理器系统服务来与显示系统互动。您的应用可以枚举当前所有的显示设备,并获得它们的相关参数,比如尺寸、密度、显示名称、ID、对安全视频的支持等。当显示设备接入或拔除时,或当它们的参数变化时,您的应用也会收到回调通知,由此可以更好的管理您在扩展显示上的内容。

展示窗口

为了更方便的显示扩展显示上的内容,框架提供了一个新的叫做 展示Presentation)的UI对象。您的应用只需提供一个将要使用的显示器、一个窗口主题以及显示内容。 展示将负责处理资源引用,并依据您目标显示的特性来渲染您的显示内容。

您可以用 展示来对两个或多个显示设备进行全面控制。

展示可以使你的应用控制远程窗口和它所显示的内容。并让你基于用户的输入事件比如点按、触摸手势、移动事件等对其进行管理。您可以使用平时所用的所有工具在展示中创建UI、渲染内容,不论是用 SurfaceView和SurfaceTexture直接创建视图层次,还是将流内容和相机预览直接绘制到窗口中。

首选显示选择

当存在多个外部显示设备时,您可以创建任意多的展示,每个都在特定的显示器上显示不同的内容。在很多情况下,您可能只希望您的内容显示于某个特定的外部显示器上——最适合展示内容的那个。在这一点上,系统可以帮助您的应用选择最佳设备。

您的应用可以向显示管理器查询系统 默认展示显示设备,并在此设备改变时收到回调。或者,您可以使用Android 4.2中扩展的媒体路由服务,来在系统视频路由改变时接收通知。您的应用可以在默认的主Activity中进行内容显示,而在适当的展示设备接入时切换过去。您的应用也可以使用媒体路由的MediaRouteActionProvider和MediaRouteButton提供标准的显示输出选择UI。

内容保护

对处理保护/加密内容的应用来说,显示API会上报连接显示器的 安全视频能力。您可以在应用中查询一个显示器是否支持安全视频输出或支持图像缓冲保护,并由此来选择合适的内容流或解码以保证内容可以正常显示。SurfaceView 对象加入了新的安全机制,您的应用可以设置安全标志位,来标记其中的内容不会出现于 截屏结果或不提供安全显示输出的显示器上。

无线显示

由Android 4.2用户可以经由wifi,使用 Miracast 来连接外部显示器。这是一个由 Wi-Fi 联盟 定义的点对点无线显示标准。当无线显示器连接时,用户可以将包括图片、游戏、地图等任意内容以流的形式传输到大屏幕上。

应用可以在 无线显示器中获得一切外部显示功能的支持,而无须额外处理。系统会管理网络连接并将您的展示或其它应用内容以流的形式输出到无线显示器上。

本地由右到左文字支持

Android 4.2引入了 由右到左文字的全面本地支持布局。在本地RTL支持下,您可以为所有用户带来完美的应用体验,不论他们的文字书写方向是由左至右还是由右至左。

当用户切换系统语言到由右至左书写方式时,系统提供自动的应用UI布局和所有可视组件的镜像,包括文字元素的显示和输入。

您的应用仅需极少改变即可支持 RTL 布局镜像。如果您的应用支持这一特性,只要在您应用的manifest文件中将所有的”left/right”布局属性改变为对应的”start/end”即可。系统就会根据需要处理您UI了。

为精确控制您的应用UI,Android 4.2包括了新的API帮您管理View组件中的布局方向,文字方向,文字对齐,布局分配和语言方向。您甚至可以使用由右至左的书写方向时,创建布局/绘图和其它资源的定制版本来进行显示。

为帮助您定制由右至左布局,HierarchyViewer工具中可以看到层次结构中所有的View的start/end,布局方向、文字方向和文字对齐属性

国际语言增强

Android 4.2为国际用户提供了大量的 字体和字符优化

  • 为韩国用户提供了新的字体选择 — Nanum (나눔글꼴) Gothic, 为韩语设计的unicode字体。
  • 在WebViews里为日语提供了改良的竖排显示支持。
  • 为印度语、泰语、阿拉伯语和希伯来文改善了默认字体的字距和位置。

默认的Android键盘也包括了多套更新的字典:

  • 为法语(支持两字组)、英语和俄语改良了字典
  • 为丹麦,希腊,芬兰,立陶宛,拉脱维亚,波兰,斯洛文尼亚,塞尔维亚,瑞典,土耳其语提供了新字典

创建华丽UI的新方式

嵌套Fragments

为更好的控制您的UI组件,使它们更模块化,Android 4.2中可以将一个 Fragment 嵌入另外一个 Fragment 。新的Fragment管理器可以帮你把一个Fragment作为子结点植入到另外一个Fragment的视图层次中。

您可以在很多情景下使用嵌套Fragment,但最有用的地方是在一个动态可重用的UI组件内实现另外一个动态可重用UI组件。比如说如果您使用ViewPager创建了一个支持左右滑动的fragment,您现在可以在其中的每个Fragemnt中再嵌入其它的Fragment了。

为帮助您在应用中由嵌套Fragment获益更多,这个特性已经加入了最新的 Android 支持库

相机HDR支持

Android 4.2引入了 新的相机硬件接口和流水线以改善性能。 在设备支持的情况下,应用可以使用新的 HDR 摄像情景模式来使用高动态范围技术拍摄。

此外,框架层提供了API,供应用 设置是否在拍摄时启用快门音。应用可以给用户选择来禁用声音,或选择其它的声音来替换标准快门音。

新的内建开发者选项

Android 4.2系统包括了大量的新开发者选项,以使构建兼顾外观和性能的应用更加容易。为在设备和模拟器上进行 调试和调优曝露了更多特性。

在运行Android 4.2的设备上,开发者选项默认隐藏。您可以在Android设备上找到设 > 关于手机 > 版本号,并连续点击 7 来打开此选项。

Android 4.2中的新开发者选项包括:

  • 获取Bug 报告 — 即刻截屏并dump设备状态信息至本地文件存储,并将其作为邮件附件发送。
  • 电源菜单bug 报告 — 在设备电源菜单和快速设置上添加新选项以生成bug报告(见上)。
  • 经由usb 验证应用 — 允许您在通过usb安装应用时禁用应用检查,但在其余的诸如浏览器来源的应用上仍保持此验证过程。这有助于在保持安全选项打开的情况下,加速应用开发。
  • 显示硬件层更新 — 当硬件层有更新时,会闪动绿色。??
  • 显示GPU 覆盖绘制 — 高亮GPU覆盖绘制区域。
  • 强制4 倍MSAA — 在Open GL ES 2.0应用中强制打开4倍MSAA支持。
  • 模拟第二显示输出 — 在当前屏幕上创建非安全的覆盖窗口,以模拟远程显示。您可以控制模拟显示器的尺寸和密度。
  • 启用OpenGL 跟踪 — 使您可以用Logcat、Systrace或glGetError来跟踪OpenGL的执行。

新平台技术

Android 4.2包括了大量新的和 增强的平台技术以支持借助广泛硬件设备实现交流创新的用例。大部分情况下,新平台技术和增强不会直接影响您的应用,所以,您可以在不做任何修改的情况下享用其成果。

安全增强

每个版本的Android发布均包括了大量的安全增强以保护用户。以下是一些Android 4.2中的安全增强:

  • 应用校验— 用户可以启用“验证应用”来使应用在安装前接受应用校验器的扫描。应用校验可以在用户尝试安装一个可能有害的应用时提醒用户。如果应用确实有害,它会阻止应用的安装。
  • 对收费SMS 的控制 — 如果应用尝试发送短信至可能产生额外收费的短号码,Android会提示用户。用户可以选择是否允许应用发送短信。
  • 永远在线VPN — 可以设置应用无法连接网络,直到特定的VPN联通。这可以阻止应用经由其它的网络连接。
  • 证书锁定 — libcore的SSL实现支持了证书锁定。锁定的域将在获取到的证书链和期待证书不匹配时报出证书认证错误。这个保护措施对证书认证过程中可能的风险予以防护。
  • 改良的Android 权限显示 — 权限现在归入到组里,以使用户更易于理解。在浏览权限时,用户可以点击权限来获得该权限的更多详情信息。
  • installd 保护 — installd系统服务不再以root用户运行,降低了提升权限漏洞的潜在可能性。
  • init 脚本保护 — init添加了O_NOFOLLOW语素以阻止链接相关的攻击。
  • FORTIFY_SOURCE — Android实现了FORTIFY_SOURCE。这个特性用于系统库和应用,以阻止内存破坏。
  • ContentProvider 默认配置— 针对API level 17的应用对于ContentProvider的export选项配置默认值改为了“false”,以降低应用被攻击的可能性。
  • Cryptography — 修改默认SecureRandom和Cipher实现。RSA使用OpenSSL。借由OpenSSL 1.0.1 支持了TLSv1.1和TLSv1.2

新蓝牙栈

Android 4.2引入了为Android设备进行过优化的新蓝牙栈。新蓝牙栈为Google和Broadcom共同开发,以取代BlueZ,它提供了改进的兼容性和可靠性。

低延迟音频

Android 4.2改善了低延迟音频回放的支持,由Android 4.1发布起,就用 OpenSL ES,Soundpool和音频发生器API来改善音频输出延迟。这些改善 需要硬件支持:拥有低延迟音频特性的设备可以经由硬件特性常量来通知应用。新的AudioManager在支持此特性的设备上提供了查询本地音频采样率和缓冲大小的API。

新相机硬件接口

Android 4.2引入了新的相机栈实现。相机子系统包括了相机流水线中的组件实现,诸如具有过程控制的连拍系统。

新NFC硬件接口和控制接口

Android 4.2引入了基于来自NFC论坛的NCI标准的控制器支持。NCI提供了NFC控制器(NFCC)和设备Host之间的标准对话协议。Google和博通共同开发的新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 方法提供了新的intrinsic支持
  • BouncyCastle升级至1.47
  • zlib升级至1.27
  • dlmalloc升级至2.8.6

相关 [android 开发] 推荐:

Android开发Tips

- - CSDN博客推荐文章
欢迎Follow我的 GitHub, 关注我的 CSDN.. 介绍一些, 在Android开发中, 会经常使用的小知识点.. submodule与git可以保持实时同步. 导入, 路径多于一个, 前面不添加冒号(:).. 使用PackageManager.. // 检查App是否安装 private boolean appInstalledOrNot(String uri) {.

Android 开发者调查

- - 爱范儿 · Beats of Bits
Startup 是为 Android 开发者提供盈利模式的一个公司. Android 开发者只要在应用上推广 Startup 服务,并且为网站带去流量,就可以得到网站给予的补贴. 今年 3 月的时候,Startup 网站对 Android 开发者进行了一次调查. 现在,他们将调查的结果制成了信息图,并 发布在网站之上.

Android敏捷开发指南

- - 互联网的那点事
本文紧密结合移动开发方法与技术,围绕Android平台的开发探讨提供更高质量移动产品的解决方案. 作者中分析了移动开发中常见的问题,从两方面阐述了ThoughtWorks使用的测试开发方案和相应的架构方法与常用工具应用,并进一步阐述了为移动开发流程所提供的持续发布方案. 随着云计算、移动互联等一系列新技术概念的崛起,新一轮的IT经济正在不断扩大发展.

Android应用开发资源

- - InfoQ cn
Android应用设计和开发人员现在可以参考由Android用户体验(UX)团队官方发布的 Android设计指南. 该指南提供了开发者应该遵循的基本原则,并列出了很多细节指导,涉及 设备与显示、 主题、 触控交互、 度量与栅格、 排版、 色彩、 图标设计,以及如何 编写用户交互界面的提示语.

Android 开发视频推荐

- - 大猫の意淫筆記
作为 Android 死忠粉,总是想自己来两手,无奈没摸过后台开发,面向的唯一对象就是马总. 花了个把星期入个门,发现还是挺好玩的. 市面上的 Android 入门书有2个主要问题,一个是都要求有 Java 基础,另一个是跟不上 Android 版本更新.所以并不推荐买书学习. 斯坦福大学公开课:编程方法学.

Android 开发者在 Android Market 上兜售应用

- SotongDJ - 谷安——谷奥Android专题站
无论你是 Android 用户还是开发者,我们相信你会同意我们所说的一个事实:Android Market 还远未完善,我们不是在谈论它的用户界面或者是如何“开放”,而是另外一个话题. CatNinjaFly,或者是 SuperNinjaCat,又或者是 NinjaCatFly. 叫什么都不要紧,要紧的是我们关心的这个问题,要紧的是它们都是来自同一开发者的完全是相同的游戏,很显然,开发者(商)NANJAANDROID 为了让他们的应用能够在 Android Market 多一些曝光率于是用不同的名称来在 Android Market 中兜售.

Eclipse开发Android应用程序入门

- Bingnan - 酷壳 - CoolShell.cn
原文出处:http://www.smashingmagazine.com/2010/10/25/get-started-developing-for-android-with-eclipse/. 如今的移动设备应用程序开发充满着让人振奋的东西. 功能强大的硬件支持,平板电脑,多样的软件平台(塞班 OS,iOS,WebOS,Windows Phone 7…),移动设备开发者前景充满了机会和挑战.

android开发书籍emule下载链接

- jing77 - biAji HeRe
本来放在Verycd的,出于避免某些难以预料的问题的考虑(就像Verycd的诸多电影资源一样),我不得不觉得应该将Verycd作为一个备选方案. ed2k: [android.开发书籍].Beginning.Android.2.(Apress,.2010,.1430226293).pdf. ed2k: [android.开发书籍].Hello.Android.3rd.Edition.pdf.

Android能赢得开发者吗?

- Aragorn - cnBeta.COM
我们听到很多关于Android大受欢迎的消息;从市场份额上说,它明显超越了众多竞争对手,比如苹果的iOS. 不过,尽管倍受追捧,对消费者也很有吸引力, Android似乎还是失去了一部分人的支持,比如开发者,而这部分支持对OS取得成功至关重要. 为什么Android赢取开发者的支持这么难. 更重要的是,他们要如何赢得开发者.

Android Native 代码开发学习笔记

- iDesperadO - WindStorm
本文提供排版更佳的PDF版本下载. JNI,全称Java Native Interface,是用于让运行在JVM中的Java代码和运行在JVM外的Native代码(主要是C或者C++)沟通的桥梁. 代码编写者即可以使用JNI从Java的程序中调用Native代码,又可以从Native程序中调用Java代码.