<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0">
 <title type="html">mirwing&amp;#039;s Story</title>
 <id>http://www.mirwing.com/atom</id>
 <link rel="alternate" type="text/html" hreflang="ko" href="http://www.mirwing.com/"/>
 <subtitle type="html">안녕하세요~....언제나 즐겁게!.</subtitle>
 <updated>2010-06-08T16:50:49+09:00</updated>
 <generator>Textcube.com 2.0 Garnet</generator>
 <entry>
  <title type="html">SDK Tools r6 &amp;amp; ADT 0.9.7 &amp;amp; NDK r4 for Froyo</title>
  <link rel="alternate" type="text/html" href="http://www.mirwing.com/entry/SDK-Tools-r6-ADT-097-NDK-r4-for-Froyo"/>
  <link rel="replies" type="application/atom+xml" href="http://www.mirwing.com/atom/discuss/198" thr:count="0"/>
  <category term="APP&amp;amp;SDK"/>
  <category term="android 2.2"/>
  <category term="Android sdk 2.2"/>
  <category term="Froyo SDK"/>
  <author>
   <name>mirwing</name>
  </author>
  <id>http://www.mirwing.com/198</id>
  <updated>2010-05-27T10:27:36+09:00</updated>
  <published>2010-05-27T10:23:57+09:00</published>
  <content type="html">&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: arial, sans-serif; line-height: normal; font-size: 13px; color: rgb(67, 90, 110); &quot;&gt;&lt;h1 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 8px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.7em; &quot;&gt;SDK Tools, r6&lt;/h1&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(51, 51, 51); line-height: 16px; &quot;&gt;&lt;dt style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Dependencies:&lt;/dt&gt;&lt;dd style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;p style=&quot;margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;If you are developing in Eclipse with ADT, note that SDK Tools r6 is designed for use with ADT 0.9.7 and later. After installing SDK Tools r6, we highly recommend updating your ADT Plugin to 0.9.7.&lt;/p&gt;&lt;/dd&gt;&lt;dt style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Library projects:&lt;/dt&gt;&lt;dd style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;p style=&quot;margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;The SDK Tools now support the use of &lt;em&gt;library projects&lt;/em&gt;&amp;nbsp;during development, a capability that lets you store shared Android application code and resources in a separate development project. You can then reference the library project from other Android projects and, at build time, the tools compile the shared code and resources as part of the dependent applications. More information about this feature is available in the &lt;a href=&quot;http://developer.android.com/guide/developing/other-ide.html#libraryProject&quot; style=&quot;color: rgb(0, 102, 153); text-decoration: underline; &quot; target=&quot;_blank&quot;&gt;Developing in Other IDEs&lt;/a&gt;&amp;nbsp;document.&lt;/p&gt;&lt;p style=&quot;margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;If you are developing in Eclipse, &lt;a href=&quot;http://developer.android.com/sdk/eclipse-adt.html&quot; style=&quot;color: rgb(0, 102, 153); text-decoration: underline; &quot; target=&quot;_blank&quot;&gt;ADT 0.9.7&lt;/a&gt;&amp;nbsp;provides the equivalent library project support.&lt;/p&gt;&lt;/dd&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h1 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 8px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.7em; &quot;&gt;ADT Plugin for Eclipse 0.9.7&lt;/h1&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(51, 51, 51); line-height: 16px; &quot;&gt;&lt;dt style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Library projects:&lt;/dt&gt;&lt;dd style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;p style=&quot;margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;The ADT Plugin now supports the use of &lt;em&gt;library projects&lt;/em&gt;&amp;nbsp;during development, a capability that lets you store shared Android application code and resources in a separate development project. You can then reference the library project from other Android projects and, at build time, the tools compile the shared code and resources as part of the dependent applications. More information about this feature is available in the &lt;a href=&quot;http://developer.android.com/guide/developing/eclipse-adt.html#libraryProject&quot; style=&quot;color: rgb(0, 102, 153); text-decoration: underline; &quot; target=&quot;_blank&quot;&gt;Developing in Eclipse with ADT&lt;/a&gt;&amp;nbsp;document.&lt;/p&gt;&lt;p style=&quot;margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;If you are not developing in Eclipse, &lt;a href=&quot;http://developer.android.com/sdk/tools-notes.html&quot; style=&quot;color: rgb(0, 102, 153); text-decoration: underline; &quot; target=&quot;_blank&quot;&gt;SDK Tools r6&lt;/a&gt;&amp;nbsp;provides the equivalent library project support through the Ant build system.&lt;/p&gt;&lt;/dd&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h1 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding-top: 8px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.7em; &quot;&gt;Android NDK, r4&lt;/h1&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(51, 51, 51); line-height: 16px; &quot;&gt;&lt;dt style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;General notes:&lt;/dt&gt;&lt;dd style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Provides a simplified build system through the new &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;ndk-build&lt;/code&gt;&amp;nbsp;build command.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Adds support for easy native debugging of generated machine code on production devices through the new &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;ndk-gdb&lt;/code&gt;&amp;nbsp;command.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Adds a new Android-specific ABI for ARM-based CPU architectures, &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;armeabi-v7a&lt;/code&gt;. The new ABI extends the existing &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;armeabi&lt;/code&gt;&amp;nbsp;ABI to include these CPU instruction set extensions:&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Thumb-2 instructions&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;VFP hardware FPU instructions (VFPv3-D16)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Optional support for ARM Advanced SIMD (NEON) GCC intrinsics and VFPv3-D32. Supported by devices such as Verizon Droid by Motorola, Google Nexus One, and others.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Adds a new &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;cpufeatures&lt;/code&gt;&amp;nbsp;static library (with sources) that lets your app detect the host device's CPU features at runtime. Specifically, applications can check for ARMv7-A support, as well as VFPv3-D32 and NEON support, then provide separate code paths as needed.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Adds a sample application, &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;hello-neon&lt;/code&gt;, that illustrates how to use the &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;cpufeatures&lt;/code&gt;&amp;nbsp;library to check CPU features and then provide an optimized code path using NEON instrinsics, if supported by the CPU.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Lets you generate machine code for either or both of the instruction sets supported by the NDK. For example, you can build for both ARMv5 and ARMv7-A architectures at the same time and have everything stored to your application's final &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;.apk&lt;/code&gt;.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;To ensure that your applications are available to users only if their devices are capable of running them, Android Market now filters applications based on the instruction set information included in your application — no action is needed on your part to enable the filtering. Additionally, the Android system itself also checks your application at install time and allows the installation to continue only if the application provides a library that is compiled for the device's CPU architecture.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Adds support for Android 2.2, including a new stable API for accessing the pixel buffers of &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/graphics/Bitmap.html&quot; style=&quot;color: rgb(0, 102, 153); text-decoration: underline; &quot; target=&quot;_blank&quot;&gt;Bitmap&lt;/a&gt;&lt;/code&gt;&amp;nbsp;objects from native code.&lt;/li&gt;&lt;/ul&gt;&lt;/dd&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;</content>
 </entry>
 <entry>
  <title type="html">Android 2.2 Version Note</title>
  <link rel="alternate" type="text/html" href="http://www.mirwing.com/entry/Android-22-Version-Note"/>
  <link rel="replies" type="application/atom+xml" href="http://www.mirwing.com/atom/discuss/197" thr:count="0"/>
  <category term="NEWS"/>
  <category term="android 2.2"/>
  <category term="Froyo"/>
  <author>
   <name>mirwing</name>
  </author>
  <id>http://www.mirwing.com/197</id>
  <updated>2010-05-27T10:26:59+09:00</updated>
  <published>2010-05-27T10:17:43+09:00</published>
  <content type="html">&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: arial, sans-serif; line-height: normal; font-size: 13px; color: rgb(51, 51, 51); &quot;&gt;&lt;h2 id=&quot;api-level&quot; style=&quot;margin-top: 2em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 2px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.45em; color: rgb(17, 17, 17); border-top-style: solid; border-top-color: rgb(204, 204, 204); &quot;&gt;API Level&lt;/h2&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;The Android 2.2 platform delivers an updated version of the framework API. The Android 2.2 API is assigned an integer identifier — &lt;strong&gt;8&lt;/strong&gt;&amp;nbsp;— that is stored in the system itself. This identifier, called the &quot;API Level&quot;, allows the system to correctly determine whether an application is compatible with the system, prior to installing the application.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;To use APIs introduced in Android 2.2 in your application, you need to set the proper value, &quot;8&quot;, in the &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;android:minSdkVersion&lt;/code&gt;&amp;nbsp;attributes of the &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&amp;lt;uses-sdk&amp;gt;&lt;/code&gt;&amp;nbsp;element in your application's manifest.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;For more information about how to use API Level, see the &lt;a href=&quot;http://developer.android.com/guide/appendix/api-levels.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;API Levels&lt;/a&gt;&amp;nbsp;document.&lt;/p&gt;&lt;h2 id=&quot;api&quot; style=&quot;margin-top: 2em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 2px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.45em; color: rgb(17, 17, 17); border-top-style: solid; border-top-color: rgb(204, 204, 204); &quot;&gt;Framework API Changes&lt;/h2&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;The sections below provide information about changes made to the application framework API provided by the Android 2.2 platform.&lt;/p&gt;&lt;h3 id=&quot;install-loc&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;App installation on external storage media&lt;/h3&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;The Android platform now allows applications to request installation onto the device's external storage media (such as the SD card), as an alternative to installation onto the device's internal memory.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Application developers can express the preferred installation location for their applications by means of a new attribute of &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&amp;lt;manifest&amp;gt;&lt;/code&gt;&amp;nbsp;in the manifest file, &lt;a href=&quot;http://developer.android.com/guide/topics/manifest/manifest-element.html#install&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;&lt;code style=&quot;color: rgb(0, 102, 153); font-family: monospace; line-height: 1em; &quot;&gt;android:installLocation&lt;/code&gt;&lt;/a&gt;. The attribute supports three values: &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&quot;internalOnly&quot;&lt;/code&gt;, &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&quot;preferExternal&quot;&lt;/code&gt;, and &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&quot;auto&quot;&lt;/code&gt;. At install time, the system checks the value of &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;android:installLocation&lt;/code&gt;&amp;nbsp;and installs the application &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;.apk&lt;/code&gt;&amp;nbsp;according to the preferred location, if possible. If the application has requested external installation, the system installs it into a private, encrypted partition in the external media. Once an application .apk is installed externally, the system lets the user change the storage location of the .apk and move it onto the device's internal memory if needed (and vice versa), through Manage Applications in the user settings.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;By default, the system installs all applications onto the device's internal memory, except for those that explicitly request external installation. This means that the system will always install legacy applications onto internal memory, since they do not have access to the &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;android:installLocation&lt;/code&gt;&amp;nbsp;attribute. However, it is possible to configure and compile a legacy application such that it is installed internally on older versions of the platform and externally on Android 2.2 and later platforms, if necessary.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Note that requesting installation onto the device's external media is not suitable for all applications, particularly because the external media may be removable and unmounting/remounting may disrupt the user experience and system settings.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;For more information about setting a preferred install location for your application, including a discussion of what types of applications should and should not request external installation, please read the &lt;a href=&quot;http://developer.android.com/guide/appendix/install-location.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;App Install Location&lt;/a&gt;&amp;nbsp;document.&lt;/p&gt;&lt;h3 id=&quot;backup-manager&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Data backup&lt;/h3&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;The platform now provides a generalized backup service that applications can use to backup and restore user data, to ensure that users can maintain their data when switching devices or reinstalling the application. The Backup Manager handles the work of transporting the application data to and from the backup storage area in the cloud. The Backup Manager can store any type of data, from arbitrary data to files, and manages backup and restore operations in an atomic manner. For more information, see &lt;a href=&quot;http://developer.android.com/guide/topics/data/backup.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;Data Backup&lt;/a&gt;.&lt;/p&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Graphics&lt;/h3&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New OpenGL ES 2.0 APIs in &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/opengl/GLES20.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;android.opengl.GLES20&lt;/a&gt;&lt;/code&gt;.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/opengl/ETC1.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;ETC1&lt;/a&gt;&lt;/code&gt;, &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/opengl/ETC1Util.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;ETC1Util&lt;/a&gt;&lt;/code&gt;, and &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/opengl/ETC1Util.ETC1Texture.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;ETC1Util.ETC1Texture&lt;/a&gt;&lt;/code&gt;&amp;nbsp;classes and utility methods for using ETC1 for texture compression.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/graphics/ImageFormat.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;ImageFormat&lt;/a&gt;&lt;/code&gt;&amp;nbsp;class.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/graphics/YuvImage.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;YUV image format API&lt;/a&gt;&lt;/code&gt;&amp;nbsp;to enable compression from YUV to JPEG and manipulation of YUV data.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Media&lt;/h3&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New APIs in &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/media/AudioManager.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;android.media.AudioManager&lt;/a&gt;&lt;/code&gt;&amp;nbsp;for managing audio focus, transport control, transient loss of audio focus, ducking.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New broadcast intent for routing audio to SCO — &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/media/AudioManager.html#ACTION_SCO_AUDIO_STATE_CHANGED&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;ACTION_SCO_AUDIO_STATE_CHANGED&lt;/a&gt;&lt;/code&gt;&amp;nbsp;with extras indicating new state.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New APIs in &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/media/SoundPool.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;SoundPool&lt;/a&gt;&lt;/code&gt;&amp;nbsp;to detect completion of sound-loading.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New APIs in &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/media/SoundPool.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;SoundPool&lt;/a&gt;&lt;/code&gt;&amp;nbsp;for auto pause and resume.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New APIs in &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/media/MediaRecorder.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;MediaRecorder&lt;/a&gt;&lt;/code&gt;&amp;nbsp;for specifying audio settings for number of channels, encoding and sampling rates, sampling rate.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New APIs for adding files to the media database, so that they are automatically scanned. See &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/media/MediaScannerConnection.html#scanFile(android.content.Context, java.lang.String[], java.lang.String[], android.media.MediaScannerConnection.OnScanCompletedListener)&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;MediaScannerConnection.scanFile&lt;/a&gt;&lt;/code&gt;&amp;nbsp;and &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/media/MediaScannerConnection.OnScanCompletedListener.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;MediaScannerConnection.OnScanCompletedListener&lt;/a&gt;&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Speech recognition and third-party recognition engines&lt;/h3&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;The platform provides new speech-recognition APIs that allow applications to have a richer interaction with the available voice recognizer. For example, the APIs are sufficient to integrate voice recognition deeply into an IME.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;The platform also provides a &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/speech/RecognitionService.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;RecognitionService&lt;/a&gt;&lt;/code&gt;&amp;nbsp;base class that lets third-party developers create plug-in recognition engines.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/speech/RecognitionListener.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;RecognitionListener&lt;/a&gt;&lt;/code&gt;&amp;nbsp;interface to receive callbacks.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/speech/RecognizerIntent.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;RecognizerIntent&lt;/a&gt;&lt;/code&gt;&amp;nbsp;extras that let a requester app specify details as preferred language, minimum length in milliseconds, and so on.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Camera and camcorder&lt;/h3&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Changes to camera preview API to improve efficieny of preview pipeline.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New display orientation for camera (it can now work in portrait orientation).&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New APIs in &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/hardware/Camera.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;android.hardware.Camera&lt;/a&gt;&lt;/code&gt;&amp;nbsp;for managing zoom level.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New APIs &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/hardware/Camera.Parameters.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;android.hardware.Camera.Parameters&lt;/a&gt;&lt;/code&gt;&amp;nbsp;for querying and setting device camera settings such as focal length, exposure, zoom level, view angle, and others.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/media/ThumbnailUtils.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;thumbnail&lt;/a&gt;&lt;/code&gt;&amp;nbsp;utility for video and image thumbnails.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/media/CamcorderProfile.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;CamcorderProfile&lt;/a&gt;&lt;/code&gt;&amp;nbsp;and &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/media/CamcorderProfile.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;CamcorderProfile&lt;/a&gt;&lt;/code&gt;&amp;nbsp;classes enable apps to determine device hardware camera capablities.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New support in &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/media/ExifInterface.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;android.media.ExifInterface&lt;/a&gt;&lt;/code&gt;&amp;nbsp;for retrieving GPS and focal length.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Device policy manager&lt;/h3&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New device policy management APIs allow developers to write &quot;device administrator&quot; applications that can control security features of the device, such as the minimum password strength, data wipe, and so on. Users can select the administrators that are enabled on their devices. For more information, see the &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/app/admin/package-summary.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;android.app.admin&lt;/a&gt;&lt;/code&gt;&amp;nbsp;classees or the example application code in&lt;a href=&quot;http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;DeviceAdminSample.java&lt;/a&gt;.&lt;/p&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;UI Framework&lt;/h3&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New UI modes &quot;car mode&quot; and &quot;night mode&quot; and &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/app/UiModeManager.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;UiModeManager&lt;/a&gt;&lt;/code&gt;&amp;nbsp;let applications adjust their application UI for specific user modes.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/view/ScaleGestureDetector.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;ScaleGestureDetector&lt;/a&gt;&lt;/code&gt;&amp;nbsp;that lets Views detect and handle transformation gestures that involve more than one pointer (multitouch) using the supplied MotionEvents.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Improvements in the way that multitouch events are reported in &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/view/MotionEvent.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;MotionEvent&lt;/a&gt;&lt;/code&gt;&amp;nbsp;objects.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;The layout attribute &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;fill_parent&lt;/code&gt;&amp;nbsp;is renamed to &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;match_parent&lt;/code&gt;. This affects both XML and Java code (see &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;ViewGroup.LayoutParams&lt;/a&gt;&lt;/code&gt;). Note that the platform will continue to honor uses of&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;fill_parent&lt;/code&gt;&amp;nbsp;in legacy applications.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New layout attributes &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/R.attr.html#tabStripEnabled&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;tabStripEnabled&lt;/a&gt;&lt;/code&gt;, &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/R.attr.html#tabStripRight&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;tabStripRight&lt;/a&gt;&lt;/code&gt;, and &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/R.attr.html#tabStripLeft&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;tabStripLeft&lt;/a&gt;&lt;/code&gt;&amp;nbsp;let developers customize the bottom strip of TabWidgets.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Better support for managed dialogs in Activity.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Accounts and sync&lt;/h3&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New method &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/content/ContentResolver.html#addPeriodicSync(android.accounts.Account, java.lang.String, android.os.Bundle, long)&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;AddPeriodicSync()&lt;/a&gt;&lt;/code&gt;&amp;nbsp;lets you schedule a periodic sync with a specific account, authority, and extras at the given frequency.&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;New manifest elements and attributes&lt;/h3&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;For specifying the application's preferred install location (see &lt;a href=&quot;http://developer.android.com/sdk/android-2.2.html#install-loc&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;App Installation on External Storage Media&lt;/a&gt;, above):&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;android:installLocation&lt;/code&gt;&amp;nbsp;attribute of the &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&amp;lt;manifest&amp;gt;&lt;/code&gt;&amp;nbsp;element. Specifies the default install location defined by an application.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;For managing user data backup (see &lt;a href=&quot;http://developer.android.com/sdk/android-2.2.html#backup-manager&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;Backup manager&lt;/a&gt;, above, for more information):&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;android:backupAgent&lt;/code&gt;&amp;nbsp;attribute of the &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&amp;lt;application&amp;gt;&lt;/code&gt;&amp;nbsp;element. Specifies the component name of the BackupAgent subclass provided by the application to handle backup/restore operations, if any.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;android:restoreAnyVersion&lt;/code&gt;&amp;nbsp;attribute of the &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&amp;lt;application&amp;gt;&lt;/code&gt;&amp;nbsp;element. Boolean value that indicates whether the application is prepared to attempt a restore of any backed-up dataset, even if the backup is apparently from a newer version of the application than is currently installed on the device.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;For managing the platform's JIT compiler:&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;android:vmSafeMode&lt;/code&gt;&amp;nbsp;attribute of the &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&amp;lt;application&amp;gt;&lt;/code&gt;&amp;nbsp;element. Boolean value that specifies whether to disable JIT compiler optimizations when running the application.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Permissions&lt;/h3&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;android.permission.BIND_DEVICE_ADMIN&lt;/code&gt;&amp;nbsp;— Any device administration broadcast receiver must require this permission, to ensure that only the system can interact with it.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;android.permission.KILL_BACKGROUND_PROCESSES&lt;/code&gt;&amp;nbsp;— Allows an application to call &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/app/ActivityManager.html#killBackgroundProcesses(java.lang.String)&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;killBackgroundProcesses(String)&lt;/a&gt;&lt;/code&gt;.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;android.permission.BIND_WALLPAPER&lt;/code&gt;&amp;nbsp;— Any &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&lt;a href=&quot;http://developer.android.com/reference/android/service/wallpaper/WallpaperService.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;WallpaperService&lt;/a&gt;&lt;/code&gt;&amp;nbsp;must require this permission, to ensure that only the system can interact with it.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;android.permission.SET_TIME&lt;/code&gt;&amp;nbsp;— Allows an application to set the system time.&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;api-diff&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;API differences report&lt;/h3&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;For a detailed view of all API changes in Android 2.2 (API Level 8), see the &lt;a href=&quot;http://developer.android.com/sdk/api_diff/8/changes.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;API Differences Report&lt;/a&gt;.&lt;/p&gt;&lt;h2 id=&quot;apps&quot; style=&quot;margin-top: 2em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 2px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.45em; color: rgb(17, 17, 17); border-top-style: solid; border-top-color: rgb(204, 204, 204); &quot;&gt;Built-in Applications&lt;/h2&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;The system image included in the downloadable platform provides these built-in applications:&lt;/p&gt;&lt;table style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1em; border-collapse: collapse; empty-cells: show; border-style: initial; border-color: initial; &quot;&gt;&lt;tbody style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;tr style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;td style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 6px; padding-right: 12px; padding-bottom: 0px; padding-left: 12px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; text-align: left; vertical-align: top; background-color: inherit; border-style: initial; border-color: initial; &quot;&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Alarm Clock&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Browser&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Calculator&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Camera&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Contacts&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Custom Locale (developer app)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Dev Tools (developer app)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Email&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;td style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 6px; padding-right: 12px; padding-bottom: 0px; padding-left: 5em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; text-align: left; vertical-align: top; background-color: inherit; border-style: initial; border-color: initial; &quot;&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Gallery&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;IMEs for Japanese, Chinese, and Latin text input&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Messaging&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Music&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Phone&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Settings&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Spare Parts (developer app)&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2 id=&quot;locs&quot; style=&quot;margin-top: 0.75em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 2px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.45em; color: rgb(17, 17, 17); border-top-style: solid; border-top-color: rgb(204, 204, 204); &quot;&gt;Locales&lt;/h2&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;The system image included in the downloadable platform provides a variety of built-in locales. In some cases, region-specific strings are available for the locales. In other cases, a default version of the language is used. The languages that are available in the Android 2.2 system image are listed below (with &lt;em&gt;language&lt;/em&gt;_&lt;em&gt;country/region&lt;/em&gt;&amp;nbsp;locale descriptor).&lt;/p&gt;&lt;table style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 1em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1em; border-collapse: collapse; empty-cells: show; border-style: initial; border-color: initial; &quot;&gt;&lt;tbody style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;tr style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;td style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 6px; padding-right: 12px; padding-bottom: 0px; padding-left: 12px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; text-align: left; vertical-align: top; background-color: inherit; border-style: initial; border-color: initial; &quot;&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Chinese, PRC (zh_CN)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Chinese, Taiwan (zh_TW)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Czech (cs_CZ)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Dutch, Netherlands (nl_NL)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Dutch, Belgium (nl_BE)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;English, US (en_US)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;English, Britain (en_GB)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;English, Canada (en_CA)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;English, Australia (en_AU)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;English, New Zealand (en_NZ)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;English, Singapore(en_SG)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;French, France (fr_FR)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;French, Belgium (fr_BE)&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;td style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 6px; padding-right: 12px; padding-bottom: 0px; padding-left: 5em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; text-align: left; vertical-align: top; background-color: inherit; border-style: initial; border-color: initial; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;French, Canada (fr_CA)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;French, Switzerland (fr_CH)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;German, Germany (de_DE)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;German, Austria (de_AT)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;German, Switzerland (de_CH)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;German, Liechtenstein (de_LI)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Italian, Italy (it_IT)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Italian, Switzerland (it_CH)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Japanese (ja_JP)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Korean (ko_KR)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Polish (pl_PL)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Russian (ru_RU)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Spanish (es_ES)&lt;/li&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Localized UI strings match the locales that are accessible through Settings.&lt;/p&gt;&lt;h2 id=&quot;skins&quot; style=&quot;margin-top: 2em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 2px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.45em; color: rgb(17, 17, 17); border-top-style: solid; border-top-color: rgb(204, 204, 204); &quot;&gt;Emulator Skins&lt;/h2&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;The downloadable platform includes a set of emulator skins that you can use for modeling your application in different screen sizes and resolutions. The emulator skins are:&lt;/p&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;QVGA (240x320, low density, small screen)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;WQVGA (240x400, low density, normal screen)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;FWQVGA (240x432, low density, normal screen)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;HVGA (320x480, medium density, normal screen)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;WVGA800 (480x800, high density, normal screen)&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;WVGA854 (480x854 high density, normal screen)&lt;/li&gt;&lt;/ul&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;For more information about how to develop an application that displays and functions properly on all Android-powered devices, see &lt;a href=&quot;http://developer.android.com/guide/practices/screens_support.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;Supporting Multiple Screens&lt;/a&gt;.&lt;/p&gt;&lt;/span&gt;</content>
 </entry>
 <entry>
  <title type="html">Froyo! Android 2.2 Platform Highlights</title>
  <link rel="alternate" type="text/html" href="http://www.mirwing.com/entry/Froyo-Android-22-Platform-Highlights"/>
  <link rel="replies" type="application/atom+xml" href="http://www.mirwing.com/atom/discuss/196" thr:count="0"/>
  <category term="NEWS"/>
  <category term="android 2.2"/>
  <category term="Froyo"/>
  <author>
   <name>mirwing</name>
  </author>
  <id>http://www.mirwing.com/196</id>
  <updated>2010-05-27T10:24:57+09:00</updated>
  <published>2010-05-27T10:15:51+09:00</published>
  <content type="html">&lt;div&gt;[[&lt;a href=&quot;http://developer.android.com/sdk/android-2.2-highlights.html&quot; target=&quot;_blank&quot;&gt;Developers Android&lt;/a&gt;]]&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center; clear: both;&quot;&gt;&lt;object width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/yAZYSVr2Bhc?f=videos&amp;amp;app=youtube_gdata&quot;&gt;&lt;/param&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.youtube.com/v/yAZYSVr2Bhc?f=videos&amp;amp;app=youtube_gdata&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: arial, sans-serif; line-height: normal; font-size: 13px; color: rgb(51, 51, 51); &quot;&gt;&lt;h2 id=&quot;UserFeatures&quot; style=&quot;margin-top: 2em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 2px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.45em; color: rgb(17, 17, 17); border-top-style: solid; border-top-color: rgb(204, 204, 204); clear: right; &quot;&gt;New User Features&lt;/h2&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Home&lt;/h3&gt;&lt;table class=&quot;columns&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1em; border-collapse: collapse; empty-cells: show; max-width: 800px; &quot;&gt;&lt;tbody style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;tr style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;td style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; text-align: left; vertical-align: top; background-color: inherit; border-width: initial; border-color: initial; &quot;&gt;&lt;img src=&quot;http://developer.android.com/sdk/images/2.2/22home.png&quot; alt=&quot;&quot; height=&quot;230&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;/td&gt;&lt;td style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 2em; padding-bottom: 0px; padding-left: 2em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; text-align: left; vertical-align: top; background-color: inherit; border-width: initial; border-color: initial; &quot;&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New Home screen &lt;span class=&quot;green&quot; style=&quot;color: rgb(123, 176, 38); font-weight: bold; &quot;&gt;tips widget&lt;/span&gt;&amp;nbsp;assists new users on how to configure the home screen with shortcuts and widgets and how to make use of multiple home screens.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;The Phone, applications Launcher, and Browser now have &lt;span class=&quot;green&quot; style=&quot;color: rgb(123, 176, 38); font-weight: bold; &quot;&gt;dedicated shortcuts&lt;/span&gt;&amp;nbsp;on the Home screen, making it easy to access them from any of the 5 home screen panels.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Exchange support&lt;/h3&gt;&lt;table class=&quot;columns&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1em; border-collapse: collapse; empty-cells: show; max-width: 800px; &quot;&gt;&lt;tbody style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;tr style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;td style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; text-align: left; vertical-align: top; background-color: inherit; border-width: initial; border-color: initial; &quot;&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;span class=&quot;green&quot; style=&quot;color: rgb(123, 176, 38); font-weight: bold; &quot;&gt;Improved security&lt;/span&gt;&amp;nbsp;with the addition of numeric pin or alpha-numeric password options to unlock device. Exchange administrators can enforce password policy across devices.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;span class=&quot;green&quot; style=&quot;color: rgb(123, 176, 38); font-weight: bold; &quot;&gt;Remote wipe:&lt;/span&gt;&amp;nbsp;Exchange administrators can remotely reset the device to factory defaults to secure data in case device is lost or stolen.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;span class=&quot;green&quot; style=&quot;color: rgb(123, 176, 38); font-weight: bold; &quot;&gt;Exchange Calendars are now supported&lt;/span&gt;&amp;nbsp;in the Calendar application.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;span class=&quot;green&quot; style=&quot;color: rgb(123, 176, 38); font-weight: bold; &quot;&gt;Auto-discovery:&lt;/span&gt;&amp;nbsp;you just need to know your user-name and password to easily set up and sync an Exchange account (available for Exchange 2007 and higher).&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;span class=&quot;green&quot; style=&quot;color: rgb(123, 176, 38); font-weight: bold; &quot;&gt;Global Address Lists look-up&lt;/span&gt;&amp;nbsp;is now available in the Email application, enabling users to auto-complete recipient names from the directory.&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 2em; padding-bottom: 0px; padding-left: 2em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; text-align: left; vertical-align: top; background-color: inherit; border-width: initial; border-color: initial; &quot;&gt;&lt;img src=&quot;http://developer.android.com/sdk/images/2.2/22exchange.png&quot; alt=&quot;&quot; height=&quot;300&quot; style=&quot;margin-top: -2em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Camera and Gallery&lt;/h3&gt;&lt;table class=&quot;columns&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1em; border-collapse: collapse; empty-cells: show; max-width: 800px; &quot;&gt;&lt;tbody style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;tr style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;td style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; text-align: left; vertical-align: top; background-color: inherit; border-width: initial; border-color: initial; &quot;&gt;&lt;img src=&quot;http://developer.android.com/sdk/images/2.2/22gallery.png&quot; alt=&quot;&quot; height=&quot;220&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;/td&gt;&lt;td style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 2em; padding-bottom: 0px; padding-left: 2em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; text-align: left; vertical-align: top; background-color: inherit; border-width: initial; border-color: initial; &quot;&gt;&lt;p style=&quot;margin-top: -2em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Gallery allows you to &lt;span class=&quot;green&quot; style=&quot;color: rgb(123, 176, 38); font-weight: bold; &quot;&gt;peek into picture stacks&lt;/span&gt;&amp;nbsp;using a zoom gesture.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Camera &lt;span class=&quot;green&quot; style=&quot;color: rgb(123, 176, 38); font-weight: bold; &quot;&gt;onscreen buttons&lt;/span&gt;&amp;nbsp;provide easy access to a new UI for controling zoom, flash, white balance, geo-tagging, focus and exposure. Camcorder also provides an easy way to set video size/quality for MMS and YouTube.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;With the &lt;span class=&quot;green&quot; style=&quot;color: rgb(123, 176, 38); font-weight: bold; &quot;&gt;LED flash&lt;/span&gt;&amp;nbsp;now enabled for the Camcorder, videos can be shot at night or in low light settings.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Portable hotspot&lt;/h3&gt;&lt;table class=&quot;columns&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1em; border-collapse: collapse; empty-cells: show; max-width: 800px; &quot;&gt;&lt;tbody style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;tr style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;td style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; text-align: left; vertical-align: top; background-color: inherit; border-width: initial; border-color: initial; &quot;&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Certain devices like the Nexus One can be turned into &lt;span class=&quot;green&quot; style=&quot;color: rgb(123, 176, 38); font-weight: bold; &quot;&gt;a portable Wi-Fi hotspot&lt;/span&gt;&amp;nbsp;that can be shared with up to 8 devices.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;You can use your Android-powered phone as a 3G connection for a Windows or Linux laptop by connecting their phone to the computer with a USB cable. The connection is then shared between the two devices.&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 2em; padding-bottom: 0px; padding-left: 2em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; text-align: left; vertical-align: top; background-color: inherit; border-width: initial; border-color: initial; &quot;&gt;&lt;img src=&quot;http://developer.android.com/sdk/images/2.2/22hotspot.png&quot; alt=&quot;&quot; height=&quot;180&quot; style=&quot;margin-top: -2em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Multiple keyboard languages&lt;/h3&gt;&lt;table class=&quot;columns&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1em; border-collapse: collapse; empty-cells: show; max-width: 800px; &quot;&gt;&lt;tbody style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;tr style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;td style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; text-align: left; vertical-align: top; background-color: inherit; border-width: initial; border-color: initial; &quot;&gt;&lt;img src=&quot;http://developer.android.com/sdk/images/2.2/22keyboard.png&quot; alt=&quot;&quot; height=&quot;220&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;/td&gt;&lt;td style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 2em; padding-bottom: 0px; padding-left: 2em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; text-align: left; vertical-align: top; background-color: inherit; border-width: initial; border-color: initial; &quot;&gt;&lt;p style=&quot;margin-top: -2em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Multi-lingual users can add multiple languages to the keyboard and &lt;span class=&quot;green&quot; style=&quot;color: rgb(123, 176, 38); font-weight: bold; &quot;&gt;switch between multiple Latin-based input languages&lt;/span&gt;&amp;nbsp;by swiping across the space bar. This changes the keys as well as the auto-suggest dictionary.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Improved performance&lt;/h3&gt;&lt;table class=&quot;columns&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1em; border-collapse: collapse; empty-cells: show; max-width: 800px; &quot;&gt;&lt;tbody style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;tr style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;td style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; text-align: left; vertical-align: top; background-color: inherit; border-width: initial; border-color: initial; &quot;&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;span class=&quot;green&quot; style=&quot;color: rgb(123, 176, 38); font-weight: bold; &quot;&gt;Performance of the browser&lt;/span&gt;&amp;nbsp;has been enhanced using the V8 engine, which enables faster loading of JavaScript-heavy pages.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;span class=&quot;green&quot; style=&quot;color: rgb(123, 176, 38); font-weight: bold; &quot;&gt;Dalvik Performance Boost:&lt;/span&gt;&amp;nbsp;2x-5x performance speedup for CPU-heavy code over Android 2.1 with Dalvik JIT.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;The graph to the right shows the performance &lt;span class=&quot;green&quot; style=&quot;color: rgb(123, 176, 38); font-weight: bold; &quot;&gt;speedup&lt;/span&gt;&amp;nbsp;from Android 2.1 to Android 2.2 using various benchmark tests. For example, LinPack is now more than 5 times faster.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;span class=&quot;green&quot; style=&quot;color: rgb(123, 176, 38); font-weight: bold; &quot;&gt;Kernel Memory Management Boost:&lt;/span&gt;&amp;nbsp;Improved memory reclaim by up to 20x, which results in faster app switching and smoother performance on memory-constrained devices.&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 2em; padding-bottom: 0px; padding-left: 2em; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-style: initial; border-color: initial; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; text-align: left; vertical-align: top; background-color: inherit; border-width: initial; border-color: initial; &quot;&gt;&lt;img src=&quot;http://developer.android.com/sdk/images/2.2/jit-graph.png&quot; alt=&quot;&quot; height=&quot;200&quot; style=&quot;margin-top: -2em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: separate; color: rgb(17, 17, 17); -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-size: 19px; font-weight: bold; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;border-collapse: collapse; font-size: 13px; font-weight: normal; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: arial, sans-serif; line-height: normal; font-size: 13px; color: rgb(51, 51, 51); &quot;&gt;&lt;h2 id=&quot;PlatformTechnologies&quot; style=&quot;margin-top: 2em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 2px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.45em; color: rgb(17, 17, 17); border-top-style: solid; border-top-color: rgb(204, 204, 204); &quot;&gt;New Platform Technologies&lt;/h2&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Media framework&lt;/h3&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New media framework (Stagefright) that supports local file playback and HTTP progressive streaming&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Continued support for OpenCore in Android 2.2&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Bluetooth&lt;/h3&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Voice dialing over Bluetooth&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Ability to share contacts with other phones&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Support for Bluetooth enabled car and desk docks&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Improved compatibility matrix with car kits and headsets&lt;/li&gt;&lt;/ul&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;2.6.32 kernel upgrade&lt;/h3&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;HIGHMEM support for RAM &amp;gt;256MB&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;SDIO scheduling and BT improvements&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;DeveloperServices&quot; style=&quot;margin-top: 2em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 2px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.45em; color: rgb(17, 17, 17); border-top-style: solid; border-top-color: rgb(204, 204, 204); &quot;&gt;New Developer Services&lt;/h2&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Android Cloud to Device Messaging&lt;/h3&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Apps can utilize Android Cloud to Device Messaging to enable mobile alert, send to phone, and two-way push sync functionality.&lt;/p&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Android Application Error Reports&lt;/h3&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New bug reporting feature for Android Market apps enables developers to receive crash and freeze reports from their users. The reports will be available when they log into their publisher account.&lt;/p&gt;&lt;h2 id=&quot;DeveloperApis&quot; style=&quot;margin-top: 2em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0.5em; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 2px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.45em; color: rgb(17, 17, 17); border-top-style: solid; border-top-color: rgb(204, 204, 204); &quot;&gt;New Developer APIs&lt;/h2&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Apps on external storage&lt;/h3&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Applications can now request installation on the shared external storage (such as an SD card).&lt;/p&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Media framework&lt;/h3&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Provides new APIs for audio focus, routing audio to SCO, and auto-scan of files to media database. Also provides APIs to let applications detect completion of sound loading and auto-pause and auto-resume audio playback.&lt;/p&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Camera and Camcorder&lt;/h3&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New preview API doubles the frame rate from ~10FPS to ~20FPS. Camera now supports portrait orientation, zoom controls, access to exposure data, and a thumbnail utility. A new camcorder profile enables apps to determine device hardware capablities.&lt;/p&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Graphics&lt;/h3&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New APIs for OpenGL ES 2.0, working with YUV image format, and ETC1 for texture compression.&lt;/p&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Data backup&lt;/h3&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Apps can participate in data backup and restore, to ensure that users maintain their data after performing a factory reset or when switching devices.&lt;/p&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;Device policy manager&lt;/h3&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New device policy management APIs allow developers to write &quot;device administrator&quot; applications that can control security features on the device, such as the minimum password strength, data wipe, and so on. Users can select the administrators that are enabled on their devices.&lt;/p&gt;&lt;h3 style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;UI framework&lt;/h3&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &quot;car mode&quot; and &quot;night mode&quot; controls and configurations allow applications to adjust their UI for these situations. A scale gesture detector API provides improved definition of multi-touch events. Applications can now customize the bottom strip of a TabWidget.&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;</content>
 </entry>
 <entry>
  <title type="html">Android NDK r3 &amp;amp; SDK Tools r5, ADT 0.9.6 Release</title>
  <link rel="alternate" type="text/html" href="http://www.mirwing.com/entry/Android-NDK-r3"/>
  <link rel="replies" type="application/atom+xml" href="http://www.mirwing.com/atom/discuss/194" thr:count="0"/>
  <category term="APP&amp;amp;SDK"/>
  <category term="ADT"/>
  <category term="android"/>
  <category term="NDK"/>
  <category term="SDK"/>
  <category term="SDK Tools"/>
  <author>
   <name>mirwing</name>
  </author>
  <id>http://www.mirwing.com/194</id>
  <updated>2010-03-09T07:33:46+09:00</updated>
  <published>2010-03-09T07:13:31+09:00</published>
  <content type="html">&lt;meta charset=&quot;utf-8&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: arial, sans-serif; line-height: normal; font-size: 13px; color: rgb(51, 51, 51); &quot;&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px;&quot;&gt;[&lt;a href=&quot;http://developer.android.com&quot; target=&quot;_blank&quot;&gt;Android Developer&lt;/a&gt;]&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;Android NDK r3&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px;&quot;&gt;The third release of the Android Native Development Kit (NDK) is now available for download from the &lt;a href=&quot;http://developer.android.com/sdk/ndk/index.html&quot; target=&quot;_blank&quot;&gt;Android developer site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It can be used to target devices running Android 1.5 and higher. In addition to a few bug fixes and improvements, this release includes the following new features:&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;Toolchain improvement&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The toolchain binaries have been refreshed for this release with GCC 4.4.0, which should generate slightly more compact and efficient machine code than the previous one (4.2.1).&lt;br /&gt;&lt;br /&gt;Note that the GCC 4.4.0 C++ frontend is more pedantic, and may refuse to compile certain rare and invalid template declarations that were accepted by 4.2.1. To alleviate the problem, this NDK still provides the 4.2.1 binaries, which can optionally be used to build your machine code.&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;OpenGL ES 2.0 support&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Applications targeting Android 2.0 (API level 5) or higher can now directly access OpenGL ES 2.0 features. This brings the ability to control graphics rendering through vertex and fragment shader programs, using the GLSL shading language.&lt;br /&gt;&lt;br /&gt;A new trivial sample, named &quot;hello-gl2&quot;, demonstrates how to render a simple triangle using both shader types.&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: medium;&quot;&gt;Name simplification&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This NDK release is just called &quot;r3&quot;, for &quot;Revision 3&quot;, to indicate that it is not limited to a specific Android platform/API level. Some developers thought that the previous release's name (1.6_r1) was confusing and indicated that it could only be used to target Android 1.6, which was not true.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;SDK Tools r5&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;/font&gt;&lt;/p&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;dt style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 16px;&quot;&gt;Dependencies:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If you are developing in Eclipse with ADT, note that SDK Tools r5 is designed for use with ADT 0.9.6 and later. After installing SDK Tools r5, we highly recommend updating your ADT Plugin to 0.9.6.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;For Mac OS platforms, OS X 10.4.x (Tiger) is no longer officially supported.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;SDK and AVD Manager:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Fixes SSL download for the standalone version of the SDK Updater.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Fixes issue with 64-bit JVM on Windows.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Adds support for platform samples components.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Improves support for dependency between components.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;AVDs now sorted by API level.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The AVD creation dialog now enforces a minimum SD card size of 9MB.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Prevents deletion of running AVDs.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Settings are now automatically saved, no need to click &quot;Apply&quot;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Emulator:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Emulator now requires SD card to be 9MB or more.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Layoutopt:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Fixes layoutopt.bat to execute correctly on Windows.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/dt&gt;&lt;/font&gt;&lt;/span&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-large;&quot;&gt;ADT 0.9.6&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;/font&gt;&lt;/p&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;dt style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; &quot;&gt;&lt;font class=&quot;Apple-style-span&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 16px;&quot;&gt;Dependencies:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ADT 0.9.6 is designed for use with SDK Tools r5 and later. Before updating to ADT 0.9.6, we highly recommend that you use the Android SDK and AVD Manager to install SDK Tools r5 into your SDK.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;General Notes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Editing default.properties outside of Eclipse will now automatically update the project.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Loads the SDK content only when a project requires it. This will make Eclipse use less resources when the SDK contains many versions of Android.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Resolves potential deadlock between modal dialogs, when launching ADT the first time with the SDK Usage panel.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Fixes issues with the New Project Wizard when selecting samples.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;AVD/SDK Manager:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Adds support for platform samples components.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Improves support for dependency between components.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;AVDs now sorted by API level.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The AVD creation dialog now enforces a minimum SD card size of 9MB.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Prevents deletion of running AVDs.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;DDMS:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;DDMS plug-in now contains the Allocation Tracker view.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;New action in the Logcat view: &quot;Go to problem&quot; lets you go directly from an exception trace output to the code.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Editors:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Explode mode in the Visual Layout Editor adds a margin to all layout objects so that it's easier to see embedded or empty layouts.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Outline mode in the Visual Layout Editor draws layout outline to make it easier to see layout objects.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Several fixes in the configuration selector of the Visual Layout Editor.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Application launching:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Applications launched from ADT now behave as if they were clicked from the Home screen.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Fixes issue where add-on with no optional library would not show up as valid targets for application launches.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Resolves possible crash when launching applications.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/dt&gt;&lt;/font&gt;</content>
 </entry>
 <entry>
  <title type="html">안드로이드 입문서 3rd Edition 발행 - Kandroid</title>
  <link rel="alternate" type="text/html" href="http://www.mirwing.com/entry/&#xC548;&#xB4DC;&#xB85C;&#xC774;&#xB4DC;-&#xC785;&#xBB38;&#xC11C;-3rd-Edition-&#xBC1C;&#xD589;-Kandroid"/>
  <link rel="replies" type="application/atom+xml" href="http://www.mirwing.com/atom/discuss/193" thr:count="0"/>
  <category term="NEWS"/>
  <category term="Android Guide"/>
  <category term="Kandroid Guide"/>
  <author>
   <name>mirwing</name>
  </author>
  <id>http://www.mirwing.com/193</id>
  <updated>2010-04-15T11:51:40+09:00</updated>
  <published>2010-02-24T18:48:58+09:00</published>
  <content type="html">&lt;div&gt;[출처 : &lt;a href=&quot;http://www.kandroid.org/board/board.php?board=tnshopqna&amp;amp;command=body&amp;amp;no=138&quot; target=&quot;_blank&quot;&gt;Kandroid&lt;/a&gt;]&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Kandroid에서 Android Dev. Guide를 한글로 번역한 문서를&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;pdf파일을 통해 공개하였습니다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2nd Edition까지는 책으로 출판하였었지만 3rd 부터는 pdf로 공개한다고 하시네요.ㅋ&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Android Dev. Guide가 Android 개발에는 많은 부분을 차지 하는 만큼&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;한글로 번역이 된만큼 한국의 많은 개발자 분들이 조금더 손쉽게 접근할 수 있는&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Android가 되길 바랍니다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Android Dev. Guide는 Android를 처음 접하시는 분들에게&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Android 개념을 잡기위한 입문서라고 생각 되어 집니다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;PDF 문서는 위 링크를 통해 들어가시면 있습니다.&lt;/div&gt;</content>
 </entry>
 <entry>
  <title type="html">Android Development Environment Setting - SDK/NDK</title>
  <link rel="alternate" type="text/html" href="http://www.mirwing.com/entry/Android-Development-Environment-Setting-SDKNDK"/>
  <link rel="replies" type="application/atom+xml" href="http://www.mirwing.com/atom/discuss/192" thr:count="0"/>
  <category term="APP&amp;amp;SDK"/>
  <category term="android"/>
  <category term="android sdk"/>
  <category term="Install SDK"/>
  <category term="Installing Android SDK"/>
  <author>
   <name>mirwing</name>
  </author>
  <id>http://www.mirwing.com/192</id>
  <updated>2010-02-21T15:17:16+09:00</updated>
  <published>2010-02-21T15:16:20+09:00</published>
  <content type="html">&lt;meta charset=&quot;utf-8&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: arial, sans-serif; line-height: normal; font-size: small; &quot;&gt;&lt;p&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 16px;&quot;&gt;Android의 개발 환경을 설정하기 전에 Android에서 지원하는 개발 환경에 대해서 알아 보겠습니다.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 16px;&quot;&gt;&lt;br /&gt;Android를 개발할 수 있는 OS는 3가지가 있습니다.&lt;br /&gt;&lt;br /&gt;Linux, Mac, Windows&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 16px;&quot;&gt;&lt;br /&gt;이 중 Windows는 Android의 Source 레벨 까지 내려가기 위해서는 많은 작업을 해야 합니다.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 16px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 16px;&quot;&gt;&lt;br /&gt;Linux와 비슷하게 만들어 주는 cygwin이 존재하지만 저는 linux가 더 좋습니다.ㅋ&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 16px;&quot;&gt;&lt;br /&gt;Linux와 Mac은 Android Source까지 다운로드를 할 수 있지만 역시 Linux의 경우가 좀더 호환이 잘 됩니다.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 16px;&quot;&gt;&lt;br /&gt;Android는 SDK와 NDK를 이용해 개발 할 수 있는데 NDK는 2010. 2월 21일 현재 아직 1.6r1버전 뿐입니다.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 16px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 16px;&quot;&gt;&lt;br /&gt;총 3가지의 환경설정을 포스팅 하겠는데 목록을 살펴보겠습니다.&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 16px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 16px;&quot;&gt;&lt;b&gt;1. Android SDK 설치&lt;/b&gt;&lt;br /&gt;우선 가장 기본적은 SDK는 Java로 구성된 Android App을 개발할 수 있도록 해줍니다.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 16px;&quot;&gt;&lt;br /&gt;&lt;b&gt;2. Android NDK 설치&lt;/b&gt;&lt;br /&gt;JNI를 손 쉽게 해주는 NDK는 C/C++로 라이브러리를 만들어 Java에서 사용을 할 수 있도록 해주지만 1.6버전 뿐입니다.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 16px;&quot;&gt;&lt;br /&gt;&lt;b&gt;3. Android Source 다운로드 &amp;amp; 컴파일&lt;/b&gt;&lt;br /&gt;마지막으로 Android Source를 다운로드 받아 해당 소스를 컴파일하여 직접 system 이미지를 만들거나 Source에 포함되어 있는 컴파일러를 이용하여 라이브러리를 만들 수 있습니다. &lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 16px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 16px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 12px; line-height: 16px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: arial, sans-serif; line-height: normal; font-size: small; &quot;&gt;위 3가지에 대한 각각의 내용은 링크로 연결 시키겠습니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;/span&gt;</content>
 </entry>
 <entry>
  <title type="html">Service API changes starting with Android 2.0</title>
  <link rel="alternate" type="text/html" href="http://www.mirwing.com/entry/Service-API-changes-starting-with-Android-20"/>
  <link rel="replies" type="application/atom+xml" href="http://www.mirwing.com/atom/discuss/190" thr:count="0"/>
  <category term="APP&amp;amp;SDK"/>
  <category term="android 2.0"/>
  <category term="eclair"/>
  <category term="Service API"/>
  <author>
   <name>mirwing</name>
  </author>
  <id>http://www.mirwing.com/190</id>
  <updated>2010-02-17T23:05:49+09:00</updated>
  <published>2010-02-17T23:05:49+09:00</published>
  <content type="html">&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Helvetica, Arial, sans-serif; line-height: normal; color: rgb(102, 102, 102); &quot;&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 16px;&quot;&gt;[출처 : &lt;a href=&quot;http://android-developers.blogspot.com/2010/02/service-api-changes-starting-with.html&quot; target=&quot;_blank&quot;&gt;Android Developers Blog&lt;/a&gt;]&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 16px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;b&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 16px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;b&gt;Service API changes starting with Android 2.0&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 16px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 16px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;Watching developers use the Android platform the last year has shown a number of trouble areas in the Service API as well as growing issues in the ways services operate. As a result, Android 2.0 introduced a number of changes and improvements in this area for both developers and users.&lt;br /&gt;&lt;br /&gt;The three main changes to be aware of are:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;Service.setForeground() is now deprecated and in 2.0 does nothing.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;There were many edge cases in the service lifecycle that made it very easy to accidentally leave a service running; new APIs in 2.0 make this much easier to deal with.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;Android 2.0 also introduces a new UI for end users to monitor and manage the running services on their device.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 16px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Background on services&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Before going into the details of 2.0, it may be useful to go over a quick summary of services. The Service API in Android is one of the key mechanisms for applications to do work in the background. Due to the way Android is designed, once an application is no longer visible to the user it is generally considered expendable and a candidate to be killed by the system if it ever needs memory elsewhere. The main way applications get around this is by starting a Service component, which explicitly tells the system that they are doing some valuable work and would prefer that the system not kill their process if it doesn't truly need to.&lt;br /&gt;&lt;br /&gt;This is a very powerful facility but along with that power comes some responsibility: an actively running service is taking resources away from other things that can run (including inactive processes in the background that don't need to be initialized the next time the user visits them). It is thus important that developers take care when designing their services that they only run when truly needed and avoid any bugs where they may accidentally leave the service running for long durations.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Redesigning Service.setForeground()&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;During the final stabilization period of Android 1.6 we started to see more issues due to an increasing number of applications using the Service.setForeground() API when they shouldn't be. This is an API that we haven't advertised much because it should not be used by most applications and can be very hard on the system: it asks that the service's process be treated as in the foreground, essentially making it unkillable and thus more difficult for the system to recover from low memory situations.&lt;br /&gt;&lt;br /&gt;At that point in 1.6 it was too late to make any significant changes to the behavior here, but in 2.0 we have done so: Service.setForeground() now does nothing. The API was always intended to be something a service would do in conjunction with putting up an ongoing notification for the user; by saying you are in the foreground, the user should be &quot;aware&quot; that the service is running in some way and know how to stop it. Thus in place of the old API Andriod 2.0 introduces two new APIs that require a notification go along with being in the foreground:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style=&quot;padding:10px;background-color:#e1fdff;border:1px dashed #b2e8ed;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;arial, helvetica, sans-serif&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;'comic sans ms', sand&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;public final void startForeground(int id, Notification notification);&lt;/span&gt;&lt;/font&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;'comic sans ms', sand&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;public final void stopForeground(boolean removeNotification);&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;This also not coincidentally makes it much easier to manage the notification state along with the service, since the system can now guarantee that there is always a notification while the service is in the foreground, and that the notification goes away whenever the service does.&lt;br /&gt;&lt;br /&gt;Many developers will want to write a service that works on older platforms as well as 2.0 and later; this can be accomplished by using something like the following code to selectively call the new APIs when they are available.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style=&quot;padding:10px;background-color:#e1fdff;border:1px dashed #b2e8ed;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;'comic sans ms', sand&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;private static final Class[] mStartForegroundSignature = new Class[] {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int.class, Notification.class};&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private static final Class[] mStopForegroundSignature = new Class[] {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;boolean.class};&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private NotificationManager mNM;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private Method mStartForeground;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private Method mStopForeground;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private Object[] mStartForegroundArgs = new Object[2];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private Object[] mStopForegroundArgs = new Object[1];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@Override&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void onCreate() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mStartForeground = getClass().getMethod(&quot;startForeground&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mStartForegroundSignature);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mStopForeground = getClass().getMethod(&quot;stopForeground&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mStopForegroundSignature);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (NoSuchMethodException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Running on an older platform.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mStartForeground = mStopForeground = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/font&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * This is a wrapper around the new startForeground method, using the older&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * APIs if it is not available.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;'comic sans ms', sand&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;void startForegroundCompat(int id, Notification notification) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// If we have the new startForeground API, then use it.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (mStartForeground != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mStartForegroundArgs[0] = Integer.valueOf(id);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mStartForegroundArgs[1] = notification;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mStartForeground.invoke(this, mStartForegroundArgs);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (InvocationTargetException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Should not happen.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Log.w(&quot;MyApp&quot;, &quot;Unable to invoke startForeground&quot;, e);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (IllegalAccessException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Should not happen.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Log.w(&quot;MyApp&quot;, &quot;Unable to invoke startForeground&quot;, e);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Fall back on the old API.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setForeground(true);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mNM.notify(id, notification);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/font&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * This is a wrapper around the new stopForeground method, using the older&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; * APIs if it is not available.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;'comic sans ms', sand&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;void stopForegroundCompat(int id) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// If we have the new stopForeground API, then use it.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (mStopForeground != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mStopForegroundArgs[0] = Boolean.TRUE;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mStopForeground.invoke(this, mStopForegroundArgs);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (InvocationTargetException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Should not happen.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Log.w(&quot;MyApp&quot;, &quot;Unable to invoke stopForeground&quot;, e);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (IllegalAccessException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Should not happen.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Log.w(&quot;MyApp&quot;, &quot;Unable to invoke stopForeground&quot;, e);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Fall back on the old API. &amp;nbsp;Note to cancel BEFORE changing the&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// foreground state, since we could be killed at that point.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mNM.cancel(id);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;setForeground(false);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/font&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#000000&quot; face=&quot;Dotum, Verdana, AppleGothic, sans-serif&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 16px; &quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;b&gt;Service lifecycle changes&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Another situation we were increasingly seeing in 1.6 was that, even ignoring the services that inappropriately make themselves foreground, we had a growing number of devices with a large number of services running in the background all fighting each other over the available memory.&lt;br /&gt;&lt;br /&gt;Part of this problem is services that are running more than they should or there simply being too much stuff trying to be done on the device. However, we also found many issues in the interaction between services and the platform that made it easy for an application to leave a service running even when it is trying to do the right thing. Consider this typical scenario:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;An application calls startService().&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;That service gets onCreate(), onStart(), and then spawns a background thread to do some work.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;The system is tight on memory, so has to kill the currently running service.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;Later when memory is free, the service is restarted, and gets onCreate() called but not onStart() because there has not been another call to startService() with a new Intent command to send it.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;Now the service will sit there created, not realizing it used to be doing some work, and so not knowing it should stop itself at some point.&lt;br /&gt;&lt;br /&gt;To address this, in Android 2.0 Service.onStart() as been deprecated (though still exists and operates as it used to in previous versions of the platform). It is replaced with a new &lt;/span&gt;&lt;a href=&quot;http://developer.android.com/reference/android/app/Service.html#onStartCommand(android.content.Intent, int, int)&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;Service.onStartCommand()&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt; callback that allows the service to better control how the system should manage it. The key part here is a new result code returned by the function, telling the system what it should do with the service if its process is killed while it is running:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://developer.android.com/reference/android/app/Service.html#START_STICKY&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;START_STICKY&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt; is basically the same as the previous behavior, where the service is left &quot;started&quot; and will later be restarted by the system. The only difference from previous versions of the platform is that it if it gets restarted because its process is killed, onStartCommand() will be called on the next instance of the service with a null Intent instead of not being called at all. Services that use this mode should always check for this case and deal with it appropriately.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://developer.android.com/reference/android/app/Service.html#START_NOT_STICKY&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;START_NOT_STICKY&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt; says that, after returning from onStartCreated(), if the process is killed with no remaining start commands to deliver, then the service will be stopped instead of restarted. This makes a lot more sense for services that are intended to only run while executing commands sent to them. For example, a service may be started every 15 minutes from an alarm to poll some network state. If it gets killed while doing that work, it would be best to just let it be stopped and get started the next time the alarm fires.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://developer.android.com/reference/android/app/Service.html#START_REDELIVER_INTENT&quot; target=&quot;_blank&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;START_REDELIVER_INTENT&lt;/span&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt; is like START_NOT_STICKY, except if the service's process is killed before it calls stopSelf() for a given intent, that intent will be re-delivered to it until it completes (unless after some number of more tries it still can't complete, at which point the system gives up). This is useful for services that are receiving commands of work to do, and want to make sure they do eventually complete the work for each command sent.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;For compatibility with existing applications, the default return code for applications that are targeting an earlier version of the platform is a special START_STICKY_COMPATIBILITY code that provides the old behavior of not calling onStart() with a null intent. Once you start targeting API version 5 or later, the default mode is START_STICKY and you must be prepared to deal with onStart() or onStartCommand() being called with a null Intent.&lt;br /&gt;&lt;br /&gt;You can also easily write a Service that uses both the old and new APIs, depending on the platform. All you need to do is compile against the 2.0 SDK with this code:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style=&quot;padding:10px;background-color:#e1fdff;border:1px dashed #b2e8ed;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;'comic sans ms', sand&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;// This is the old onStart method that will be called on the pre-2.0&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// platform. &amp;nbsp;On 2.0 or later we override onStartCommand() so this&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// method will not be called.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@Override&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void onStart(Intent intent, int startId) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;handleStart(intent, startId);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@Override&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public int onStartCommand(Intent intent, int flags, int startId) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;handleStart(intent, startId);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return START_NOT_STICKY;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;void handleStart(Intent intent, int startId) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// do work&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/font&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;br /&gt;&lt;b&gt;New &quot;running services&quot; user interface&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Our final issue to address is the case where there are simply too many service running in the amount of memory available on a device. This may be due to bugs or design flaws in installed applications, or the user simply trying to do too much. Historically users have had no visibility into what is going on at this level in the system, but it has become important to expose this, at least for lower-end devices, as the use of services has had an increasing impact on the user experience.&lt;br /&gt;&lt;br /&gt;To help address this, Android 2.0 introduces a new &quot;Running Services&quot; activity available from the Application system settings. When brought up, it looks something like this:&lt;br /&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_8qPyDn7SSew/S3SX3i1Y0hI/AAAAAAAAALA/M-_nKtf_rho/s320/runningservices.png&quot; alt=&quot;Running Services&quot;&gt;&lt;br /&gt;&lt;br /&gt;The main content is a list of all running services that may be of interest to the user, organized by the processes they run in. In the example here, we see three services:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;GTalkService&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt; is part of the standard Google application suit; it is running in Google's &quot;gapps&quot; process, which currently consumes 6.8MB. It has been started for 3 hours 55 minutes, which on this device is the time from when it was first booted.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;ActivityService&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt; is part of the Phonebook app, and its process consumes 4MB. This also has been running since boot.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;SoftKeyboard&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt; is a third party input method. It has been running since I switched to it, about 4 minutes ago.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;The user can tap on any of these services to control it; for normal services that are running because they were explicitly started, this will present a dialog allowing the user to explicitly stop it:&lt;br /&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_8qPyDn7SSew/S3SXdcpPwqI/AAAAAAAAAK4/lLyzjcSOYZ8/s320/stopservice.png&quot; alt=&quot;Stop Service&quot;&gt;&lt;br /&gt;Some other services, like the input method, are running for other reasons. For these, tapping on the service will go to the corresponding UI to manage it (in this case the system's input settings).&lt;br /&gt;&lt;br /&gt;Finally, along the bottom of the screen are some obscure numbers. If you know how to interpret them, this gives you a lot of information on the memory status of your device:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Avail: 38MB+114MB in 25&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt; says that the device has 38MB of completely free (or likely used for unrequired caches) memory, and has another 114MB of available memory in 25 background processes it can kill at any time.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Other: 32MB in 3&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt; says that the device has 32MB of unavailable memory in 3 unkillable processes (that is, processes that are currently considered to be foreground and must be kept running)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;For most users, this new user interface should be a much more effective way to manage the background applications on their device than the existing &quot;task killer&quot; applications. In the vast majority of cases the reason for a slow running device is too many services trying to run. This prevents the system from being able to run any background processes (which speed up app switching), and ultimately can result in thrashing through the services when not even they can all be kept running. The Running Services UI is intended to provide very specific information about the services that are running, to help make a good decision about what should be stopped. It also does not use the API to force stop an application, which can unintentionally break applications in numerous ways.&lt;br /&gt;&lt;br /&gt;For developers, this is an important tool to ensure your services are well behaved. As you develop your app, be sure to keep an eye on Running Services to ensure that you are not accidentally leaving your services running when they shouldn't be. You should also now keep in mind that users may freely stop any of your services as they wish, without your control, and account for that.&lt;br /&gt;&lt;br /&gt;Android's Services are a very powerful tool, but one of the main and subtle ways that application developers can harm the overall experience a user has with their phone.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;/b&gt;&lt;/span&gt;</content>
 </entry>
 <entry>
  <title type="html">Live wallpapers</title>
  <link rel="alternate" type="text/html" href="http://www.mirwing.com/entry/Live-wallpapers"/>
  <link rel="replies" type="application/atom+xml" href="http://www.mirwing.com/atom/discuss/191" thr:count="0"/>
  <category term="APP&amp;amp;SDK"/>
  <category term="Android 2.1"/>
  <category term="Live wallpapers"/>
  <author>
   <name>mirwing</name>
  </author>
  <id>http://www.mirwing.com/191</id>
  <updated>2010-02-17T23:05:38+09:00</updated>
  <published>2010-02-17T23:05:38+09:00</published>
  <content type="html">[출처 : &lt;a href=&quot;http://android-developers.blogspot.com/2010/02/live-wallpapers.html&quot; target=&quot;_blank&quot;&gt;Android Developers Blog&lt;/a&gt;]&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;With the introduction of live wallpapers in &lt;a href=&quot;http://d.android.com/sdk/android-2.1.html&quot; target=&quot;_blank&quot;&gt;Android 2.1&lt;/a&gt;, users can now enjoy richer, animated, interactive backgrounds on their home screen. A live wallpaper is very similar to a normal Android application and has access to all the facilities of the platform: SGL (2D drawing), OpenGL (3D drawing), GPS, accelerometers, network access, etc. The live wallpapers included on Nexus One demonstrate the use of some of these APIs to create fun and interesting user experiences. For instance, the Grass wallpaper uses the phone's location to compute sunrise and sunset times in order to display the appropriate sky.&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_9l0GmPwgCzk/S2vKMD1cJYI/AAAAAAAAAFM/c_eUv0HcN_Y/s400/live_wallpapers_small.png&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Creating your own live wallpaper is easy, especially if you have had previous experience with &lt;font class=&quot;Apple-style-span&quot; color=&quot;#338000&quot;&gt;SurfaceView&lt;/font&gt; or &lt;font class=&quot;Apple-style-span&quot; color=&quot;#338000&quot;&gt;Canvas&lt;/font&gt;. To learn how to create a live wallpaper, you should check out the &lt;font class=&quot;Apple-style-span&quot; color=&quot;#338000&quot;&gt;CubeLiveWallpaper&lt;/font&gt; sample provided with the Android 2.1 SDK; you will find it in the directory &lt;font class=&quot;Apple-style-span&quot; color=&quot;#338000&quot;&gt;platforms/android-2.1/samples/CubeLiveWallpaper&lt;/font&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A live wallpaper is very similar to a regular Android service. The only difference is the addition of a new method, &lt;a href=&quot;http://d.android.com/reference/android/service/wallpaper/WallpaperService.html#onCreateEngine%28%29&quot; target=&quot;_blank&quot;&gt;onCreateEngine()&lt;/a&gt; whose goal is to create a &lt;a href=&quot;http://d.android.com/reference/android/service/wallpaper/WallpaperService.Engine.html&quot; target=&quot;_blank&quot;&gt;WallpaperService.Engine&lt;/a&gt;. The engine is responsible for handling the lifecycle and the drawing of a wallpaper. The system provides you with a surface on which you can draw, just like you would with a &lt;font class=&quot;Apple-style-span&quot; color=&quot;#338000&quot;&gt;SurfaceView&lt;/font&gt;. Drawing a wallpaper can be very expensive so you should optimize your code as much as possible to avoid using too much CPU, not only for battery life but also to avoid slowing down the rest of the system. That is also why the most important part of the lifecycle of a wallpaper is &lt;a href=&quot;http://d.android.com/reference/android/service/wallpaper/WallpaperService.Engine.html#onVisibilityChanged%28boolean%29&quot; target=&quot;_blank&quot;&gt;when it becomes invisible&lt;/a&gt;. When invisible, for instance because the user launched an application that covers the home screen, a wallpaper must stop all activity.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The engine can also implement several methods to interact with the user or the home application. For instance, if you want your wallpaper to scroll along when the user swipes from one home screen to another, you can use &lt;a href=&quot;http://d.android.com/reference/android/service/wallpaper/WallpaperService.Engine.html#onOffsetsChanged%28float,%20float,%20float,%20float,%20int,%20int%29&quot; target=&quot;_blank&quot;&gt;onOffsetsChanged()&lt;/a&gt;. To react to touch events, simply implement &lt;a href=&quot;http://d.android.com/reference/android/service/wallpaper/WallpaperService.Engine.html#onTouchEvent%28android.view.MotionEvent%29&quot; target=&quot;_blank&quot;&gt;onTouchEvent(MotionEvent)&lt;/a&gt;. Finally, applications can send arbitrary commands to the live wallpaper. Currently, only the standard home application sends commands to the &lt;a href=&quot;http://d.android.com/reference/android/service/wallpaper/WallpaperService.Engine.html#onCommand%28java.lang.String,%20int,%20int,%20int,%20android.os.Bundle,%20boolean%29&quot; target=&quot;_blank&quot;&gt;onCommand()&lt;/a&gt; method of the live wallpaper:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#338000&quot;&gt;android.wallpaper.tap&lt;/font&gt;: When the user taps an empty space on the workspace. This command is interpreted by the Nexus and Water live wallpapers to make the wallpaper react to user interaction. For instance, if you tap an empty space on the Water live wallpaper, new ripples appear under your finger.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#338000&quot;&gt;android.home.drop&lt;/font&gt;: When the user drops an icon or a widget on the workspace. This command is also interpreted by the Nexus and Water live wallpapers.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Please note that live wallpaper is an Android 2.1 feature. To ensure that only users with devices that support this feature can download your live wallpaper, remember to add the following to your manifest before releasing to Android Market:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#338000&quot;&gt;&amp;lt;uses-sdk android:minSdkVersion=&quot;7&quot; /&amp;gt;&lt;/font&gt;, which lets Android Market and the platform know that your application is using the Android 2.1 version.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#338000&quot;&gt;&amp;lt;uses-feature android:name=&quot;android.software.live_wallpaper&quot; /&amp;gt;&lt;/font&gt;, which lets the Android Market and the platform know that your application is a live wallpaper.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Many great live wallpapers are already available on Android Market and we can't wait to see more!&lt;/div&gt;&lt;/div&gt;</content>
 </entry>
 <entry>
  <title type="html">Android SDK 2.1 Release 1</title>
  <link rel="alternate" type="text/html" href="http://www.mirwing.com/entry/Android-SDK-21-Release-1"/>
  <link rel="replies" type="application/atom+xml" href="http://www.mirwing.com/atom/discuss/189" thr:count="0"/>
  <category term="APP&amp;amp;SDK"/>
  <category term="Android 2.1"/>
  <category term="Android 2.1 SDK"/>
  <category term="android sdk"/>
  <category term="Eclair SDK"/>
  <author>
   <name>mirwing</name>
  </author>
  <id>http://www.mirwing.com/189</id>
  <updated>2010-01-21T17:10:02+09:00</updated>
  <published>2010-01-21T17:10:02+09:00</published>
  <content type="html">[출처 : &lt;a href=&quot;http://developer.android.com/sdk/android-2.1.html&quot; target=&quot;_blank&quot;&gt;Android Developer&lt;/a&gt;]&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Android 2.1, Release 1 SDK가 1월 12일(?) 쯔음...발표 되었습니다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;요즘 업무에 치여 살다 보니 약간 늦게 정리를 합니다....&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://developer.android.com/sdk/android-2.1.html&quot;&gt;&lt;a href=&quot;http://developer.android.com/sdk/android-2.1.html&quot; target=&quot;_blank&quot;&gt;http://developer.android.com/sdk/android-2.1.html&lt;/a&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;API Level : 7&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: arial, sans-serif; line-height: 16px; font-size: 13px; color: rgb(51, 51, 51); &quot;&gt;This release includes new API changes and bug fixes. For information on changes, see the &lt;a href=&quot;http://developer.android.com/sdk/android-2.1.html#api&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;Framework API&lt;/a&gt;&amp;nbsp;section.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: arial, sans-serif; line-height: 16px; font-size: 13px; color: rgb(51, 51, 51); &quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: arial, sans-serif; line-height: 16px; font-size: 13px; color: rgb(51, 51, 51); &quot;&gt;Android 2.1 does not add significant user features, see the &lt;a href=&quot;http://developer.android.com/sdk/android-2.0-highlights.html&quot; style=&quot;color: rgb(0, 102, 153); &quot;&gt;&lt;a href=&quot;http://developer.android.com/sdk/android-2.0-highlights.html&quot; target=&quot;_blank&quot;&gt;Android 2.0 Platform Highlights&lt;/a&gt;&lt;/a&gt;&amp;nbsp;document for the latest user features.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: arial, sans-serif; line-height: 16px; font-size: 13px; color: rgb(51, 51, 51); &quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot; face=&quot;arial, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px; line-height: 16px;&quot;&gt;Android 2.1 SDK에서는 Platform features는 2.0과 동일하고 Framework API에 새로운 API와 bug가 수정되어 졌네요.&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot; face=&quot;arial, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px; line-height: 16px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot; face=&quot;arial, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px; line-height: 16px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: arial, sans-serif; line-height: normal; font-size: 19px; color: rgb(17, 17, 17); font-weight: bold; &quot;&gt;Framework API&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; color=&quot;#333333&quot; face=&quot;arial, sans-serif&quot; size=&quot;3&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 13px; line-height: 16px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: normal; &quot;&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;The sections below provide information about changes made to the application framework API provided by the Android 2.1 platform.&lt;/p&gt;&lt;h3 id=&quot;api-level&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;API level&lt;/h3&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;The Android 2.1 platform delivers an updated version of the framework API. The Android 2.1 API is assigned an integer identifier — &lt;strong&gt;7&lt;/strong&gt;&amp;nbsp;— that is stored in the system itself. This identifier, called the &quot;API Level&quot;, allows the system to correctly determine whether an application is compatible with the system, prior to installing the application.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;To use APIs introduced in Android 2.1 in your application, you need to set the proper value, &quot;7&quot;, in the attributes of the &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;&amp;lt;uses-sdk&amp;gt;&lt;/code&gt;&amp;nbsp;element in your application's manifest.&lt;/p&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;For more information about how to use API Level, see the &lt;a href=&quot;http://developer.android.com/guide/appendix/api-levels.html&quot; style=&quot;color: rgb(0, 102, 153); &quot;&gt;&lt;a href=&quot;http://developer.android.com/guide/appendix/api-levels.html&quot; target=&quot;_blank&quot;&gt;API Levels&lt;/a&gt;&lt;/a&gt;&amp;nbsp;document.&lt;/p&gt;&lt;h3 id=&quot;api-changes&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;API changes summary&lt;/h3&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;The following is a summary of some notable changes to the framework APIs.&lt;/p&gt;&lt;h4 style=&quot;margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.1em; color: rgb(34, 34, 34); &quot;&gt;Live Wallpapers&lt;/h4&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;The following additions provide APIs for you to develop animated wallpapers:&lt;/p&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;android.service.wallpaper&lt;/code&gt;&amp;nbsp;package.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;WallpaperInfo&lt;/code&gt;&amp;nbsp;class.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;Updated &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;WallpaperManager&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;h4 style=&quot;margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.1em; color: rgb(34, 34, 34); &quot;&gt;Telephony&lt;/h4&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;SignalStrength&lt;/code&gt;&amp;nbsp;class provides information about the device's current network signal. This can be acquired from the new &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;onSignalStrengthsChanged(SignalStrength)&lt;/code&gt;&amp;nbsp;callback.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;onDataConnectionStateChanged(int, int)&lt;/code&gt;&amp;nbsp;callback.&lt;/li&gt;&lt;/ul&gt;&lt;h4 style=&quot;margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.1em; color: rgb(34, 34, 34); &quot;&gt;Views&lt;/h4&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;View&lt;/code&gt;&amp;nbsp;methods &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;isOpaque()&lt;/code&gt;&amp;nbsp;and &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;onDrawScrollBars(Canvas)&lt;/code&gt;.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;RemoteViews&lt;/code&gt;&amp;nbsp;methods &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;addView(int, RemoteViews)&lt;/code&gt;&amp;nbsp;and &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;removeAllViews(int)&lt;/code&gt;.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;ViewGroup&lt;/code&gt;&amp;nbsp;methods &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;isChildrenDrawingOrderEnabled()&lt;/code&gt;&amp;nbsp;and &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;setChildrenDrawingOrderEnabled(boolean)&lt;/code&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;h4 style=&quot;margin-top: 1em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.1em; color: rgb(34, 34, 34); &quot;&gt;WebKit&lt;/h4&gt;&lt;ul style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 2em; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;WebStorage&lt;/code&gt;&amp;nbsp;methods to manipulate web storage databases.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;GeolocationPermissions&lt;/code&gt;&amp;nbsp;methods to get Geolocation permissions from, and set them on the WebView.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;WebSettings&lt;/code&gt;&amp;nbsp;methods to manage settings for app cache, web storage, and zooming based on screen density.&lt;/li&gt;&lt;li style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0.5em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;New &lt;code style=&quot;color: rgb(0, 112, 0); font-family: monospace; line-height: 1em; &quot;&gt;WebChromeClient&lt;/code&gt;&amp;nbsp;methods for handling video, browsing history, custom Views, app cache limits, and more.&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;api-diff&quot; style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0.75em; padding-right: 0px; padding-bottom: 0.65em; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-size: 1.2em; color: rgb(34, 34, 34); &quot;&gt;API differences report&lt;/h3&gt;&lt;p style=&quot;margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; line-height: 1.3em; &quot;&gt;For a detailed view of all API changes in Android 2.1 (API Level 7), as compared to API Level 6, see the &lt;a href=&quot;http://developer.android.com/sdk/api_diff/7/changes.html&quot; style=&quot;color: rgb(0, 102, 153); &quot; target=&quot;_blank&quot;&gt;API Differences Report&lt;/a&gt;.&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;</content>
 </entry>
 <entry>
  <title type="html">Nexus One Phone 공식 발표</title>
  <link rel="alternate" type="text/html" href="http://www.mirwing.com/entry/Nexus-One-Phone-&#xACF5;&#xC2DD;-&#xBC1C;&#xD45C;"/>
  <link rel="replies" type="application/atom+xml" href="http://www.mirwing.com/atom/discuss/188" thr:count="0"/>
  <category term="NEWS"/>
  <category term="Android Phone"/>
  <category term="nexus"/>
  <category term="Nexus One"/>
  <author>
   <name>mirwing</name>
  </author>
  <id>http://www.mirwing.com/188</id>
  <updated>2010-01-06T12:10:07+09:00</updated>
  <published>2010-01-06T12:10:07+09:00</published>
  <content type="html">오늘 새벽 Google에서 드디어 Nexus One을 공식 발표를 하였습니다.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;공식 사이트 : &lt;a href=&quot;http://www.google.com/phone/&quot;&gt;&lt;a href=&quot;http://www.google.com/phone/&quot; target=&quot;_blank&quot;&gt;http://www.google.com/phone/&lt;/a&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nexus One의 가격은 T-Mobile(2년 약정) : $179, 언락 : $529 입니다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;48개 국가에 판매가 될 예정이라고 되어있으며 한국은 역시 미정입니다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;공식 발표의 내용 중에서 DEMO 중에서는 거의 완벽에 가까운 음성인식을 확인 할 수 있습니다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Gmail을 음성으로 쓰거나, 구글어스의 음성검색 모드나 텍스트 필드의 입력을 음성....&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Q&amp;amp;A를 확인해 보면 구글은 판매만 하게 되고 디자인이나 생산, 유통은 HTC가 하였다고 합니다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://fs.textcube.com/blog/1/16605/attach/XeiZ3aHrVM.png&quot; style=&quot;width:580px;height:330px;&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;이 홈페이지를 통해 상세한 스펙이나 3D 체험, 그리고 주문을 할 수 있습니다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;출시는 미국을 시작으로 영국, 싱가폴, 홍콩에서 먼저 출시가 되고 나머지 국가들도 차차 출시가 될 예정입니다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;nexus one 주요 스펙&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://fs.textcube.com/blog/1/16605/attach/XSH9XsDMX4.png&quot; style=&quot;width:580px;height:508px;&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;예상대로 Eclair 2.1이 올라가 있습니다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Qualcomm QSD 8250 1GHz Processor&lt;/div&gt;&lt;div&gt;800 x 480 AMOLED touchscreen&lt;/div&gt;&lt;div&gt;5 megapixels Camera&lt;/div&gt;&lt;div&gt;Wi-Fi, AGPS&lt;/div&gt;&lt;div&gt;조도와 근접 센서&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://fs.textcube.com/blog/1/16605/attach/XLnHaVDnf7.png&quot; style=&quot;width:580px;height:370px;&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://fs.textcube.com/blog/1/16605/attach/XfVFi6Snzf.png&quot; style=&quot;width:580px;height:106px;&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;http://fs.textcube.com/blog/1/16605/attach/XHB79djmQv.png&quot; style=&quot;width:580px;height:70px;&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;오 Korean이 보이는 군요....하지만 입력은 불가능 하네요....ㅋ&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;구글 폰이라 불리던 nexus one, 하지만 구글이 만들진 않았다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;구글이 한 일은 HTC가 내놓은 최고의 하드웨어 단말에 맞도록 최적화를 해준거네요...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;그리고 Android 2.1 탑재&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2.0과 2.1이 많이 차이나기를 바라는 사람들이 많았던 거 같습니다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2.1을 사용해본 체험기에서 유독 눈에 띄는게 속도만 빨라진 드로이드라는 소리였습니다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;드로이드가 출시 되었을 때 모토로라가 발 빠르게 2.0을 출시하였지 HTC처럼 자신만의 UI를 올렸다고 생각되어 지진 않았기에&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;이번 nexus one이 출시 되어 질 때도 2.1을 올린 Android Phone이 출시가 되는거라 생각 했었는데&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;사람들의 기대는 2.1이 UI적으로 많이 개선 되기를 바랬던거 였을까요?....&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;이번 nexus one의 공식 발표에서 가장 커다란 변화는 역시 판매 방식의 변화일 것 같습니다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;구글이 판매를 담당하지만 자신들의 비지니스 모델은 광고라며 거의 판매 수익을 챙기지 않는다고 하네요.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;이번 nexus one이 다른 Android Phone과 다른점이 spec, version 뿐이라서 실망했을 수도 있습니다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;하지만 Google, HTC, 모토로라가 보여주는 Android Phone은 많이 기대가 됩니다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;그리고 LG나 삼성에서도 저정도의 스펙, 최적화된 Android 그리고 국내출시!!! 만 되기를 기대합니다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;아직 자신들 만의 UI로 꾸미지 못해도 좋아요....&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;우선은 국내에서 첫 발을 내딛기만 해도 의미있다고 생각하니까요...&lt;/div&gt;</content>
 </entry>
</feed>
