Android4.1 新功能 新特性

jopen 12年前
   <div class="BlogContent">     <p>欢迎来到Android4.1,果冻豆!</p>     <p>Android4.1是迄今为止最快、最流畅的Android版本,我们已经对整个平台进行了改进,并且为用户和开发人员增加了大量的新功能。本文档仅仅是Android4.1新功能的冰山一角。</p>     <p>详情请参考<a href="/misc/goto?guid=4958347792704957000" rel="nofollow" target="_blank">Android4.1 APIs</a>文档来详细了解最新的开发人员APIs。</p>     <p><img alt="Android4.1 新功能 新特性" src="https://simg.open-open.com/show/c486e0cb7c346cc36523749162255008.png" width="400" height="532" /></p>     <p><br /> </p>     <h1><span>更快、更流畅、更灵敏</span></h1>     <p> </p>     <p>优化的Android4.1能够提供最好的展现形式和实现最低的触摸延迟,提供一个简单易用、容易操作的用户界面</p>     <p>为了确保一致的帧频,Android扩展了垂直同步调速(<b>vsync timing</b>)来实现Android框架处理所有的图片和动画。一切都运行在步调一致、16毫秒的垂直同步心跳机上——包括程序渲染、触摸事件、屏幕构成和显示刷新——所以帧不会提前或者延后。</p>     <p>同时为了获得更加一致的渲染,Android4.1在图形管道上添加了三重缓冲(<b>triple buffering</b>)技术,能够使一切感觉更顺畅,比如从滚动到分页和动画。</p>     <p> </p>     <h1><span>增强的辅助功能-Enhanced Accessibility</span></h1>     <p> </p>     <p>Android4.1既通过同步触摸vsync timing来减少触摸延迟,又通过预测你的手指将在那里来刷新屏幕来减少触摸延迟。这样就可以得到更容易和更均匀的触摸响应。。此外,在activity不活动之后,Android会申请一个<b>CPU input boost</b> 来确保在下次触摸事件时没有延迟。<br /> <br /> <b>Tooling</b>可以帮助你得到应用程序的完全的最佳性能,现在Android4.1的设计中,支持工作的一个新工具是<b>systrace</b>,它能够直接从Linux内核采集数据来生成一个系统所有活动的整体的图。采集来的数据被表示为一组垂直堆叠起来的时间序列图表,用来帮助隔离渲染中断和其他问题,现在这个工具在Android SDK中已经可用了(Tools R20 或者更高)。</p>     <div>      <div>       <p><img alt="Android4.1 新功能 新特性" src="https://simg.open-open.com/show/c9926072a5f41037a618abacac5ca0ac.png" width="250" height="489" /></p>       <p> </p>      </div>     </div>     <h1><span>支持国际用户</span></h1>     <p><span><br /> </span></p>     <h2><span>双向文本和其他语言支持</span></h2>     <p> </p>     <p>Android4.1通过在TextView and EditText 元素中支持双向文本可以帮助你赢得更多的用户。应用程序可以按照从左到右或从右到左的脚本显示文本或者处理文本编辑。应用程序可以使用新的阿拉伯语、希伯来语地区及相关字体。</p>     <p>其他类型新语言的支持包括:</p>     <ul>      <li>追加的印度语言:埃纳德语,泰卢固语,马拉雅拉姆</li>      <li>新绘文字字符的Unicode 6.0版</li>      <li>对日本用户来说更好的字形支持(比如当系统语言设置为日语时对日本特有版本的字形的渲染)</li>      <li>阿拉伯语字形在WebViews上进行了优化,除了TextViews。</li>      <li>在WebViews中支持垂直文本,包括Ruby文本和其他垂直文本字形</li>      <li>合成粗体现在可以用于所有没有专门粗体字形的字体</li>     </ul>     <p></p>     <div>      <div>       <p><img alt="Android4.1 新功能 新特性" src="https://simg.open-open.com/show/eb2521c3641d524a9ea3cfa711c954cf.png" width="300" height="381" /></p>       <p> </p>      </div>     </div>     <h2><span>用户可安装的键盘映射</span></h2>     <p> </p>     <p>该平台现在支持用户安装键的盘映射。比如支持其他的国际键盘和特殊布局类型的键盘。在默认情况下,Android4.1包含27种国际键盘,包括 Dvorak。当用户连接一个键盘的时候,他们可以设置程序选择一个或多个他们想用的键盘。当打字的时候,用户可以使用快捷键(比如Ctrl- Space)在键盘布局之间进行切换。 你可以创建一个键盘映射发布到系统中。这个APK应该包括键盘布局资源文件,基于标准的Android键盘映射格式。这个应用程序要想给用户提供自定义的 键盘布局需要在应用程序的manifest文件中声明一个合适的广播接收器(ACTION_QUERY_KEYBOARD_LAYOUTS )。</p>     <p> </p>     <h1><span>构造更美的UI</span></h1>     <p><span><br /> </span></p>     <h2><span>扩展的通知功能</span></h2>     <p> </p>     <p>扩展的通知,让你在显示更多类型的通知内容。用户可以用一个简单的手势展开他们。通知功能早已是Android上独特并受欢迎的功能。在不影响应用程序的UI的情况下,开发人员可以在通知栏把重要的或基于时间的信息,显示给用户。</p>     <p>Android 4.1对Android通知框架进行了重大的更新。应用程序现在可以通过点选展开或者折叠来显示更大,更丰富的通知。通知支持新的内容类型,包括照片,优先级的配置,甚至可以包括多个动作。</p>     <p>通过改进通知的使用,应用程序可以创建的使用面积较大,高达256 DP的高度的通知信息。三个模板的通知样式可供选择:</p>     <ul>      <li>BigTextStyle - 通知,其中包括一个多TextView的对象。</li>      <li>BigInboxStyle - 通知显示任何类型的消息,标题等,如清单。</li>      <li>BigPictureStyle - 如位图,展示视觉内容的通知。</li>     </ul>     <p>除了模板的样式,你可以使用任何远程视图创建你自己的通知显示方式,。</p>     <p>应用程序在通知内容下,可以添加三个动作。让用户以替代办法直接回应通知信息。如不通过应用程序访问电子邮件或电话。</p>     <p>使用可扩展的通知,应用程序可以轻松地提供更多的信息给用户。用户还可以长按任何通知,以获取有关通知发送者的信息,并选择禁用应用程序的进一步通知。</p>     <p><img alt="Android4.1 新功能 新特性" src="https://simg.open-open.com/show/55d464f3f2095a3454792db67a373942.png" width="300" height="587" /><br /> 通知的扩展,让你看到更多类型的通知内容。用户可以用一个简单的手势展开他们。</p>     <p> </p>     <h2><span>大小可调整的应用程序小部件</span></h2>     <p> </p>     <p>应用小工具,可以自动调整,以适应主屏幕,其大小变化时加载不同的内容。Android的4.1引入了改进的应用小工具,可以按照用户拖动到的主屏 幕的位置,主屏幕上提供的总空间大小,自动调整大小。新的应用程序部件的API,让你利用这一优势,以优化您的应用程序部件大小的变化时,Widget的 大小。</p>     <p>当一个部件的变化大小,系统通知主机应用程序的部件供应商,可以重新在widget的内容需要。例如,一个widget可以显示更大,更丰富的图形或额外的功能或选项。开发人员仍然可以保持最大和最小尺寸的控制,并在需要时可以更新其他部件选项。</p>     <p>你的部件,还可以提供单独的横向和纵向布局,适当的屏幕方向改变时系统膨胀。</p>     <p>应用部件现在可以显示在第三方发射器和其他宿主应用程序通过一个新的绑定意向书(AppWidgetManager.ACTION_APPWIDGET_BIND)的。</p>     <p><img alt="Android4.1 新功能 新特性" src="https://simg.open-open.com/show/9df887a621520e4286f32795d5458075.png" width="300" height="587" /><br /> 应用程序窗口小部件可以自动调整大小以适应主屏幕,并可以加载不同的内容以适应其尺寸变化。</p>     <p> </p>     <h2><span>简化的任务导航 </span></h2>     <p> </p>     <p>Android 4.1使您更容易从您应用程序管理顶部导航栏,并有助于确保用户一致的体验。</p>     <p>在应用的manifest文件添加新的XML属性,可以实现顶部导航栏中定义UI中独立的Activity组件功能。你可以。在运行时,随着活动的 推出,该系统manifest文件中提取的最多的导航树,并自动创建在操作栏中向上的启示导航。开发谁申报清单导航不再需要管理导航在运行时的回调,但它 们也可以这样做,如果需要的话。</p>     <p>也可以是一个新的TaskStackBuilder类,让你赶紧把一种人工合成的任务堆栈立即启动或PendingIntent启动时使用的一个活 动。创建一个合成任务堆栈是特别有用的,当用户从偏远的意见,如从主屏幕小部件和通知,推出的活动,因为它让开发人员提供托管的,一致的体验,回到导航。</p>     <p> </p>     <h2><span>Activity Lanuch 的简易动画</span></h2>     <p> </p>     <p>您可以使用一个新的helper类,ActivityOptions,创建和控制,动画显示,当您启动您的活动。通过辅助类,你可以指定自定义动画资源活动启动时要使用的,或要求新的缩放动画开始从任何你指定在屏幕上,并选择性地包括一个缩略图位图的矩形。</p>     <p> </p>     <h2><span>灯输出和全屏模式的转换</span></h2>     <p> </p>     <p>新的系统UI视图中的标志,让你干净的过渡,或从一个正常的应用程序界面(操作栏,导航栏,系统栏可见),“灯输出模式”(状态栏和操作栏隐藏和导航栏变灰) “全屏模式”(状态栏,行动起来吧,所有隐藏的导航栏)。</p>     <p> </p>     <h2><span>新的remoteable Views 类型</span></h2>     <p> </p>     <p>开发人员现在可以使用GridLayout的ViewStub在主屏幕小部件和通知的意见。GridLayout的让你构建远程意见的内容和管理与 较浅的UI层次结构中,儿童的意见路线。ViewStub是一种无形的,零大小的视图,可用于懒洋洋地膨胀在运行时的布局资源。</p>     <p> </p>     <h2><span>生活壁纸预览</span></h2>     <p> </p>     <p>Android 4.1使得它更容易为用户寻找和安装现场壁纸,包括他们的应用程序。如果您的应用程序,包括现场壁纸,你现在可以开始一个活动 (ACTION_CHANGE_LIVE_WALLPAPER),显示了用户从自己的应用程序的动态壁纸预览。从预览,用户可以直接加载动态壁纸。</p>     <p> </p>     <h2><span>更高分辨率的联系人照片</span></h2>     <p> </p>     <p>与Android 4.1,你可以存储联系人的照片,如大型720×720,使接触更丰富,更个人。应用程序可以在该大小的存储和检索联系人的照片,或使用任何其他需要的大 小。在特定设备上支持最大的照片尺寸可能会有所不同,所以应用程序应该查询内置的接触供应商,在运行时获得当前设备的最大尺寸。</p>     <p> </p>     <h1><span>新的输入类型和功能</span></h1>     <br />     <h2><span>弄清有关设备添加和删除的情况</span></h2>     <p> </p>     <p>当有新的设备接进来的时候,比如通过USB,蓝牙,或任何其他连接类型,应用程序会通过注册的方式得到通知,他们可以使用这些信息来改变状态或需要的功能。比如说一个游戏应用程序可能会接收到这样一个通知:有一个新键盘或者摇杆接进来了,这表明一个新成员加入了。</p>     <p> </p>     <h2><span>查询输入设备的功能</span></h2>     <p> </p>     <p>Android4.1包含很多输入设备功能的APIs,这些APIs能够让应用程序和游戏充分利用那些接入并有效的输入设备的功能。 应用程序可以查询设备管理器来枚举当前连接的所有的输入设备,并了解每个的功能。</p>     <p> </p>     <h2><span>控制输入设备上的振动器</span></h2>     <p> </p>     <p>在其他功能中,应用程序现在可以使用任何一个接入的输入设备的相关震动服务,比如震动卡(<b>Rumble Pak</b> )控制器。</p>     <p> </p>     <h1><span>Animation and Graphics-动画和图形</span></h1>     <br />     <h2><span>应用程序中的的垂直同步(Vsync)技术</span></h2>     <p> </p>     <p>整个Android框架扩展VSYNC会产生一个更加一致的帧频和流畅、稳定的UI。所有的app都将受益,因为Android4.1扩展的Vsync计时会影响到用户引用程序初始化的绘图和动画。这能让他们在UI线程上优化操作,并提供了一个稳定的同步基。</p>     <p>应用程序可以免费利用VSYNC计时的优势,通过Android的动画框架。动画框架现在使用VSYNC计时自动处理整个动画的同步。</p>     <p>需要特殊用途的话,应用程序可以通过Choreographer类的API访问VSYNC计时功能。应用程序可以要求在下一个VSYNC帧进行验 证,这是不用动画框架的情况下的一个很好的安排动画的方式。更高级的用法是,应用程序可以再Choreographer类中传递回调函数,这个会在下一帧 中调用。</p>     <p> </p>     <h2><span>新动画和过渡类型</span></h2>     <p> </p>     <p>现在的动画框架允许你定义当开始和结束运行ViewPropertyAnimator动画时采取的行动,帮助他们与其他动画或应用程序中的行动进行同步,可以运行任何Runnable对象。例如,该Runnable对象可以指定另一个动画在前一个动画完成后开始启动。</p>     <p>你现在也可以指定一个ViewPropertyAnimator在动画过程中使用一个层。在此之前,最好的做法是动画完成前建立一个层,然后在 onAnimationEnd()事件处理动画时删除层。现在,ViewPropertyAnimator中的withLayer()方法能够简化这个过 程,每次只需要调用一个函数就行。</p>     <p>LayoutTransition中的一个新的过渡类型可以自动响应一个ViewGroup布局的变化动画。</p>     <p> </p>     <h1><span>新的交流方式</span></h1>     <br />     <h2><span>Android Beam</span></h2>     <p> </p>     <p>Android Beam是一种流行的基于NFC的技术,它能够让用户在两个有NFC功能的电话接触之时马上分享信息。</p>     <p>在Android4.1中,Android Beam使得图片、视频和其他需要蓝牙来进行传输的数据分享变得更加容易。当用户触发传输时,Android Beam通过NFC到蓝牙的传输方式,使得从一个设备传输文件到另一个设备变得非常容易。</p>     <p> </p>     <h2><span>wifi网络服务发现</span></h2>     <p> </p>     <p>Android 4.1引入了支持基于组播DNS服务的发现,它可以让应用程序查找和连接到对端设备通过Wi-Fi网络所提供的服务 - 包括移动设备、打印机、数码相机、媒体播放器、以及其他服务。开发人员可以利用Wi-Fi网络服务发现的优势,建立跨平台或多人游戏和应用。</p>     <p>使用服务发现的API,应用程序可以为任何支持NSD的设备创建和注册任何种类的服务。服务通过组播在网络上使用方便可读的字符串标识符,它可以让用户更容易识别服务的类型。</p>     <p>消费电子设备可以使用API进行扫描,发现当地的Wi-Fi网络连接的设备提供的服务。发现后,应用程序可以使用API来得到服务的IP地址和端口,通过它可以建立一个套接字连接。</p>     <p>你可以利用这个API的优势,做成您的应用程序的新功能。例如,你可以做一个让用户连接到一个摄像头、打印机、或其他移动设备支持的Wi-Fi对等连接的应用程序。</p>     <p> </p>     <h2><span>WiFi的直接服务发现</span></h2>     <p> </p>     <p>Android冰淇淋三明治版本中引入wifi直连技术也就是让应用程序发现和匹配高带宽的对等连接的技术的支持。 Wi-Fi直连是一个理想的方式来共享媒体、照片、文件和其他类型的数据和会话,即使那里没有手机网络或Wi-Fi的可用。</p>     <p>在Android果冻豆版本中,Android进一步的提供Wi-Fi直连特性,增加相关服务发现API的支持。前相关的服务发现可以让你的应用程 序在跟附近设备连接前获得更多关于他们服务支持的的信息。应用程序可以启动特定服务的发现并筛选那些真正支持目标服务或应用程序的设备列表。</p>     <p>例如,这意味着你的应用程序可以发现有打印功能或有一个特定的游戏的设备,而不是发现附近所有的Wi-Fi 直连设备。另一方面,您的应用程序可以发布到其他设备的服务,其他设备可以发现它,然后建立一个连接。这大大简化了为用户发现和配对,让应用更有效的利用 Wi-Fi直连的优势。</p>     <p>有了Wi-Fi直接服务发现,你可以创建可以共享所有照片、影片、游戏、分数、或几乎任何其他数据的无需任何互联网或移动网络的应用程序和多人游戏。您的用户可以使用只有一个直接的P2P连接,从而避免了使用移动带宽连接。</p>     <p> </p>     <h2><span>网络带宽管理</span></h2>     <p> </p>     <p>Android 4.1应用程序管理数据时使用适当的设备连接到计量网络,包括移动热点。应用程序可以查询当前网络是否能开始大量下载,否则可能会给用户带来昂贵的网络费 用。通过该API,您现在可以得到清晰的关于哪个网络是数据敏感的信息,并相应地能够管理您的网络活动。</p>     <p> </p>     <h1><span>全新的多媒体功能</span></h1>     <br />     <h2><span>多媒体解码器访问</span></h2>     <p> </p>     <p>Android 4.1提供低级的平台硬件和软件解码器访问。App可以查询系统,发现怎么样的低级的多媒体解码器在设备上是可用的。比如,你现在可以创建多个多媒体解码 器实例, 队列进入输入缓存,并接收返回的输出缓存。而且,这多媒体解码器框架支持被保护的内容。App可以通过设备上的DRM方式查询有访问被保护内容权限的解码 器。</p>     <p> </p>     <h2><span>USB音频</span></h2>     <p> </p>     <p>USB音频输出支持硬件厂商生产像audio docks那样的硬件,它与Android设备对接。这个功能在ADK中同样开放,所有的开发者可以创造自己的硬件了。</p>     <p> </p>     <h2><span>音频记录触发</span></h2>     <p> </p>     <p>在音频播放轨迹的基础上,Android现在可以触发音频记录。在有些情况很有用,比如播放一个提示音来提示你的用户开始说话记录他们的声音。这个特性帮你同步记录,你不必再为播放和记录太迟而发恼了。</p>     <p> </p>     <h2><span>多声道音频</span></h2>     <p> </p>     <p>Android 4.1 在有多声道HDMI端口的设备上支持多声道音频。多声道音频使你的应用更加丰富用户的音效体验,比如游戏、音乐软件、视频程序。 不支持的设备,Android会自动混合音频,通道数为设备所支持的数量(通常为立体音)。Android 4.1还内置支持编码、解码AAC音频5.1。</p>     <p> </p>     <h2><span>音频预处理</span></h2>     <p> </p>     <p>开发者可以在记录时对音频应用预处理效果,就像应用降噪来提升录音质量,回声消除, 和通过不同的音量进行增益控制。需要高质量和干净音频记录的App将会在这些预处理中获益。</p>     <p> </p>     <h2><span>音频链接</span></h2>     <p> </p>     <p>播放器支持链接音频流在一起播放而不产生停顿。这对需要在不同的音频文件无缝转换的App很有用,比如播放连续的唱片或者游戏音乐。</p>     <p> </p>     <h2><span>媒体路由</span></h2>     <p> </p>     <p>新的API里MediaRouter, MediaRouteActionProvider,和MediaRouteButton对选择哪里播放媒体提供标准的机制和UI。内置支持有线耳机和a2dp蓝牙耳机和扬声器,而且在你的应用中你可以添加自己的路由设置。</p>     <p> </p>     <h1><span>Renderscript计算</span></h1>     <p> </p>     <p>Android 4.1扩展了Renderscript计算,为我们带来了更多的灵活性。现在,你可以在Renderscript代码内尝试纹理, 新的程序可用来定义浮点精度所需的脚本。这使你开启NEON指令就像在CPU路径上的速度向量操作, 其他不可能在IEEE 754-2008标准。</p>     <p>现在,你可以编译你的Renderscript计算脚本在x86的设备或者硬件上。 你也可以定义多root类型内核在一个Renderscript源文件。</p>     <p> </p>     <h1><span>Android浏览器和WebView组件</span></h1>     <p> </p>     <p>在Android4.1中,Android浏览器和WebViews增强了以下功能:</p>     <ul>      <li>更好的HTML5视频的用户体验,比如按下播放、暂停钮的用户体验和从内嵌到全屏模式的平稳过度。<br /> </li>      <li>改进了滚动和缩放的渲染速度,减少其内存使用,使其获得更好的显示性能。<br /> </li>      <li>改进了HTML5/CSS3/Canvas的动画性能.<br /> </li>      <li>增强了文本输入组件。<br /> </li>      <li>更新了JavaScript引擎(V8)。<br /> </li>      <li>支持HTML5中的获取多媒体图像规范Media Capture(输入类型中的"capture"=文件元素名)。<br /> </li>     </ul>     <br />     <h2><span>谷歌API和服务 </span></h2>     <p> </p>     <p>在新版本中,Android系统获得了一些新的服务。</p>     <p> </p>     <h3><span>Android云通讯 </span></h3>     <p> </p>     <p>谷歌云消息服务(简称GCM)允许Android开发者发送短信给Android用户,而无需特有的同步解决方案。<br /> GCM会处理队列消息的所有细节并能高效的支持Android设备。它支持多点传送(群发,一个请求可最多连接1000个设备)。也支持高负载的消息,这意味着,开发者不光能发送很短的数据,最多也可发送高达4K的数据。<br /> GCM是完全免费的,注册也很方便,更多关于GCM的信息请参阅<a href="/misc/goto?guid=4958347793604958395" rel="nofollow" target="_blank">GCM介绍</a>。</p>     <p> </p>     <h3><span>应用程序加密 </span></h3>     <p> </p>     <p>从Android4.1开始,GooglePlay(谷歌在线应用商店)会通过给每一个应用程序在安装到Android设备之前进行密钥加密来保护程序的的支付等方面的安全。</p>     <p> </p>     <h3><span>智能的程序更新 </span></h3>     <p> </p>     <p>智能的更新程序是GooglePlay推出的新功能,这是一种更好的更新应用程序的途径。当开发者们发布了更新的产品,GooglePlay只会发 送需要更新的那一部分到设备中,而不是整个APK程序,这样使更新的内容变得更小,更方便的下载更新,减少设备上的耗电量和移动数据的流量。平均一次智能 更新的下载大小约是更新完整APK程序的三分之一。</p>     <p> </p>     <h1><span>GooglePlay 服务(即将推出)</span></h1>     <p> </p>     <p>GooglePlay 服务帮助开发者集成Google的服务到开发的应用程序上,比如认证和Google+。<br /> 谷歌应用商店给用户设备自动配置谷歌应用商店服务,这些服务不需要开发者关心,这样你的应用程序就成了拥有轻量库文件的瘦客户端。<br /> 因为你的程序有更小的客户端库文件,你可以减小下载文件和存储空间的大小。此外,不需要开发人员发布程序更新,GooglePlay将提供定期的更新服务。</p>     <p>更多关于GooglePlay服务的介绍,请参阅<a href="/misc/goto?guid=4958347794412742232" rel="nofollow" target="_blank">Google Play Services</a>页面。<br /> <br /> 原文地址:<a href="http://wiki.eoeandroid.com/index.php?title=Android_4.1_for_Developers&diff=prev&oldid=4289" target="_blank">http://wiki.eoeandroid.com/index.php?title=Android_4.1_for_Developers&diff=prev&oldid=4289</a></p>    </div>