Merge "update notepad menu icons with new styles for GB (20% smaller)" into gingerbread
diff --git a/apps/Fallback/res/values-ar/strings.xml b/apps/Fallback/res/values-ar/strings.xml
new file mode 100644
index 0000000..a695d8c
--- /dev/null
+++ b/apps/Fallback/res/values-ar/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="appTitle" msgid="161410001913116606">"Fallback"</string>
+    <string name="title" msgid="8156274565006125136">"إجراء غير متاح"</string>
+    <string name="error" msgid="6539615832923362301">"هذا الإجراء غير متاح حاليًا."</string>
+</resources>
diff --git a/apps/Fallback/res/values-bg/strings.xml b/apps/Fallback/res/values-bg/strings.xml
new file mode 100644
index 0000000..2aaded2
--- /dev/null
+++ b/apps/Fallback/res/values-bg/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="appTitle" msgid="161410001913116606">"Fallback"</string>
+    <string name="title" msgid="8156274565006125136">"Неподдържано действие"</string>
+    <string name="error" msgid="6539615832923362301">"Понастоящем това действие не се поддържа."</string>
+</resources>
diff --git a/apps/Fallback/res/values-ca/strings.xml b/apps/Fallback/res/values-ca/strings.xml
new file mode 100644
index 0000000..c17ae77
--- /dev/null
+++ b/apps/Fallback/res/values-ca/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="appTitle" msgid="161410001913116606">"Fallback"</string>
+    <string name="title" msgid="8156274565006125136">"Acció no compatible"</string>
+    <string name="error" msgid="6539615832923362301">"Aquesta acció no és compatible actualment."</string>
+</resources>
diff --git a/apps/Fallback/res/values-en-rGB/strings.xml b/apps/Fallback/res/values-en-rGB/strings.xml
new file mode 100644
index 0000000..a7c82cb
--- /dev/null
+++ b/apps/Fallback/res/values-en-rGB/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="appTitle" msgid="161410001913116606">"Fallback"</string>
+    <string name="title" msgid="8156274565006125136">"Unsupported action"</string>
+    <string name="error" msgid="6539615832923362301">"That action is not currently supported."</string>
+</resources>
diff --git a/apps/Fallback/res/values-fa/strings.xml b/apps/Fallback/res/values-fa/strings.xml
new file mode 100644
index 0000000..6f6c60f
--- /dev/null
+++ b/apps/Fallback/res/values-fa/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="appTitle" msgid="161410001913116606">"بازگشت"</string>
+    <string name="title" msgid="8156274565006125136">"عملکرد پشتیبانی نشده"</string>
+    <string name="error" msgid="6539615832923362301">"آن عملکرد در حال حاضر پشتیبانی نمی شود."</string>
+</resources>
diff --git a/apps/Fallback/res/values-fi/strings.xml b/apps/Fallback/res/values-fi/strings.xml
new file mode 100644
index 0000000..124eb73
--- /dev/null
+++ b/apps/Fallback/res/values-fi/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="appTitle" msgid="161410001913116606">"Fallback"</string>
+    <string name="title" msgid="8156274565006125136">"Toiminto ei ole tuettu"</string>
+    <string name="error" msgid="6539615832923362301">"Toiminto ei ole tuettu tällä hetkellä."</string>
+</resources>
diff --git a/apps/Fallback/res/values-hr/strings.xml b/apps/Fallback/res/values-hr/strings.xml
new file mode 100644
index 0000000..6b8fdc3
--- /dev/null
+++ b/apps/Fallback/res/values-hr/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="appTitle" msgid="161410001913116606">"Pričuvna aplikacija"</string>
+    <string name="title" msgid="8156274565006125136">"Nepodržana radnja"</string>
+    <string name="error" msgid="6539615832923362301">"Ova radnja trenutno nije podržana."</string>
+</resources>
diff --git a/apps/Fallback/res/values-hu/strings.xml b/apps/Fallback/res/values-hu/strings.xml
new file mode 100644
index 0000000..4c9ede6
--- /dev/null
+++ b/apps/Fallback/res/values-hu/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="appTitle" msgid="161410001913116606">"Tartalék"</string>
+    <string name="title" msgid="8156274565006125136">"Nem támogatott művelet"</string>
+    <string name="error" msgid="6539615832923362301">"Ez a művelet jelenleg nem támogatott."</string>
+</resources>
diff --git a/apps/Fallback/res/values-in/strings.xml b/apps/Fallback/res/values-in/strings.xml
new file mode 100644
index 0000000..0bfaf16
--- /dev/null
+++ b/apps/Fallback/res/values-in/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="appTitle" msgid="161410001913116606">"Fallback"</string>
+    <string name="title" msgid="8156274565006125136">"Tindakan yang tidak didukung"</string>
+    <string name="error" msgid="6539615832923362301">"Saat ini tindakan tersebut tidak didukung."</string>
+</resources>
diff --git a/apps/Fallback/res/values-iw/strings.xml b/apps/Fallback/res/values-iw/strings.xml
new file mode 100644
index 0000000..671919b
--- /dev/null
+++ b/apps/Fallback/res/values-iw/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="appTitle" msgid="161410001913116606">"החזרה"</string>
+    <string name="title" msgid="8156274565006125136">"פעולה לא נתמכת"</string>
+    <string name="error" msgid="6539615832923362301">"הפעולה אינה נתמכת בשלב זה."</string>
+</resources>
diff --git a/apps/Fallback/res/values-lt/strings.xml b/apps/Fallback/res/values-lt/strings.xml
new file mode 100644
index 0000000..c715f42
--- /dev/null
+++ b/apps/Fallback/res/values-lt/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="appTitle" msgid="161410001913116606">"Fallback"</string>
+    <string name="title" msgid="8156274565006125136">"Nepalaikomas veiksmas"</string>
+    <string name="error" msgid="6539615832923362301">"Šis veiksmas šiuo metu nepalaikomas."</string>
+</resources>
diff --git a/apps/Fallback/res/values-lv/strings.xml b/apps/Fallback/res/values-lv/strings.xml
new file mode 100644
index 0000000..63b3384
--- /dev/null
+++ b/apps/Fallback/res/values-lv/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="appTitle" msgid="161410001913116606">"Atkāpšanās"</string>
+    <string name="title" msgid="8156274565006125136">"Darbība netiek atbalstīta"</string>
+    <string name="error" msgid="6539615832923362301">"Šī darbība pašlaik netiek atbalstīta."</string>
+</resources>
diff --git a/apps/Fallback/res/values-rm/strings.xml b/apps/Fallback/res/values-rm/strings.xml
new file mode 100644
index 0000000..c699f25
--- /dev/null
+++ b/apps/Fallback/res/values-rm/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="appTitle" msgid="161410001913116606">"Fallback"</string>
+    <string name="title" msgid="8156274565006125136">"Acziun betg sustegnida"</string>
+    <string name="error" msgid="6539615832923362301">"Questa acziun na vegn actualmain betg sustegnida."</string>
+</resources>
diff --git a/apps/Fallback/res/values-ro/strings.xml b/apps/Fallback/res/values-ro/strings.xml
new file mode 100644
index 0000000..222de48
--- /dev/null
+++ b/apps/Fallback/res/values-ro/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="appTitle" msgid="161410001913116606">"Alternativă"</string>
+    <string name="title" msgid="8156274565006125136">"Acţiune neacceptată"</string>
+    <string name="error" msgid="6539615832923362301">"Această acţiune nu este acceptată în prezent."</string>
+</resources>
diff --git a/apps/Fallback/res/values-sk/strings.xml b/apps/Fallback/res/values-sk/strings.xml
new file mode 100644
index 0000000..97ad356
--- /dev/null
+++ b/apps/Fallback/res/values-sk/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="appTitle" msgid="161410001913116606">"Záloha"</string>
+    <string name="title" msgid="8156274565006125136">"Akcia nie je podporovaná"</string>
+    <string name="error" msgid="6539615832923362301">"Táto akcia momentálne nie je podporovaná."</string>
+</resources>
diff --git a/apps/Fallback/res/values-sl/strings.xml b/apps/Fallback/res/values-sl/strings.xml
new file mode 100644
index 0000000..322f466
--- /dev/null
+++ b/apps/Fallback/res/values-sl/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="appTitle" msgid="161410001913116606">"Nadomestni program"</string>
+    <string name="title" msgid="8156274565006125136">"Dejanje ni podprto."</string>
+    <string name="error" msgid="6539615832923362301">"To dejanje trenutno še ni podprto."</string>
+</resources>
diff --git a/apps/Fallback/res/values-sr/strings.xml b/apps/Fallback/res/values-sr/strings.xml
new file mode 100644
index 0000000..c58ba4f
--- /dev/null
+++ b/apps/Fallback/res/values-sr/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="appTitle" msgid="161410001913116606">"Заменска апликација"</string>
+    <string name="title" msgid="8156274565006125136">"Неподржана радња"</string>
+    <string name="error" msgid="6539615832923362301">"Та радња тренутно није подржана."</string>
+</resources>
diff --git a/apps/Fallback/res/values-th/strings.xml b/apps/Fallback/res/values-th/strings.xml
new file mode 100644
index 0000000..3c9cd8a
--- /dev/null
+++ b/apps/Fallback/res/values-th/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="appTitle" msgid="161410001913116606">"Fallback"</string>
+    <string name="title" msgid="8156274565006125136">"การทำงานไม่ได้รับการสนับสนุน"</string>
+    <string name="error" msgid="6539615832923362301">"การทำงานนี้ยังไม่ได้รับการสนับสนุนในปัจจุบัน"</string>
+</resources>
diff --git a/apps/Fallback/res/values-tl/strings.xml b/apps/Fallback/res/values-tl/strings.xml
new file mode 100644
index 0000000..c2f8b99
--- /dev/null
+++ b/apps/Fallback/res/values-tl/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="appTitle" msgid="161410001913116606">"Fallback"</string>
+    <string name="title" msgid="8156274565006125136">"Hindi suportadong pagkilos"</string>
+    <string name="error" msgid="6539615832923362301">"Hindi kasalukuyang suportado ang pagkilos na iyon."</string>
+</resources>
diff --git a/apps/Fallback/res/values-uk/strings.xml b/apps/Fallback/res/values-uk/strings.xml
new file mode 100644
index 0000000..62a722c
--- /dev/null
+++ b/apps/Fallback/res/values-uk/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="appTitle" msgid="161410001913116606">"Авар.режим"</string>
+    <string name="title" msgid="8156274565006125136">"Непідтримувана дія"</string>
+    <string name="error" msgid="6539615832923362301">"Дія наразі не підтримується."</string>
+</resources>
diff --git a/apps/Fallback/res/values-vi/strings.xml b/apps/Fallback/res/values-vi/strings.xml
new file mode 100644
index 0000000..56c21ae
--- /dev/null
+++ b/apps/Fallback/res/values-vi/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2007 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+  
+          http://www.apache.org/licenses/LICENSE-2.0
+  
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <string name="appTitle" msgid="161410001913116606">"Dự phòng"</string>
+    <string name="title" msgid="8156274565006125136">"Tác vụ không được hỗ trợ"</string>
+    <string name="error" msgid="6539615832923362301">"Tác vụ đó hiện không được hỗ trợ."</string>
+</resources>
diff --git a/build/sdk.atree b/build/sdk.atree
index 35d34dd..65d4ea5 100644
--- a/build/sdk.atree
+++ b/build/sdk.atree
@@ -72,12 +72,12 @@
 prebuilt/android-arm/kernel/kernel-qemu platforms/${PLATFORM_NAME}/images/kernel-qemu
 
 # emulator skins from sdk.git
-sdk/emulator/skins/QVGA      platforms/${PLATFORM_NAME}/skins/QVGA
-sdk/emulator/skins/WQVGA432  platforms/${PLATFORM_NAME}/skins/WQVGA432
-sdk/emulator/skins/WQVGA400  platforms/${PLATFORM_NAME}/skins/WQVGA400
-sdk/emulator/skins/HVGA      platforms/${PLATFORM_NAME}/skins/HVGA
-sdk/emulator/skins/WVGA800   platforms/${PLATFORM_NAME}/skins/WVGA800
-sdk/emulator/skins/WVGA854   platforms/${PLATFORM_NAME}/skins/WVGA854
+development/tools/emulator/skins/QVGA      platforms/${PLATFORM_NAME}/skins/QVGA
+development/tools/emulator/skins/WQVGA432  platforms/${PLATFORM_NAME}/skins/WQVGA432
+development/tools/emulator/skins/WQVGA400  platforms/${PLATFORM_NAME}/skins/WQVGA400
+development/tools/emulator/skins/HVGA      platforms/${PLATFORM_NAME}/skins/HVGA
+development/tools/emulator/skins/WVGA800   platforms/${PLATFORM_NAME}/skins/WVGA800
+development/tools/emulator/skins/WVGA854   platforms/${PLATFORM_NAME}/skins/WVGA854
 
 # Platform SDK properties
 sdk/files/sdk.properties     platforms/${PLATFORM_NAME}/sdk.properties
@@ -146,17 +146,18 @@
 # PLEASE KEEP THE SAMPLES IN ALPHABETICAL ORDER.
 #
 development/samples/AccessibilityService     samples/${PLATFORM_NAME}/AccessibilityService
+development/samples/AccelerometerPlay        samples/${PLATFORM_NAME}/AccelerometerPlay
 development/samples/ApiDemos                 samples/${PLATFORM_NAME}/ApiDemos
 development/samples/BackupRestore            samples/${PLATFORM_NAME}/BackupRestore
 development/samples/BluetoothChat            samples/${PLATFORM_NAME}/BluetoothChat
 development/samples/ContactManager           samples/${PLATFORM_NAME}/ContactManager
 development/samples/CrossCompatibility       samples/${PLATFORM_NAME}/CrossCompatibility
 development/samples/CubeLiveWallpaper        samples/${PLATFORM_NAME}/CubeLiveWallpaper
-development/samples/HeavyWeight              samples/${PLATFORM_NAME}/HeavyWeight
 development/samples/Home                     samples/${PLATFORM_NAME}/Home
 development/samples/JetBoy                   samples/${PLATFORM_NAME}/JetBoy
 development/samples/LunarLander              samples/${PLATFORM_NAME}/LunarLander
 development/samples/MultiResolution          samples/${PLATFORM_NAME}/MultiResolution
+development/samples/NFCDemo                  samples/${PLATFORM_NAME}/NFCDemo
 development/samples/NotePad                  samples/${PLATFORM_NAME}/NotePad
 development/samples/SampleSyncAdapter        samples/${PLATFORM_NAME}/SampleSyncAdapter
 development/samples/SearchableDictionary     samples/${PLATFORM_NAME}/SearchableDictionary
diff --git a/ndk/platforms/android-3/arch-arm/include/asm/byteorder.h b/ndk/platforms/android-3/arch-arm/include/asm/byteorder.h
index 4da37bf..b869695 100644
--- a/ndk/platforms/android-3/arch-arm/include/asm/byteorder.h
+++ b/ndk/platforms/android-3/arch-arm/include/asm/byteorder.h
@@ -22,7 +22,7 @@
 #ifndef __thumb__
  if (!__builtin_constant_p(x)) {
 
- asm ("eor\t%0, %1, %1, ror #16" : "=r" (t) : "r" (x));
+ __asm__ ("eor\t%0, %1, %1, ror #16" : "=r" (t) : "r" (x));
  } else
 #endif
  t = x ^ ((x << 16) | (x >> 16));
diff --git a/ndk/platforms/android-3/include/netinet/in.h b/ndk/platforms/android-3/include/netinet/in.h
index 0ebd926..7a4b6c7 100644
--- a/ndk/platforms/android-3/include/netinet/in.h
+++ b/ndk/platforms/android-3/include/netinet/in.h
@@ -38,6 +38,8 @@
 
 #define IPPORT_RESERVED  1024
 
+#define INET_ADDRSTRLEN 16
+
 extern int bindresvport (int sd, struct sockaddr_in *sin);
 
 static const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;
diff --git a/ndk/platforms/android-3/include/netinet/in6.h b/ndk/platforms/android-3/include/netinet/in6.h
index 2f5fee1..e756583 100644
--- a/ndk/platforms/android-3/include/netinet/in6.h
+++ b/ndk/platforms/android-3/include/netinet/in6.h
@@ -74,6 +74,9 @@
 #define IPV6_ADDR_MC_SCOPE(a)	\
 	((a)->s6_addr[1] & 0x0f)
 
+#define IN6_IS_ADDR_MC_NODELOCAL(a)     \
+        (IN6_IS_ADDR_MULTICAST(a) &&  \
+         (IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_NODELOCAL))
 #define IN6_IS_ADDR_MC_LINKLOCAL(a)	\
 	(IN6_IS_ADDR_MULTICAST(a) &&  \
 	 (IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_LINKLOCAL))
@@ -83,7 +86,9 @@
 #define IN6_IS_ADDR_MC_ORGLOCAL(a)     \
 	(IN6_IS_ADDR_MULTICAST(a) &&  \
 	 (IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_ORGLOCAL))
-
+#define IN6_IS_ADDR_MC_GLOBAL(a)       \
+        (IN6_IS_ADDR_MULTICAST(a) &&  \
+         (IPV6_ADDR_MC_SCOPE(a) == IPV6_ADDR_SCOPE_GLOBAL))
 
 #define IN6_ARE_ADDR_EQUAL(a, b)			\
     (memcmp(&(a)->s6_addr[0], &(b)->s6_addr[0], sizeof(struct in6_addr)) == 0)
diff --git a/ndk/platforms/android-9/arch-arm/lib/libEGL.so b/ndk/platforms/android-9/arch-arm/lib/libEGL.so
index f63b64c..3d8c151 100644
--- a/ndk/platforms/android-9/arch-arm/lib/libEGL.so
+++ b/ndk/platforms/android-9/arch-arm/lib/libEGL.so
Binary files differ
diff --git a/ndk/platforms/android-9/arch-arm/lib/libOpenSLES.so b/ndk/platforms/android-9/arch-arm/lib/libOpenSLES.so
index 1e7c180..3f2ae90 100755
--- a/ndk/platforms/android-9/arch-arm/lib/libOpenSLES.so
+++ b/ndk/platforms/android-9/arch-arm/lib/libOpenSLES.so
Binary files differ
diff --git a/ndk/platforms/android-9/arch-arm/lib/libandroid.so b/ndk/platforms/android-9/arch-arm/lib/libandroid.so
index 1ac0a9c..32d907b 100644
--- a/ndk/platforms/android-9/arch-arm/lib/libandroid.so
+++ b/ndk/platforms/android-9/arch-arm/lib/libandroid.so
Binary files differ
diff --git a/ndk/platforms/android-9/arch-arm/symbols/libEGL.so.txt b/ndk/platforms/android-9/arch-arm/symbols/libEGL.so.txt
new file mode 100644
index 0000000..cc71131
--- /dev/null
+++ b/ndk/platforms/android-9/arch-arm/symbols/libEGL.so.txt
@@ -0,0 +1,40 @@
+eglBindAPI
+eglBindTexImage
+eglChooseConfig
+eglCopyBuffers
+eglCreateContext
+eglCreateImageKHR
+eglCreatePbufferFromClientBuffer
+eglCreatePbufferSurface
+eglCreatePixmapSurface
+eglCreateWindowSurface
+eglDestroyContext
+eglDestroyImageKHR
+eglDestroySurface
+eglGetConfigAttrib
+eglGetConfigs
+eglGetCurrentContext
+eglGetCurrentDisplay
+eglGetCurrentSurface
+eglGetDisplay
+eglGetError
+eglGetProcAddress
+eglInitialize
+eglLockSurfaceKHR
+eglMakeCurrent
+eglQueryAPI
+eglQueryContext
+eglQueryString
+eglQuerySurface
+eglReleaseTexImage
+eglReleaseThread
+eglSetSwapRectangleANDROID
+eglSurfaceAttrib
+eglSwapBuffers
+eglSwapInterval
+eglTerminate
+eglUnlockSurfaceKHR
+eglWaitClient
+eglWaitGL
+eglWaitNative
+
diff --git a/ndk/platforms/android-9/arch-arm/symbols/libOpenSLES.so.txt b/ndk/platforms/android-9/arch-arm/symbols/libOpenSLES.so.txt
index e7ccafb..b42d1ee 100644
--- a/ndk/platforms/android-9/arch-arm/symbols/libOpenSLES.so.txt
+++ b/ndk/platforms/android-9/arch-arm/symbols/libOpenSLES.so.txt
@@ -1,3 +1,6 @@
+slCreateEngine
+slQueryNumSupportedEngineInterfaces
+slQuerySupportedEngineInterfaces
 SL_IID_3DCOMMIT
 SL_IID_3DDOPPLER
 SL_IID_3DGROUPING
@@ -47,6 +50,3 @@
 SL_IID_VIRTUALIZER
 SL_IID_VISUALIZATION
 SL_IID_VOLUME
-slCreateEngine
-slQueryNumSupportedEngineInterfaces
-slQuerySupportedEngineInterfaces
diff --git a/ndk/platforms/android-9/arch-arm/symbols/libandroid.so.txt b/ndk/platforms/android-9/arch-arm/symbols/libandroid.so.txt
new file mode 100644
index 0000000..e6d17fe
--- /dev/null
+++ b/ndk/platforms/android-9/arch-arm/symbols/libandroid.so.txt
@@ -0,0 +1,149 @@
+AAssetDir_close
+AAssetDir_getNextFileName
+AAssetDir_rewind
+AAssetManager_fromJava
+AAssetManager_open
+AAssetManager_openDir
+AAsset_close
+AAsset_getBuffer
+AAsset_getLength
+AAsset_getRemainingLength
+AAsset_isAllocated
+AAsset_openFileDescriptor
+AAsset_read
+AAsset_seek
+AConfiguration_copy
+AConfiguration_delete
+AConfiguration_diff
+AConfiguration_fromAssetManager
+AConfiguration_getCountry
+AConfiguration_getDensity
+AConfiguration_getKeyboard
+AConfiguration_getKeysHidden
+AConfiguration_getLanguage
+AConfiguration_getMcc
+AConfiguration_getMnc
+AConfiguration_getNavHidden
+AConfiguration_getNavigation
+AConfiguration_getOrientation
+AConfiguration_getScreenLong
+AConfiguration_getScreenSize
+AConfiguration_getSdkVersion
+AConfiguration_getTouchscreen
+AConfiguration_getUiModeNight
+AConfiguration_getUiModeType
+AConfiguration_isBetterThan
+AConfiguration_match
+AConfiguration_new
+AConfiguration_setCountry
+AConfiguration_setDensity
+AConfiguration_setKeyboard
+AConfiguration_setKeysHidden
+AConfiguration_setLanguage
+AConfiguration_setMcc
+AConfiguration_setMnc
+AConfiguration_setNavHidden
+AConfiguration_setNavigation
+AConfiguration_setOrientation
+AConfiguration_setScreenLong
+AConfiguration_setScreenSize
+AConfiguration_setSdkVersion
+AConfiguration_setTouchscreen
+AConfiguration_setUiModeNight
+AConfiguration_setUiModeType
+AInputEvent_getDeviceId
+AInputEvent_getSource
+AInputEvent_getType
+AInputQueue_attachLooper
+AInputQueue_detachLooper
+AInputQueue_finishEvent
+AInputQueue_getEvent
+AInputQueue_hasEvents
+AInputQueue_preDispatchEvent
+AKeyEvent_getAction
+AKeyEvent_getDownTime
+AKeyEvent_getEventTime
+AKeyEvent_getFlags
+AKeyEvent_getKeyCode
+AKeyEvent_getMetaState
+AKeyEvent_getRepeatCount
+AKeyEvent_getScanCode
+ALooper_acquire
+ALooper_addFd
+ALooper_forThread
+ALooper_pollAll
+ALooper_pollOnce
+ALooper_prepare
+ALooper_release
+ALooper_removeFd
+ALooper_wake
+AMotionEvent_getAction
+AMotionEvent_getDownTime
+AMotionEvent_getEdgeFlags
+AMotionEvent_getEventTime
+AMotionEvent_getFlags
+AMotionEvent_getHistoricalEventTime
+AMotionEvent_getHistoricalPressure
+AMotionEvent_getHistoricalSize
+AMotionEvent_getHistoricalX
+AMotionEvent_getHistoricalY
+AMotionEvent_getHistorySize
+AMotionEvent_getMetaState
+AMotionEvent_getOrientation
+AMotionEvent_getPointerCount
+AMotionEvent_getPointerId
+AMotionEvent_getPressure
+AMotionEvent_getRawX
+AMotionEvent_getRawY
+AMotionEvent_getSize
+AMotionEvent_getToolMajor
+AMotionEvent_getToolMinor
+AMotionEvent_getTouchMajor
+AMotionEvent_getTouchMinor
+AMotionEvent_getX
+AMotionEvent_getXOffset
+AMotionEvent_getXPrecision
+AMotionEvent_getY
+AMotionEvent_getYOffset
+AMotionEvent_getYPrecision
+ANativeActivity_finish
+ANativeActivity_hideSoftInput
+ANativeActivity_setWindowFlags
+ANativeActivity_setWindowFormat
+ANativeActivity_showSoftInput
+ANativeWindow_acquire
+ANativeWindow_fromSurface
+ANativeWindow_getFormat
+ANativeWindow_getHeight
+ANativeWindow_getWidth
+ANativeWindow_lock
+ANativeWindow_release
+ANativeWindow_setBuffersGeometry
+ANativeWindow_unlockAndPost
+AObbInfo_delete
+AObbInfo_getFlags
+AObbInfo_getPackageName
+AObbInfo_getVersion
+AObbScanner_getObbInfo
+ASensorEventQueue_disableSensor
+ASensorEventQueue_enableSensor
+ASensorEventQueue_getEvents
+ASensorEventQueue_hasEvents
+ASensorEventQueue_setEventRate
+ASensorManager_createEventQueue
+ASensorManager_destroyEventQueue
+ASensorManager_getDefaultSensor
+ASensorManager_getInstance
+ASensorManager_getSensorList
+ASensor_getMinDelay
+ASensor_getName
+ASensor_getResolution
+ASensor_getType
+ASensor_getVendor
+AStorageManager_delete
+AStorageManager_getMountedObbPath
+AStorageManager_isObbMounted
+AStorageManager_mountObb
+AStorageManager_new
+AStorageManager_unmountObb
+
diff --git a/ndk/platforms/android-9/include/EGL/eglext.h b/ndk/platforms/android-9/include/EGL/eglext.h
index b121158..1ffcd56 100644
--- a/ndk/platforms/android-9/include/EGL/eglext.h
+++ b/ndk/platforms/android-9/include/EGL/eglext.h
@@ -229,14 +229,6 @@
 #define EGL_NATIVE_BUFFER_ANDROID       0x3140  /* eglCreateImageKHR target */
 #endif
 
-#ifndef EGL_ANDROID_get_render_buffer
-#define EGL_ANDROID_get_render_buffer 1
-#ifdef EGL_EGLEXT_PROTOTYPES
-EGLAPI EGLClientBuffer EGLAPIENTRY eglGetRenderBufferANDROID(EGLDisplay dpy, EGLSurface draw);
-#endif
-typedef EGLClientBuffer (EGLAPIENTRYP PFNEGLGETRENDERBUFFERANDROIDPROC) (EGLDisplay dpy, EGLSurface draw);
-#endif
-
 #ifndef EGL_ANDROID_swap_rectangle
 #define EGL_ANDROID_swap_rectangle 1
 #ifdef EGL_EGLEXT_PROTOTYPES
diff --git a/ndk/platforms/android-9/include/EGL/eglplatform.h b/ndk/platforms/android-9/include/EGL/eglplatform.h
index e6c250d..bfac71b 100644
--- a/ndk/platforms/android-9/include/EGL/eglplatform.h
+++ b/ndk/platforms/android-9/include/EGL/eglplatform.h
@@ -78,18 +78,7 @@
 typedef void *EGLNativeWindowType;
 typedef void *EGLNativePixmapType;
 
-#elif defined(__unix__) && !defined(__ANDROID__)
-
-/* X11 (tentative)  */
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-
-typedef Display *EGLNativeDisplayType;
-typedef Pixmap   EGLNativePixmapType;
-typedef Window   EGLNativeWindowType;
-
-
-#elif defined(__ANDROID__)
+#elif defined(__ANDROID__) || defined(ANDROID)
 
 #include <android/native_window.h>
 
@@ -99,6 +88,16 @@
 typedef struct egl_native_pixmap_t*     EGLNativePixmapType;
 typedef void*                           EGLNativeDisplayType;
 
+#elif defined(__unix__)
+
+/* X11 (tentative)  */
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+
+typedef Display *EGLNativeDisplayType;
+typedef Pixmap   EGLNativePixmapType;
+typedef Window   EGLNativeWindowType;
+
 #else
 #error "Platform not recognized"
 #endif
diff --git a/ndk/platforms/android-9/include/android/asset_manager.h b/ndk/platforms/android-9/include/android/asset_manager.h
index 3ad0f99..4fa0ef3 100644
--- a/ndk/platforms/android-9/include/android/asset_manager.h
+++ b/ndk/platforms/android-9/include/android/asset_manager.h
@@ -18,9 +18,9 @@
 #ifndef ANDROID_ASSET_MANAGER_H
 #define ANDROID_ASSET_MANAGER_H
 
-#include <sys/cdefs.h>
-
-__BEGIN_DECLS
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 struct AAssetManager;
 typedef struct AAssetManager AAssetManager;
@@ -130,6 +130,9 @@
 int AAsset_isAllocated(AAsset* asset);
 
 
-__END_DECLS
 
-#endif      /* ANDROID_ASSET_MANAGER_H */
+#ifdef __cplusplus
+};
+#endif
+
+#endif      // ANDROID_ASSET_MANAGER_H
diff --git a/ndk/platforms/android-9/include/android/asset_manager_jni.h b/ndk/platforms/android-9/include/android/asset_manager_jni.h
index 073434b..aec2d3c 100644
--- a/ndk/platforms/android-9/include/android/asset_manager_jni.h
+++ b/ndk/platforms/android-9/include/android/asset_manager_jni.h
@@ -21,7 +21,9 @@
 #include <android/asset_manager.h>
 #include <jni.h>
 
-__BEGIN_DECLS
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 /**
  * Given a Dalvik AssetManager object, obtain the corresponding native AAssetManager
@@ -31,6 +33,8 @@
  */
 AAssetManager* AAssetManager_fromJava(JNIEnv* env, jobject assetManager);
 
-__END_DECLS
+#ifdef __cplusplus
+};
+#endif
 
-#endif      /* ANDROID_ASSET_MANAGER_JNI_H */
+#endif      // ANDROID_ASSET_MANAGER_JNI_H
diff --git a/ndk/platforms/android-9/include/android/configuration.h b/ndk/platforms/android-9/include/android/configuration.h
index 4c85b12..99e8f97 100644
--- a/ndk/platforms/android-9/include/android/configuration.h
+++ b/ndk/platforms/android-9/include/android/configuration.h
@@ -19,7 +19,9 @@
 
 #include <android/asset_manager.h>
 
-__BEGIN_DECLS
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 struct AConfiguration;
 typedef struct AConfiguration AConfiguration;
@@ -310,6 +312,8 @@
 int32_t AConfiguration_isBetterThan(AConfiguration* base, AConfiguration* test,
         AConfiguration* requested);
 
-__END_DECLS
+#ifdef __cplusplus
+};
+#endif
 
-#endif /* ANDROID_CONFIGURATION_H */
+#endif // ANDROID_CONFIGURATION_H
diff --git a/ndk/platforms/android-9/include/android/input.h b/ndk/platforms/android-9/include/android/input.h
index ae96c50..7df13c3 100644
--- a/ndk/platforms/android-9/include/android/input.h
+++ b/ndk/platforms/android-9/include/android/input.h
@@ -45,7 +45,9 @@
 #include <android/keycodes.h>
 #include <android/looper.h>
 
-__BEGIN_DECLS
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 /*
  * Key states (may be returned by queries about the current state of a
@@ -304,6 +306,8 @@
     AINPUT_SOURCE_MOUSE = 0x00002000 | AINPUT_SOURCE_CLASS_POINTER,
     AINPUT_SOURCE_TRACKBALL = 0x00010000 | AINPUT_SOURCE_CLASS_NAVIGATION,
     AINPUT_SOURCE_TOUCHPAD = 0x00100000 | AINPUT_SOURCE_CLASS_POSITION,
+
+    AINPUT_SOURCE_ANY = 0xffffff00,
 };
 
 /*
@@ -675,6 +679,8 @@
  */
 void AInputQueue_finishEvent(AInputQueue* queue, AInputEvent* event, int handled);
 
-__END_DECLS
+#ifdef __cplusplus
+}
+#endif
 
-#endif /* _ANDROID_INPUT_H */
+#endif // _ANDROID_INPUT_H
diff --git a/ndk/platforms/android-9/include/android/keycodes.h b/ndk/platforms/android-9/include/android/keycodes.h
index be0550a..496eccc 100644
--- a/ndk/platforms/android-9/include/android/keycodes.h
+++ b/ndk/platforms/android-9/include/android/keycodes.h
@@ -33,10 +33,11 @@
  *   - DO NOT CHANGE THE LAYOUT OR SIZE OF STRUCTURES
  */
 
-#include <sys/cdefs.h>
 #include <sys/types.h>
 
-__BEGIN_DECLS
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 /*
  * Key codes.
@@ -158,6 +159,8 @@
     //       Refer to frameworks/base/core/java/android/view/KeyEvent.java for the full list.
 };
 
-__END_DECLS
+#ifdef __cplusplus
+}
+#endif
 
-#endif /* _ANDROID_KEYCODES_H */
+#endif // _ANDROID_KEYCODES_H
diff --git a/ndk/platforms/android-9/include/android/looper.h b/ndk/platforms/android-9/include/android/looper.h
index 9b7438b..a9d8426 100644
--- a/ndk/platforms/android-9/include/android/looper.h
+++ b/ndk/platforms/android-9/include/android/looper.h
@@ -18,9 +18,9 @@
 #ifndef ANDROID_LOOPER_H
 #define ANDROID_LOOPER_H
 
-#include <sys/cdefs.h>
-
-__BEGIN_DECLS
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 /**
  * ALooper
@@ -248,6 +248,8 @@
  */
 int ALooper_removeFd(ALooper* looper, int fd);
 
-__END_DECLS
+#ifdef __cplusplus
+};
+#endif
 
-#endif /* ANDROID_NATIVE_WINDOW_H */
+#endif // ANDROID_NATIVE_WINDOW_H
diff --git a/ndk/platforms/android-9/include/android/native_activity.h b/ndk/platforms/android-9/include/android/native_activity.h
index 0bff86d..d89bc8b 100644
--- a/ndk/platforms/android-9/include/android/native_activity.h
+++ b/ndk/platforms/android-9/include/android/native_activity.h
@@ -19,7 +19,6 @@
 #define ANDROID_NATIVE_ACTIVITY_H
 
 #include <stdint.h>
-#include <sys/cdefs.h>
 #include <sys/types.h>
 
 #include <jni.h>
@@ -28,7 +27,9 @@
 #include <android/input.h>
 #include <android/native_window.h>
 
-__BEGIN_DECLS
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 struct ANativeActivityCallbacks;
 
@@ -67,17 +68,17 @@
      * Path to this application's internal data directory.
      */
     const char* internalDataPath;
-
+    
     /**
      * Path to this application's external (removable/mountable) data directory.
      */
     const char* externalDataPath;
-
+    
     /**
      * The platform's SDK version code.
      */
     int32_t sdkVersion;
-
+    
     /**
      * This is the native instance of the application.  It is not used by
      * the framework, but can be set by the application to its own instance
@@ -104,13 +105,13 @@
      * for more information.
      */
     void (*onStart)(ANativeActivity* activity);
-
+    
     /**
      * NativeActivity has resumed.  See Java documentation for Activity.onResume()
      * for more information.
      */
     void (*onResume)(ANativeActivity* activity);
-
+    
     /**
      * Framework is asking NativeActivity to save its current instance state.
      * See Java documentation for Activity.onSaveInstanceState() for more
@@ -121,19 +122,19 @@
      * entities (pointers to memory, file descriptors, etc).
      */
     void* (*onSaveInstanceState)(ANativeActivity* activity, size_t* outSize);
-
+    
     /**
      * NativeActivity has paused.  See Java documentation for Activity.onPause()
      * for more information.
      */
     void (*onPause)(ANativeActivity* activity);
-
+    
     /**
      * NativeActivity has stopped.  See Java documentation for Activity.onStop()
      * for more information.
      */
     void (*onStop)(ANativeActivity* activity);
-
+    
     /**
      * NativeActivity is being destroyed.  See Java documentation for Activity.onDestroy()
      * for more information.
@@ -145,7 +146,7 @@
      * for example, to pause a game when it loses input focus.
      */
     void (*onWindowFocusChanged)(ANativeActivity* activity, int hasFocus);
-
+    
     /**
      * The drawing window for this native activity has been created.  You
      * can use the given native window object to start drawing.
@@ -176,13 +177,13 @@
      * returning from here.
      */
     void (*onNativeWindowDestroyed)(ANativeActivity* activity, ANativeWindow* window);
-
+    
     /**
      * The input queue for this native activity's window has been created.
      * You can use the given input queue to start retrieving input events.
      */
     void (*onInputQueueCreated)(ANativeActivity* activity, AInputQueue* queue);
-
+    
     /**
      * The input queue for this native activity's window is being destroyed.
      * You should no longer try to reference this object upon returning from this
@@ -287,6 +288,9 @@
  */
 void ANativeActivity_hideSoftInput(ANativeActivity* activity, uint32_t flags);
 
-__END_DECLS
+#ifdef __cplusplus
+};
+#endif
 
-#endif /* ANDROID_NATIVE_ACTIVITY_H */
+#endif // ANDROID_NATIVE_ACTIVITY_H
+
diff --git a/ndk/platforms/android-9/include/android/native_window.h b/ndk/platforms/android-9/include/android/native_window.h
index 75e68c1..f3d7550 100644
--- a/ndk/platforms/android-9/include/android/native_window.h
+++ b/ndk/platforms/android-9/include/android/native_window.h
@@ -17,10 +17,11 @@
 #ifndef ANDROID_NATIVE_WINDOW_H
 #define ANDROID_NATIVE_WINDOW_H
 
-#include <sys/cdefs.h>
 #include <android/rect.h>
 
-__BEGIN_DECLS
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 /*
  * Pixel formats that a window can use.
@@ -50,7 +51,7 @@
 
     // The actual bits.
     void* bits;
-
+    
     // Do not touch.
     uint32_t reserved[6];
 } ANativeWindow_Buffer;
@@ -109,6 +110,8 @@
  */
 int32_t ANativeWindow_unlockAndPost(ANativeWindow* window);
 
-__END_DECLS
+#ifdef __cplusplus
+};
+#endif
 
-#endif /* ANDROID_NATIVE_WINDOW_H */
+#endif // ANDROID_NATIVE_WINDOW_H
diff --git a/ndk/platforms/android-9/include/android/native_window_jni.h b/ndk/platforms/android-9/include/android/native_window_jni.h
index a44a5b1..b9e72ef 100644
--- a/ndk/platforms/android-9/include/android/native_window_jni.h
+++ b/ndk/platforms/android-9/include/android/native_window_jni.h
@@ -21,7 +21,9 @@
 
 #include <jni.h>
 
-__BEGIN_DECLS
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 /**
  * Return the ANativeWindow associated with a Java Surface object,
@@ -31,6 +33,8 @@
  */
 ANativeWindow* ANativeWindow_fromSurface(JNIEnv* env, jobject surface);
 
-__END_DECLS
+#ifdef __cplusplus
+};
+#endif
 
-#endif /* ANDROID_NATIVE_WINDOW_H */
+#endif // ANDROID_NATIVE_WINDOW_H
diff --git a/ndk/platforms/android-9/include/android/obb.h b/ndk/platforms/android-9/include/android/obb.h
index 5670b1c..65e9b2a 100644
--- a/ndk/platforms/android-9/include/android/obb.h
+++ b/ndk/platforms/android-9/include/android/obb.h
@@ -18,10 +18,11 @@
 #ifndef ANDROID_OBB_H
 #define ANDROID_OBB_H
 
-#include <sys/cdefs.h>
 #include <sys/types.h>
 
-__BEGIN_DECLS
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 struct AObbInfo;
 typedef struct AObbInfo AObbInfo;
@@ -55,6 +56,8 @@
  */
 int32_t AObbInfo_getFlags(AObbInfo* obbInfo);
 
-__END_DECLS
+#ifdef __cplusplus
+};
+#endif
 
-#endif      /* ANDROID_OBB_H */
+#endif      // ANDROID_OBB_H
diff --git a/ndk/platforms/android-9/include/android/rect.h b/ndk/platforms/android-9/include/android/rect.h
index 161c2a7..3e81f53 100644
--- a/ndk/platforms/android-9/include/android/rect.h
+++ b/ndk/platforms/android-9/include/android/rect.h
@@ -18,9 +18,9 @@
 #ifndef ANDROID_RECT_H
 #define ANDROID_RECT_H
 
-#include <sys/cdefs.h>
-
-__BEGIN_DECLS
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 typedef struct ARect {
     int32_t left;
@@ -29,6 +29,8 @@
     int32_t bottom;
 } ARect;
 
-__END_DECLS
+#ifdef __cplusplus
+};
+#endif
 
-#endif /* ANDROID_RECT_H */
+#endif // ANDROID_RECT_H
diff --git a/ndk/platforms/android-9/include/android/sensor.h b/ndk/platforms/android-9/include/android/sensor.h
index eb46ef0..f163f18 100644
--- a/ndk/platforms/android-9/include/android/sensor.h
+++ b/ndk/platforms/android-9/include/android/sensor.h
@@ -39,12 +39,14 @@
  * native code.
  *
  */
-#include <sys/cdefs.h>
+
 #include <sys/types.h>
 
 #include <android/looper.h>
 
-__BEGIN_DECLS
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 
 /*
@@ -247,6 +249,8 @@
 int ASensor_getMinDelay(ASensor const* sensor);
 
 
-__END_DECLS
+#ifdef __cplusplus
+};
+#endif
 
-#endif /* ANDROID_SENSOR_H */
+#endif // ANDROID_SENSOR_H
diff --git a/ndk/platforms/android-9/include/android/storage_manager.h b/ndk/platforms/android-9/include/android/storage_manager.h
index f3b08dc..bad2491 100644
--- a/ndk/platforms/android-9/include/android/storage_manager.h
+++ b/ndk/platforms/android-9/include/android/storage_manager.h
@@ -18,10 +18,11 @@
 #ifndef ANDROID_STORAGE_MANAGER_H
 #define ANDROID_STORAGE_MANAGER_H
 
-#include <sys/cdefs.h>
 #include <stdint.h>
 
-__BEGIN_DECLS
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 struct AStorageManager;
 typedef struct AStorageManager AStorageManager;
@@ -119,6 +120,8 @@
 const char* AStorageManager_getMountedObbPath(AStorageManager* mgr, const char* filename);
 
 
-__END_DECLS
+#ifdef __cplusplus
+};
+#endif
 
-#endif      /* ANDROID_STORAGE_MANAGER_H */
+#endif      // ANDROID_STORAGE_MANAGER_H
diff --git a/ndk/platforms/android-9/include/android/window.h b/ndk/platforms/android-9/include/android/window.h
index 0633f89..2ab192b 100644
--- a/ndk/platforms/android-9/include/android/window.h
+++ b/ndk/platforms/android-9/include/android/window.h
@@ -18,9 +18,9 @@
 #ifndef ANDROID_WINDOW_H
 #define ANDROID_WINDOW_H
 
-#include <sys/cdefs.h>
-
-__BEGIN_DECLS
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 /**
  * Window flags, as per the Java API at android.view.WindowManager.LayoutParams.
@@ -51,6 +51,8 @@
     AWINDOW_FLAG_DISMISS_KEYGUARD           = 0x00400000,
 };
 
-__END_DECLS
+#ifdef __cplusplus
+};
+#endif
 
-#endif /* ANDROID_WINDOW_H */
+#endif // ANDROID_WINDOW_H
diff --git a/samples/ApiDemos/AndroidManifest.xml b/samples/ApiDemos/AndroidManifest.xml
index 6e39538..e9acbb4 100644
--- a/samples/ApiDemos/AndroidManifest.xml
+++ b/samples/ApiDemos/AndroidManifest.xml
@@ -671,6 +671,13 @@
             </intent-filter>
         </activity>
 
+        <activity android:name=".os.RotationVectorDemo" android:label="OS/Rotation Vector"  android:screenOrientation="nosensor">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.SAMPLE_CODE" />
+            </intent-filter>
+        </activity>
+
         <activity android:name=".os.SmsMessagingDemo" android:label="OS/SMS Messaging">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
diff --git a/samples/ApiDemos/res/menu/camera_menu.xml b/samples/ApiDemos/res/menu/camera_menu.xml
new file mode 100644
index 0000000..16504b7
--- /dev/null
+++ b/samples/ApiDemos/res/menu/camera_menu.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@+id/switch_cam"
+          android:title="@string/switch_cam" />
+</menu>
diff --git a/samples/ApiDemos/res/values/strings.xml b/samples/ApiDemos/res/values/strings.xml
index 4e61b8f..7adf48d 100644
--- a/samples/ApiDemos/res/values/strings.xml
+++ b/samples/ApiDemos/res/values/strings.xml
@@ -498,6 +498,8 @@
     <string name="hide_me">Hide Me!</string>
 
     <string name="density_title">Density: Unknown Screen</string>
+    <string name="camera_alert">Device has only one camera!</string>
+    <string name="switch_cam">Switch Camera</string>
 
     <!-- ============================ -->
     <!--  media examples strings  -->
diff --git a/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.java b/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.java
index 22dc297..73d50cb 100644
--- a/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.java
+++ b/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.java
@@ -17,11 +17,16 @@
 package com.example.android.apis.graphics;
 
 import android.app.Activity;
+import android.app.AlertDialog;
 import android.content.Context;
 import android.hardware.Camera;
+import android.hardware.Camera.CameraInfo;
 import android.hardware.Camera.Size;
 import android.os.Bundle;
 import android.util.Log;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
 import android.view.SurfaceHolder;
 import android.view.SurfaceView;
 import android.view.View;
@@ -32,11 +37,20 @@
 import java.io.IOException;
 import java.util.List;
 
+// Need the following import to get access to the app resources, since this
+// class is in a sub-package.
+import com.example.android.apis.R;
+
 // ----------------------------------------------------------------------
 
 public class CameraPreview extends Activity {
     private Preview mPreview;
     Camera mCamera;
+    int numberOfCameras;
+    int cameraCurrentlyLocked;
+
+    // The first rear facing camera
+    int defaultCameraId;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -50,13 +64,27 @@
         // and set it as the content of our activity.
         mPreview = new Preview(this);
         setContentView(mPreview);
+
+        // Find the total number of cameras available
+        numberOfCameras = Camera.getNumberOfCameras();
+
+        // Find the ID of the default camera
+        CameraInfo cameraInfo = new CameraInfo();
+            for (int i = 0; i < numberOfCameras; i++) {
+                Camera.getCameraInfo(i, cameraInfo);
+                if (cameraInfo.facing == CameraInfo.CAMERA_FACING_BACK) {
+                    defaultCameraId = i;
+                }
+            }
     }
 
     @Override
     protected void onResume() {
         super.onResume();
 
+        // Open the default i.e. the first rear facing camera.
         mCamera = Camera.open();
+        cameraCurrentlyLocked = defaultCameraId;
         mPreview.setCamera(mCamera);
     }
 
@@ -72,6 +100,55 @@
             mCamera = null;
         }
     }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+
+        // Inflate our menu which can gather user input for switching camera
+        MenuInflater inflater = getMenuInflater();
+        inflater.inflate(R.menu.camera_menu, menu);
+        return true;
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        // Handle item selection
+        switch (item.getItemId()) {
+        case R.id.switch_cam:
+            // check for availability of multiple cameras
+            if (numberOfCameras == 1) {
+                AlertDialog.Builder builder = new AlertDialog.Builder(this);
+                builder.setMessage(this.getString(R.string.camera_alert))
+                       .setNeutralButton("Close", null);
+                AlertDialog alert = builder.create();
+                alert.show();
+                return true;
+            }
+
+            // OK, we have multiple cameras.
+            // Release this camera -> cameraCurrentlyLocked
+            if (mCamera != null) {
+                mCamera.stopPreview();
+                mPreview.setCamera(null);
+                mCamera.release();
+                mCamera = null;
+            }
+
+            // Acquire the next camera and request Preview to reconfigure
+            // parameters.
+            mCamera = Camera
+                    .open((cameraCurrentlyLocked + 1) % numberOfCameras);
+            cameraCurrentlyLocked = (cameraCurrentlyLocked + 1)
+                    % numberOfCameras;
+            mPreview.switchCamera(mCamera);
+
+            // Start the preview
+            mCamera.startPreview();
+            return true;
+        default:
+            return super.onOptionsItemSelected(item);
+        }
+    }
 }
 
 // ----------------------------------------------------------------------
@@ -111,6 +188,20 @@
         }
     }
 
+    public void switchCamera(Camera camera) {
+       setCamera(camera);
+       try {
+           camera.setPreviewDisplay(mHolder);
+       } catch (IOException exception) {
+           Log.e(TAG, "IOException caused by setPreviewDisplay()", exception);
+       }
+       Camera.Parameters parameters = camera.getParameters();
+       parameters.setPreviewSize(mPreviewSize.width, mPreviewSize.height);
+       requestLayout();
+
+       camera.setParameters(parameters);
+    }
+
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         // We purposely disregard child measurements because act as a
diff --git a/samples/ApiDemos/src/com/example/android/apis/os/RotationVectorDemo.java b/samples/ApiDemos/src/com/example/android/apis/os/RotationVectorDemo.java
new file mode 100644
index 0000000..7417809
--- /dev/null
+++ b/samples/ApiDemos/src/com/example/android/apis/os/RotationVectorDemo.java
@@ -0,0 +1,216 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.apis.os;
+
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.FloatBuffer;
+import javax.microedition.khronos.egl.EGLConfig;
+import javax.microedition.khronos.opengles.GL10;
+import android.app.Activity;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
+import android.opengl.GLSurfaceView;
+import android.os.Bundle;
+
+/**
+ * Wrapper activity demonstrating the use of the new
+ * {@link SensorEvent#values rotation vector sensor}
+ * ({@link Sensor#TYPE_ROTATION_VECTOR TYPE_ROTATION_VECTOR}).
+ * 
+ * @see Sensor
+ * @see SensorEvent
+ * @see SensorManager
+ * 
+ */
+public class RotationVectorDemo extends Activity {
+    private GLSurfaceView mGLSurfaceView;
+    private SensorManager mSensorManager;
+    private MyRenderer mRenderer;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Get an instance of the SensorManager
+        mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
+
+        // Create our Preview view and set it as the content of our
+        // Activity
+        mRenderer = new MyRenderer();
+        mGLSurfaceView = new GLSurfaceView(this);
+        mGLSurfaceView.setRenderer(mRenderer);
+        setContentView(mGLSurfaceView);
+    }
+
+    @Override
+    protected void onResume() {
+        // Ideally a game should implement onResume() and onPause()
+        // to take appropriate action when the activity looses focus
+        super.onResume();
+        mRenderer.start();
+        mGLSurfaceView.onResume();
+    }
+
+    @Override
+    protected void onPause() {
+        // Ideally a game should implement onResume() and onPause()
+        // to take appropriate action when the activity looses focus
+        super.onPause();
+        mRenderer.stop();
+        mGLSurfaceView.onPause();
+    }
+
+
+    class MyRenderer implements GLSurfaceView.Renderer, SensorEventListener {
+        private Cube mCube;
+        private Sensor mRotationVectorSensor;
+        private final float[] mRotationMatrix = new float[16];
+
+        public MyRenderer() {
+            // find the rotation-vector sensor
+            mRotationVectorSensor = mSensorManager.getDefaultSensor(
+                    Sensor.TYPE_ROTATION_VECTOR);
+
+            mCube = new Cube();
+            // initialize the rotation matrix to identity
+            mRotationMatrix[ 0] = 1;
+            mRotationMatrix[ 4] = 1;
+            mRotationMatrix[ 8] = 1;
+            mRotationMatrix[12] = 1;
+        }
+
+        public void start() {
+            // enable our sensor when the activity is resumed, ask for
+            // 10 ms updates.
+            mSensorManager.registerListener(this, mRotationVectorSensor, 10000);
+        }
+
+        public void stop() {
+            // make sure to turn our sensor off when the activity is paused
+            mSensorManager.unregisterListener(this);
+        }
+
+        public void onSensorChanged(SensorEvent event) {
+            // we received a sensor event. it is a good practice to check
+            // that we received the proper event
+            if (event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) {
+                // convert the rotation-vector to a 4x4 matrix. the matrix
+                // is interpreted by Open GL as the inverse of the
+                // rotation-vector, which is what we want.
+                SensorManager.getRotationMatrixFromVector(
+                        mRotationMatrix , event.values);
+            }
+        }
+
+        public void onDrawFrame(GL10 gl) {
+            // clear screen
+            gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
+
+            // set-up modelview matrix
+            gl.glMatrixMode(GL10.GL_MODELVIEW);
+            gl.glLoadIdentity();
+            gl.glTranslatef(0, 0, -3.0f);
+            gl.glMultMatrixf(mRotationMatrix, 0);
+
+            // draw our object
+            gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
+            gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
+
+            mCube.draw(gl);
+        }
+
+        public void onSurfaceChanged(GL10 gl, int width, int height) {
+            // set view-port
+            gl.glViewport(0, 0, width, height);
+            // set projection matrix
+            float ratio = (float) width / height;
+            gl.glMatrixMode(GL10.GL_PROJECTION);
+            gl.glLoadIdentity();
+            gl.glFrustumf(-ratio, ratio, -1, 1, 1, 10);
+        }
+
+        public void onSurfaceCreated(GL10 gl, EGLConfig config) {
+            // dither is enabled by default, we don't need it
+            gl.glDisable(GL10.GL_DITHER);
+            // clear screen in white
+            gl.glClearColor(1,1,1,1);
+        }
+
+        class Cube {
+            // initialize our cube
+            private FloatBuffer mVertexBuffer;
+            private FloatBuffer mColorBuffer;
+            private ByteBuffer  mIndexBuffer;
+
+            public Cube() {
+                final float vertices[] = {
+                        -1, -1, -1,		 1, -1, -1,
+                         1,  1, -1,	    -1,  1, -1,
+                        -1, -1,  1,      1, -1,  1,
+                         1,  1,  1,     -1,  1,  1,
+                };
+
+                final float colors[] = {
+                        0,  0,  0,  1,  1,  0,  0,  1,
+                        1,  1,  0,  1,  0,  1,  0,  1,
+                        0,  0,  1,  1,  1,  0,  1,  1,
+                        1,  1,  1,  1,  0,  1,  1,  1,
+                };
+
+                final byte indices[] = {
+                        0, 4, 5,    0, 5, 1,
+                        1, 5, 6,    1, 6, 2,
+                        2, 6, 7,    2, 7, 3,
+                        3, 7, 4,    3, 4, 0,
+                        4, 7, 6,    4, 6, 5,
+                        3, 0, 1,    3, 1, 2
+                };
+
+                ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length*4);
+                vbb.order(ByteOrder.nativeOrder());
+                mVertexBuffer = vbb.asFloatBuffer();
+                mVertexBuffer.put(vertices);
+                mVertexBuffer.position(0);
+
+                ByteBuffer cbb = ByteBuffer.allocateDirect(colors.length*4);
+                cbb.order(ByteOrder.nativeOrder());
+                mColorBuffer = cbb.asFloatBuffer();
+                mColorBuffer.put(colors);
+                mColorBuffer.position(0);
+
+                mIndexBuffer = ByteBuffer.allocateDirect(indices.length);
+                mIndexBuffer.put(indices);
+                mIndexBuffer.position(0);
+            }
+
+            public void draw(GL10 gl) {
+                gl.glEnable(GL10.GL_CULL_FACE);
+                gl.glFrontFace(GL10.GL_CW);
+                gl.glShadeModel(GL10.GL_SMOOTH);
+                gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mVertexBuffer);
+                gl.glColorPointer(4, GL10.GL_FLOAT, 0, mColorBuffer);
+                gl.glDrawElements(GL10.GL_TRIANGLES, 36, GL10.GL_UNSIGNED_BYTE, mIndexBuffer);
+            }            
+        }
+
+        public void onAccuracyChanged(Sensor sensor, int accuracy) {
+        }
+    }
+}
diff --git a/samples/CubeLiveWallpaper/_index.html b/samples/CubeLiveWallpaper/_index.html
index f6aa931..a429215 100644
--- a/samples/CubeLiveWallpaper/_index.html
+++ b/samples/CubeLiveWallpaper/_index.html
@@ -4,8 +4,8 @@
 <p>In terms of implementation, a live wallpaper is very similar to a regular
 Android <a href="../../../reference/android/app/Service.html">service</a>. The
 only difference is the addition of a new method, <a
-href="../../../reference/android/service/wallpaper/WallpaperService.
-html#onCreateEngine()"><code>onCreateEngine()</code></a>, whose goal is to
+href="../../../reference/android/service/wallpaper/WallpaperService.html#onCreateEngine()"><code>
+onCreateEngine()</code></a>, whose goal is to
 create a <a
 href="../../../reference/android/service/wallpaper/WallpaperService.Engine.html">
 <code>WallpaperService.Engine</code></a>. The engine is responsible for
diff --git a/samples/SearchableDictionary/_index.html b/samples/SearchableDictionary/_index.html
index 4f753e6..ce3ec54 100644
--- a/samples/SearchableDictionary/_index.html
+++ b/samples/SearchableDictionary/_index.html
@@ -12,7 +12,7 @@
   <li>Implement a search interface using Android's search framework</li>
   <li>Provide custom search suggestions and offer them in Quick Search Box</li>
   <li>Create an SQLite database and an FTS3 table for full-text searches</li>
-  <li>Create a <a href="../../../guide/topics/providers/content-provider.html">content
+  <li>Create a <a href="../../../guide/topics/providers/content-providers.html">content
 provider</a> to perform all search and suggestion queries</li>
   <li>Use <code><a
 href="../../../reference/android/widget/SimpleCursorAdapter.html">SimpleCursorAdapter</a></code> to
diff --git a/samples/SipDemo/_index.html b/samples/SipDemo/_index.html
index dbc9037..0af4a8c 100644
--- a/samples/SipDemo/_index.html
+++ b/samples/SipDemo/_index.html
@@ -13,7 +13,7 @@
     href="src/com/example/android/sip/SipSettings.html"><code>SipSettings</code></a>
   &mdash; a <code>PreferenceActivity</code> that supplies basic settings for SIP
   authentication.</li> <li><a
-    href="src/com/example/android/sip/cube1/IncomingCallReceiver.html"><code>
+    href="src/com/example/android/sip/IncomingCallReceiver.html"><code>
       IncomingCallReceiver</code></a> &mdash; a <code>BroadcastReceiver</code>
   that listens for incoming SIP calls and passes them to
   <code>WalkieTalkieActivity</code> for handling.</li> <li><a
diff --git a/sdk/doc_source.properties b/sdk/doc_source.properties
index 4418853..3ed9272 100644
--- a/sdk/doc_source.properties
+++ b/sdk/doc_source.properties
@@ -1,5 +1,5 @@
 Pkg.UserSrc=false
 Pkg.Revision=1
-AndroidVersion.ApiLevel=9
+AndroidVersion.ApiLevel=10
 #AndroidVersion.CodeName=
 
diff --git a/sdk/plat_tools_source.properties b/sdk/plat_tools_source.properties
index ba79b6c..f23e52a 100644
--- a/sdk/plat_tools_source.properties
+++ b/sdk/plat_tools_source.properties
@@ -1,2 +1,2 @@
 Pkg.UserSrc=false
-Pkg.Revision=1
+Pkg.Revision=3
diff --git a/sdk/platform_source.properties b/sdk/platform_source.properties
index 6dadea5..e7557af 100644
--- a/sdk/platform_source.properties
+++ b/sdk/platform_source.properties
@@ -1,6 +1,6 @@
-Pkg.Desc=Android SDK Platform 2.3_r1
+Pkg.Desc=Android SDK Platform 2.4_r1
 Pkg.UserSrc=false
-Platform.Version=2.3
+Platform.Version=2.4
 Pkg.Revision=1
-AndroidVersion.ApiLevel=9
+AndroidVersion.ApiLevel=10
 #AndroidVersion.CodeName=
diff --git a/tools/emulator/skins/HVGA/arrow_down.png b/tools/emulator/skins/HVGA/arrow_down.png
new file mode 100644
index 0000000..b9fde22
--- /dev/null
+++ b/tools/emulator/skins/HVGA/arrow_down.png
Binary files differ
diff --git a/tools/emulator/skins/HVGA/arrow_left.png b/tools/emulator/skins/HVGA/arrow_left.png
new file mode 100644
index 0000000..281b192
--- /dev/null
+++ b/tools/emulator/skins/HVGA/arrow_left.png
Binary files differ
diff --git a/tools/emulator/skins/HVGA/arrow_right.png b/tools/emulator/skins/HVGA/arrow_right.png
new file mode 100644
index 0000000..4cbc65d
--- /dev/null
+++ b/tools/emulator/skins/HVGA/arrow_right.png
Binary files differ
diff --git a/tools/emulator/skins/HVGA/arrow_up.png b/tools/emulator/skins/HVGA/arrow_up.png
new file mode 100644
index 0000000..29c7121
--- /dev/null
+++ b/tools/emulator/skins/HVGA/arrow_up.png
Binary files differ
diff --git a/tools/emulator/skins/HVGA/background_land.png b/tools/emulator/skins/HVGA/background_land.png
new file mode 100644
index 0000000..09c857b
--- /dev/null
+++ b/tools/emulator/skins/HVGA/background_land.png
Binary files differ
diff --git a/tools/emulator/skins/HVGA/background_port.png b/tools/emulator/skins/HVGA/background_port.png
new file mode 100644
index 0000000..a452934
--- /dev/null
+++ b/tools/emulator/skins/HVGA/background_port.png
Binary files differ
diff --git a/tools/emulator/skins/HVGA/button.png b/tools/emulator/skins/HVGA/button.png
new file mode 100644
index 0000000..8281d20
--- /dev/null
+++ b/tools/emulator/skins/HVGA/button.png
Binary files differ
diff --git a/tools/emulator/skins/HVGA/controls.png b/tools/emulator/skins/HVGA/controls.png
new file mode 100644
index 0000000..04b85e2
--- /dev/null
+++ b/tools/emulator/skins/HVGA/controls.png
Binary files differ
diff --git a/tools/emulator/skins/HVGA/hardware.ini b/tools/emulator/skins/HVGA/hardware.ini
new file mode 100644
index 0000000..8de5e21
--- /dev/null
+++ b/tools/emulator/skins/HVGA/hardware.ini
@@ -0,0 +1,3 @@
+# skin-specific hardware values
+hw.lcd.density=160
+hw.ramSize=256
\ No newline at end of file
diff --git a/tools/emulator/skins/HVGA/key.png b/tools/emulator/skins/HVGA/key.png
new file mode 100644
index 0000000..40b03bf
--- /dev/null
+++ b/tools/emulator/skins/HVGA/key.png
Binary files differ
diff --git a/tools/emulator/skins/HVGA/keyboard.png b/tools/emulator/skins/HVGA/keyboard.png
new file mode 100644
index 0000000..ca49dcf
--- /dev/null
+++ b/tools/emulator/skins/HVGA/keyboard.png
Binary files differ
diff --git a/tools/emulator/skins/HVGA/layout b/tools/emulator/skins/HVGA/layout
new file mode 100644
index 0000000..cc82dde
--- /dev/null
+++ b/tools/emulator/skins/HVGA/layout
@@ -0,0 +1,443 @@
+parts {
+    portrait {
+        background {
+            image   background_port.png
+        }
+    }
+    landscape {
+        background {
+            image   background_land.png
+        }
+    }
+
+    device {
+        display {
+            width   320
+            height  480
+            x       0
+            y       0
+        }
+    }
+
+    controls {
+        background {
+            image   controls.png
+        }
+        buttons {
+            soft-left {
+                    image button.png
+                    x 56
+                    y 142
+            }
+            home {
+                    image button.png
+                    x 0
+                    y 142
+            }
+            back {
+                    image button.png
+                    x 112
+                    y 142
+            }
+            dpad-up {
+                    image arrow_up.png
+                    x 77
+                    y 53
+            }
+            dpad-down {
+                    image arrow_down.png
+                    x 77
+                    y 106
+            }
+            dpad-left {
+                    image arrow_left.png
+                    x 53
+                    y 53
+            }
+            dpad-right {
+                    image arrow_right.png
+                    x 123
+                    y 53
+            }
+            dpad-center {
+                    image select.png
+                    x 77
+                    y 81
+            }
+            phone-dial {
+                    image button.png
+                    x 0
+                    y 71
+            }
+            phone-hangup {
+                    image button.png
+                    x 168
+                    y 71
+            }
+
+            power {
+                    image button.png
+                    x 168
+                    y 0
+            }
+
+            volume-up {
+                    image button.png
+                    x 112
+                    y 0
+            }
+
+            volume-down {
+                    image button.png
+                    x 56
+                    y 0
+            }
+
+            search {
+                    image button.png
+                    x 168
+                    y 142
+            }
+
+        }
+    }
+
+    keyboard {
+        background {
+            image   keyboard.png
+        }
+        buttons {
+            1 {
+                image  key.png
+                x  5
+                y  5
+            }
+            2 {
+                image  key.png
+                x 42
+                y 5
+            }
+            3 {
+                image  key.png
+                x 79
+                y 5
+            }
+            4 {
+                image  key.png
+                x 116
+                y 5
+            }
+            5 {
+                image  key.png
+                x 153
+                y 5
+            }
+            6 {
+                image  key.png
+                x 190
+                y 5
+            }
+            7 {
+                image  key.png
+                x 227
+                y 5
+            }
+            8 {
+                image  key.png
+                x 264
+                y 5
+            }
+            9 {
+                image  key.png
+                x 301
+                y 5
+            }
+            0 {
+                image  key.png
+                x 338
+                y 5
+            }
+
+            q {
+                image  key.png
+                x  5
+                y  41
+            }
+            w {
+                image  key.png
+                x 42
+                y 41
+            }
+            e {
+                image  key.png
+                x 79
+                y 41
+            }
+            r {
+                image  key.png
+                x 116
+                y 41
+            }
+            t {
+                image  key.png
+                x 153
+                y 41
+            }
+            y {
+                image  key.png
+                x 190
+                y 41
+            }
+            u {
+                image  key.png
+                x 227
+                y 41
+            }
+            i {
+                image  key.png
+                x 264
+                y 41
+            }
+            o {
+                image  key.png
+                x 301
+                y 41
+            }
+            p {
+                image  key.png
+                x 338
+                y 41
+            }
+
+            a {
+                image  key.png
+                x  5
+                y 77
+            }
+            s {
+                image  key.png
+                x 42
+                y 77
+            }
+            d {
+                image  key.png
+                x 79
+                y 77
+            }
+            f {
+                image  key.png
+                x 116
+                y 77
+            }
+            g {
+                image  key.png
+                x 153
+                y 77
+            }
+            h {
+                image  key.png
+                x 190
+                y 77
+            }
+            j {
+                image  key.png
+                x 227
+                y 77
+            }
+            k {
+                image  key.png
+                x 264
+                y 77
+            }
+            l {
+                image  key.png
+                x 301
+                y 77
+            }
+            DEL {
+                image  key.png
+                x 338
+                y 77
+            }
+
+            CAP {
+                image  key.png
+                x  5
+                y 113
+            }
+            z {
+                image  key.png
+                x 42
+                y 113
+            }
+            x {
+                image  key.png
+                x 79
+                y 113
+            }
+            c {
+                image  key.png
+                x 116
+                y 113
+            }
+            v {
+                image  key.png
+                x 153
+                y 113
+            }
+            b {
+                image  key.png
+                x 190
+                y 113
+            }
+            n {
+                image  key.png
+                x 227
+                y 113
+            }
+            m {
+                image  key.png
+                x 264
+                y 113
+            }
+            PERIOD {
+                image  key.png
+                x 301
+                y 113
+            }
+            ENTER {
+                image  key.png
+                x 338
+                y 113
+            }
+
+            ALT {
+                image  key.png
+                x  5
+                y 149
+            }
+            SYM {
+                image  key.png
+                x 42
+                y 149
+            }
+            AT {
+                image  key.png
+                x 79
+                y 149
+            }
+            SPACE {
+                image  spacebar.png
+                x 116
+                y 149
+            }
+            SLASH {
+                image  key.png
+                x 264
+                y 149
+            }
+            COMMA {
+                image  key.png
+                x 301
+                y 149
+            }
+            ALT2 {
+                image  key.png
+                x 338
+                y 149
+            }
+
+        }
+    }
+}
+
+layouts {
+    portrait {
+        width     791
+        height    534
+        color     0xe0e0e0
+        event     EV_SW:0:1
+
+        part1 {
+            name    portrait
+            x       0
+            y       0
+        }
+
+        part2 {
+            name    landscape
+            x       800
+            y       0
+        }
+
+        part3 {
+            name    device
+            x       28
+            y       27
+        }
+        part4 {
+            name    controls
+            x       476
+            y       77
+        }
+        part5 {
+            name    keyboard
+            x       395
+            y       328
+        }
+
+    }
+
+    landscape {
+        width     640
+        height    601
+        color     0xe0e0e0
+        event     EV_SW:0:0
+
+        # the framework _always_ assume that the DPad
+        # has been physically rotated in landscape mode.
+        # however, with this skin, this is not the case
+        #
+        dpad-rotation 3
+
+        part1 {
+            name    portrait
+            x       800
+            y       0
+        }
+
+        part2 {
+            name    landscape
+            x       0
+            y       0
+        }
+
+        part3 {
+            name      device
+            x         80
+            y         349
+            rotation  3
+        }
+
+        part4 {
+            name     controls
+            x        410
+            y        396
+        }
+
+        part5 {
+            name     keyboard
+            x        18
+            y        396
+        }
+    }
+}
+
+keyboard {
+    charmap qwerty2
+}
+
+network {
+    speed  full
+    delay  none
+}
diff --git a/tools/emulator/skins/HVGA/select.png b/tools/emulator/skins/HVGA/select.png
new file mode 100644
index 0000000..f4a65d3
--- /dev/null
+++ b/tools/emulator/skins/HVGA/select.png
Binary files differ
diff --git a/tools/emulator/skins/HVGA/spacebar.png b/tools/emulator/skins/HVGA/spacebar.png
new file mode 100644
index 0000000..aa459bd
--- /dev/null
+++ b/tools/emulator/skins/HVGA/spacebar.png
Binary files differ
diff --git a/tools/emulator/skins/QVGA/arrow_down.png b/tools/emulator/skins/QVGA/arrow_down.png
new file mode 100644
index 0000000..b9fde22
--- /dev/null
+++ b/tools/emulator/skins/QVGA/arrow_down.png
Binary files differ
diff --git a/tools/emulator/skins/QVGA/arrow_left.png b/tools/emulator/skins/QVGA/arrow_left.png
new file mode 100644
index 0000000..281b192
--- /dev/null
+++ b/tools/emulator/skins/QVGA/arrow_left.png
Binary files differ
diff --git a/tools/emulator/skins/QVGA/arrow_right.png b/tools/emulator/skins/QVGA/arrow_right.png
new file mode 100644
index 0000000..4cbc65d
--- /dev/null
+++ b/tools/emulator/skins/QVGA/arrow_right.png
Binary files differ
diff --git a/tools/emulator/skins/QVGA/arrow_up.png b/tools/emulator/skins/QVGA/arrow_up.png
new file mode 100644
index 0000000..29c7121
--- /dev/null
+++ b/tools/emulator/skins/QVGA/arrow_up.png
Binary files differ
diff --git a/tools/emulator/skins/QVGA/background_land.png b/tools/emulator/skins/QVGA/background_land.png
new file mode 100644
index 0000000..cb002b5
--- /dev/null
+++ b/tools/emulator/skins/QVGA/background_land.png
Binary files differ
diff --git a/tools/emulator/skins/QVGA/background_port.png b/tools/emulator/skins/QVGA/background_port.png
new file mode 100644
index 0000000..6728562
--- /dev/null
+++ b/tools/emulator/skins/QVGA/background_port.png
Binary files differ
diff --git a/tools/emulator/skins/QVGA/button.png b/tools/emulator/skins/QVGA/button.png
new file mode 100644
index 0000000..8281d20
--- /dev/null
+++ b/tools/emulator/skins/QVGA/button.png
Binary files differ
diff --git a/tools/emulator/skins/QVGA/controls.png b/tools/emulator/skins/QVGA/controls.png
new file mode 100644
index 0000000..04b85e2
--- /dev/null
+++ b/tools/emulator/skins/QVGA/controls.png
Binary files differ
diff --git a/tools/emulator/skins/QVGA/hardware.ini b/tools/emulator/skins/QVGA/hardware.ini
new file mode 100644
index 0000000..1421893
--- /dev/null
+++ b/tools/emulator/skins/QVGA/hardware.ini
@@ -0,0 +1,3 @@
+# skin-specific hardware values
+hw.lcd.density=120
+hw.ramSize=256
diff --git a/tools/emulator/skins/QVGA/key.png b/tools/emulator/skins/QVGA/key.png
new file mode 100644
index 0000000..40b03bf
--- /dev/null
+++ b/tools/emulator/skins/QVGA/key.png
Binary files differ
diff --git a/tools/emulator/skins/QVGA/keyboard.png b/tools/emulator/skins/QVGA/keyboard.png
new file mode 100644
index 0000000..ca49dcf
--- /dev/null
+++ b/tools/emulator/skins/QVGA/keyboard.png
Binary files differ
diff --git a/tools/emulator/skins/QVGA/layout b/tools/emulator/skins/QVGA/layout
new file mode 100644
index 0000000..96f2133
--- /dev/null
+++ b/tools/emulator/skins/QVGA/layout
@@ -0,0 +1,439 @@
+parts {
+    portrait {
+        background {
+            image   background_port.png
+        }
+    }
+    landscape {
+        background {
+            image   background_land.png
+        }
+    }
+
+    device {
+        display {
+            width   240
+            height  320
+            x       0
+            y       0
+        }
+    }
+    
+    controls {
+        background {
+            image   controls.png
+        }
+        buttons {
+            soft-left {
+                    image button.png
+                    x 56
+                    y 142
+            }
+            home {
+                    image button.png
+                    x 0
+                    y 142
+            }
+            back {
+                    image button.png
+                    x 112
+                    y 142
+            }
+            dpad-up {
+                    image arrow_up.png
+                    x 77
+                    y 53
+            }
+            dpad-down {
+                    image arrow_down.png
+                    x 77
+                    y 106
+            }
+            dpad-left {
+                    image arrow_left.png
+                    x 53
+                    y 53
+            }
+            dpad-right {
+                    image arrow_right.png
+                    x 123
+                    y 53
+            }
+            dpad-center {
+                    image select.png
+                    x 77
+                    y 81
+            }
+            phone-dial {
+                    image button.png
+                    x 0
+                    y 71
+            }
+            phone-hangup {
+                    image button.png
+                    x 168
+                    y 71
+            }
+
+            power {
+                    image button.png
+                    x 168
+                    y 0
+            }
+
+            volume-up {
+                    image button.png
+                    x 112
+                    y 0
+            }
+
+            volume-down {
+                    image button.png
+                    x 56
+                    y 0
+            }
+
+            search {
+                    image button.png
+                    x 168
+                    y 142
+            }
+
+        }
+    }
+
+    keyboard {
+        background {
+            image   keyboard.png
+        }
+        buttons {
+            1 {
+                image  key.png
+                x  5
+                y  5
+            }
+            2 {
+                image  key.png
+                x 42
+                y 5
+            }
+            3 {
+                image  key.png
+                x 79
+                y 5
+            }
+            4 {
+                image  key.png
+                x 116
+                y 5
+            }
+            5 {
+                image  key.png
+                x 153
+                y 5
+            }
+            6 {
+                image  key.png
+                x 190
+                y 5
+            }
+            7 {
+                image  key.png
+                x 227
+                y 5
+            }
+            8 {
+                image  key.png
+                x 264
+                y 5
+            }
+            9 {
+                image  key.png
+                x 301
+                y 5
+            }
+            0 {
+                image  key.png
+                x 338
+                y 5
+            }
+
+            q {
+                image  key.png
+                x  5
+                y  41
+            }
+            w {
+                image  key.png
+                x 42
+                y 41
+            }
+            e {
+                image  key.png
+                x 79
+                y 41
+            }
+            r {
+                image  key.png
+                x 116
+                y 41
+            }
+            t {
+                image  key.png
+                x 153
+                y 41
+            }
+            y {
+                image  key.png
+                x 190
+                y 41
+            }
+            u {
+                image  key.png
+                x 227
+                y 41
+            }
+            i {
+                image  key.png
+                x 264
+                y 41
+            }
+            o {
+                image  key.png
+                x 301
+                y 41
+            }
+            p {
+                image  key.png
+                x 338
+                y 41
+            }
+
+            a {
+                image  key.png
+                x  5
+                y 77
+            }
+            s {
+                image  key.png
+                x 42
+                y 77
+            }
+            d {
+                image  key.png
+                x 79
+                y 77
+            }
+            f {
+                image  key.png
+                x 116
+                y 77
+            }
+            g {
+                image  key.png
+                x 153
+                y 77
+            }
+            h {
+                image  key.png
+                x 190
+                y 77
+            }
+            j {
+                image  key.png
+                x 227
+                y 77
+            }
+            k {
+                image  key.png
+                x 264
+                y 77
+            }
+            l {
+                image  key.png
+                x 301
+                y 77
+            }
+            DEL {
+                image  key.png
+                x 338
+                y 77
+            }
+
+            CAP {
+                image  key.png
+                x  5
+                y 113
+            }
+            z {
+                image  key.png
+                x 42
+                y 113
+            }
+            x {
+                image  key.png
+                x 79
+                y 113
+            }
+            c {
+                image  key.png
+                x 116
+                y 113
+            }
+            v {
+                image  key.png
+                x 153
+                y 113
+            }
+            b {
+                image  key.png
+                x 190
+                y 113
+            }
+            n {
+                image  key.png
+                x 227
+                y 113
+            }
+            m {
+                image  key.png
+                x 264
+                y 113
+            }
+            PERIOD {
+                image  key.png
+                x 301
+                y 113
+            }
+            ENTER {
+                image  key.png
+                x 338
+                y 113
+            }
+
+            ALT {
+                image  key.png
+                x  5
+                y 149
+            }
+            SYM {
+                image  key.png
+                x 42
+                y 149
+            }
+            AT {
+                image  key.png
+                x 79
+                y 149
+            }
+            SPACE {
+                image  spacebar.png
+                x 116
+                y 149
+            }
+            SLASH {
+                image  key.png
+                x 264
+                y 149
+            }
+            COMMA {
+                image  key.png
+                x 301
+                y 149
+            }
+            ALT2 {
+                image  key.png
+                x 338
+                y 149
+            }
+
+        }
+    }
+}
+
+layouts {
+    portrait {
+        width     711
+        height    435
+        color     0xe0e0e0
+        event     EV_SW:0:1
+        
+        part1 {
+            name    portrait
+            x       0
+            y       0
+        }
+
+        part2 {
+            name    landscape
+            x       800
+            y       0
+        }
+
+        part3 {
+            name    device
+            x       28
+            y       58
+        }
+        part4 {
+            name     controls
+            x        396
+            y        27
+        }
+        part5 {
+            name     keyboard
+            x        315
+            y        229
+        }
+    }
+
+    landscape {
+        width     640
+        height    522
+        color     0xe0e0e0
+        event     EV_SW:0:0
+
+        dpad-rotation 3
+
+
+        part1 {
+            name    portrait
+            x       800
+            y       0
+        }
+
+        part2 {
+            name    landscape
+            x       0
+            y       0
+        }
+
+        part3 {
+            name      device
+            x         160
+            y         270
+            rotation  3
+        }
+
+        part4 {
+            name     controls
+            x        410
+            y        317
+        }
+
+        part5 {
+            name     keyboard
+            x        18
+            y        317
+        }
+    }
+}
+
+keyboard {
+    charmap qwerty2
+}
+
+network {
+    speed  full
+    delay  none
+}
diff --git a/tools/emulator/skins/QVGA/select.png b/tools/emulator/skins/QVGA/select.png
new file mode 100644
index 0000000..f4a65d3
--- /dev/null
+++ b/tools/emulator/skins/QVGA/select.png
Binary files differ
diff --git a/tools/emulator/skins/QVGA/spacebar.png b/tools/emulator/skins/QVGA/spacebar.png
new file mode 100644
index 0000000..aa459bd
--- /dev/null
+++ b/tools/emulator/skins/QVGA/spacebar.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA400/arrow_down.png b/tools/emulator/skins/WQVGA400/arrow_down.png
new file mode 100644
index 0000000..b9fde22
--- /dev/null
+++ b/tools/emulator/skins/WQVGA400/arrow_down.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA400/arrow_left.png b/tools/emulator/skins/WQVGA400/arrow_left.png
new file mode 100644
index 0000000..281b192
--- /dev/null
+++ b/tools/emulator/skins/WQVGA400/arrow_left.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA400/arrow_right.png b/tools/emulator/skins/WQVGA400/arrow_right.png
new file mode 100644
index 0000000..4cbc65d
--- /dev/null
+++ b/tools/emulator/skins/WQVGA400/arrow_right.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA400/arrow_up.png b/tools/emulator/skins/WQVGA400/arrow_up.png
new file mode 100644
index 0000000..29c7121
--- /dev/null
+++ b/tools/emulator/skins/WQVGA400/arrow_up.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA400/background_land.png b/tools/emulator/skins/WQVGA400/background_land.png
new file mode 100644
index 0000000..c3fbee9
--- /dev/null
+++ b/tools/emulator/skins/WQVGA400/background_land.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA400/background_port.png b/tools/emulator/skins/WQVGA400/background_port.png
new file mode 100644
index 0000000..c88edb8
--- /dev/null
+++ b/tools/emulator/skins/WQVGA400/background_port.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA400/button.png b/tools/emulator/skins/WQVGA400/button.png
new file mode 100644
index 0000000..8281d20
--- /dev/null
+++ b/tools/emulator/skins/WQVGA400/button.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA400/controls.png b/tools/emulator/skins/WQVGA400/controls.png
new file mode 100644
index 0000000..04b85e2
--- /dev/null
+++ b/tools/emulator/skins/WQVGA400/controls.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA400/hardware.ini b/tools/emulator/skins/WQVGA400/hardware.ini
new file mode 100644
index 0000000..1421893
--- /dev/null
+++ b/tools/emulator/skins/WQVGA400/hardware.ini
@@ -0,0 +1,3 @@
+# skin-specific hardware values
+hw.lcd.density=120
+hw.ramSize=256
diff --git a/tools/emulator/skins/WQVGA400/key.png b/tools/emulator/skins/WQVGA400/key.png
new file mode 100644
index 0000000..40b03bf
--- /dev/null
+++ b/tools/emulator/skins/WQVGA400/key.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA400/keyboard.png b/tools/emulator/skins/WQVGA400/keyboard.png
new file mode 100644
index 0000000..ca49dcf
--- /dev/null
+++ b/tools/emulator/skins/WQVGA400/keyboard.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA400/layout b/tools/emulator/skins/WQVGA400/layout
new file mode 100644
index 0000000..4d71adf
--- /dev/null
+++ b/tools/emulator/skins/WQVGA400/layout
@@ -0,0 +1,438 @@
+parts {
+    portrait {
+        background {
+            image   background_port.png
+        }
+    }
+    landscape {
+        background {
+            image   background_land.png
+        }
+    }
+
+    device {
+        display {
+            width   240
+            height  400
+            x       0
+            y       0
+        }
+    }
+    
+    controls {
+        background {
+            image   controls.png
+        }
+        buttons {
+            soft-left {
+                    image button.png
+                    x 56
+                    y 142
+            }
+            home {
+                    image button.png
+                    x 0
+                    y 142
+            }
+            back {
+                    image button.png
+                    x 112
+                    y 142
+            }
+            dpad-up {
+                    image arrow_up.png
+                    x 77
+                    y 53
+            }
+            dpad-down {
+                    image arrow_down.png
+                    x 77
+                    y 106
+            }
+            dpad-left {
+                    image arrow_left.png
+                    x 53
+                    y 53
+            }
+            dpad-right {
+                    image arrow_right.png
+                    x 123
+                    y 53
+            }
+            dpad-center {
+                    image select.png
+                    x 77
+                    y 81
+            }
+            phone-dial {
+                    image button.png
+                    x 0
+                    y 71
+            }
+            phone-hangup {
+                    image button.png
+                    x 168
+                    y 71
+            }
+
+            power {
+                    image button.png
+                    x 168
+                    y 0
+            }
+
+            volume-up {
+                    image button.png
+                    x 112
+                    y 0
+            }
+
+            volume-down {
+                    image button.png
+                    x 56
+                    y 0
+            }
+
+            search {
+                    image button.png
+                    x 168
+                    y 142
+            }
+
+        }
+    }
+
+    keyboard {
+        background {
+            image   keyboard.png
+        }
+        buttons {
+            1 {
+                image  key.png
+                x  5
+                y  5
+            }
+            2 {
+                image  key.png
+                x 42
+                y 5
+            }
+            3 {
+                image  key.png
+                x 79
+                y 5
+            }
+            4 {
+                image  key.png
+                x 116
+                y 5
+            }
+            5 {
+                image  key.png
+                x 153
+                y 5
+            }
+            6 {
+                image  key.png
+                x 190
+                y 5
+            }
+            7 {
+                image  key.png
+                x 227
+                y 5
+            }
+            8 {
+                image  key.png
+                x 264
+                y 5
+            }
+            9 {
+                image  key.png
+                x 301
+                y 5
+            }
+            0 {
+                image  key.png
+                x 338
+                y 5
+            }
+
+            q {
+                image  key.png
+                x  5
+                y  41
+            }
+            w {
+                image  key.png
+                x 42
+                y 41
+            }
+            e {
+                image  key.png
+                x 79
+                y 41
+            }
+            r {
+                image  key.png
+                x 116
+                y 41
+            }
+            t {
+                image  key.png
+                x 153
+                y 41
+            }
+            y {
+                image  key.png
+                x 190
+                y 41
+            }
+            u {
+                image  key.png
+                x 227
+                y 41
+            }
+            i {
+                image  key.png
+                x 264
+                y 41
+            }
+            o {
+                image  key.png
+                x 301
+                y 41
+            }
+            p {
+                image  key.png
+                x 338
+                y 41
+            }
+
+            a {
+                image  key.png
+                x  5
+                y 77
+            }
+            s {
+                image  key.png
+                x 42
+                y 77
+            }
+            d {
+                image  key.png
+                x 79
+                y 77
+            }
+            f {
+                image  key.png
+                x 116
+                y 77
+            }
+            g {
+                image  key.png
+                x 153
+                y 77
+            }
+            h {
+                image  key.png
+                x 190
+                y 77
+            }
+            j {
+                image  key.png
+                x 227
+                y 77
+            }
+            k {
+                image  key.png
+                x 264
+                y 77
+            }
+            l {
+                image  key.png
+                x 301
+                y 77
+            }
+            DEL {
+                image  key.png
+                x 338
+                y 77
+            }
+
+            CAP {
+                image  key.png
+                x  5
+                y 113
+            }
+            z {
+                image  key.png
+                x 42
+                y 113
+            }
+            x {
+                image  key.png
+                x 79
+                y 113
+            }
+            c {
+                image  key.png
+                x 116
+                y 113
+            }
+            v {
+                image  key.png
+                x 153
+                y 113
+            }
+            b {
+                image  key.png
+                x 190
+                y 113
+            }
+            n {
+                image  key.png
+                x 227
+                y 113
+            }
+            m {
+                image  key.png
+                x 264
+                y 113
+            }
+            PERIOD {
+                image  key.png
+                x 301
+                y 113
+            }
+            ENTER {
+                image  key.png
+                x 338
+                y 113
+            }
+
+            ALT {
+                image  key.png
+                x  5
+                y 149
+            }
+            SYM {
+                image  key.png
+                x 42
+                y 149
+            }
+            AT {
+                image  key.png
+                x 79
+                y 149
+            }
+            SPACE {
+                image  spacebar.png
+                x 116
+                y 149
+            }
+            SLASH {
+                image  key.png
+                x 264
+                y 149
+            }
+            COMMA {
+                image  key.png
+                x 301
+                y 149
+            }
+            ALT2 {
+                image  key.png
+                x 338
+                y 149
+            }
+
+        }
+    }
+}
+
+layouts {
+    portrait {
+        width     711
+        height    454
+        color     0xe0e0e0
+        event     EV_SW:0:1
+        
+        part1 {
+            name    portrait
+            x       0
+            y       0
+        }
+
+        part2 {
+            name    landscape
+            x       800
+            y       0
+        }
+
+        part3 {
+            name    device
+            x       28
+            y       27
+        }
+        part4 {
+            name     controls
+            x        396
+            y        37
+        }
+        part5 {
+            name     keyboard
+            x        315
+            y        248
+        }
+    }
+
+    landscape {
+        width     640
+        height    522
+        color     0xe0e0e0
+        event     EV_SW:0:0
+
+        dpad-rotation 3
+
+        part1 {
+            name    portrait
+            x       800
+            y       0
+        }
+
+        part2 {
+            name    landscape
+            x       0
+            y       0
+        }
+
+        part3 {
+            name      device
+            x         120
+            y         270
+            rotation  3
+        }
+
+        part4 {
+            name     controls
+            x        410
+            y        317
+        }
+
+        part5 {
+            name     keyboard
+            x        18
+            y        317
+        }
+    }
+}
+
+keyboard {
+    charmap qwerty2
+}
+
+network {
+    speed  full
+    delay  none
+}
diff --git a/tools/emulator/skins/WQVGA400/select.png b/tools/emulator/skins/WQVGA400/select.png
new file mode 100644
index 0000000..f4a65d3
--- /dev/null
+++ b/tools/emulator/skins/WQVGA400/select.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA400/spacebar.png b/tools/emulator/skins/WQVGA400/spacebar.png
new file mode 100644
index 0000000..aa459bd
--- /dev/null
+++ b/tools/emulator/skins/WQVGA400/spacebar.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA432/arrow_down.png b/tools/emulator/skins/WQVGA432/arrow_down.png
new file mode 100644
index 0000000..b9fde22
--- /dev/null
+++ b/tools/emulator/skins/WQVGA432/arrow_down.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA432/arrow_left.png b/tools/emulator/skins/WQVGA432/arrow_left.png
new file mode 100644
index 0000000..281b192
--- /dev/null
+++ b/tools/emulator/skins/WQVGA432/arrow_left.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA432/arrow_right.png b/tools/emulator/skins/WQVGA432/arrow_right.png
new file mode 100644
index 0000000..4cbc65d
--- /dev/null
+++ b/tools/emulator/skins/WQVGA432/arrow_right.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA432/arrow_up.png b/tools/emulator/skins/WQVGA432/arrow_up.png
new file mode 100644
index 0000000..29c7121
--- /dev/null
+++ b/tools/emulator/skins/WQVGA432/arrow_up.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA432/background_land.png b/tools/emulator/skins/WQVGA432/background_land.png
new file mode 100644
index 0000000..1450e25
--- /dev/null
+++ b/tools/emulator/skins/WQVGA432/background_land.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA432/background_port.png b/tools/emulator/skins/WQVGA432/background_port.png
new file mode 100644
index 0000000..891ab45
--- /dev/null
+++ b/tools/emulator/skins/WQVGA432/background_port.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA432/button.png b/tools/emulator/skins/WQVGA432/button.png
new file mode 100644
index 0000000..8281d20
--- /dev/null
+++ b/tools/emulator/skins/WQVGA432/button.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA432/controls.png b/tools/emulator/skins/WQVGA432/controls.png
new file mode 100644
index 0000000..04b85e2
--- /dev/null
+++ b/tools/emulator/skins/WQVGA432/controls.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA432/hardware.ini b/tools/emulator/skins/WQVGA432/hardware.ini
new file mode 100644
index 0000000..1421893
--- /dev/null
+++ b/tools/emulator/skins/WQVGA432/hardware.ini
@@ -0,0 +1,3 @@
+# skin-specific hardware values
+hw.lcd.density=120
+hw.ramSize=256
diff --git a/tools/emulator/skins/WQVGA432/key.png b/tools/emulator/skins/WQVGA432/key.png
new file mode 100644
index 0000000..40b03bf
--- /dev/null
+++ b/tools/emulator/skins/WQVGA432/key.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA432/keyboard.png b/tools/emulator/skins/WQVGA432/keyboard.png
new file mode 100644
index 0000000..ca49dcf
--- /dev/null
+++ b/tools/emulator/skins/WQVGA432/keyboard.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA432/layout b/tools/emulator/skins/WQVGA432/layout
new file mode 100644
index 0000000..006e955
--- /dev/null
+++ b/tools/emulator/skins/WQVGA432/layout
@@ -0,0 +1,438 @@
+parts {
+    portrait {
+        background {
+            image   background_port.png
+        }
+    }
+    landscape {
+        background {
+            image   background_land.png
+        }
+    }
+
+    device {
+        display {
+            width   240
+            height  432
+            x       0
+            y       0
+        }
+    }
+    
+    controls {
+        background {
+            image   controls.png
+        }
+        buttons {
+            soft-left {
+                    image button.png
+                    x 56
+                    y 142
+            }
+            home {
+                    image button.png
+                    x 0
+                    y 142
+            }
+            back {
+                    image button.png
+                    x 112
+                    y 142
+            }
+            dpad-up {
+                    image arrow_up.png
+                    x 77
+                    y 53
+            }
+            dpad-down {
+                    image arrow_down.png
+                    x 77
+                    y 106
+            }
+            dpad-left {
+                    image arrow_left.png
+                    x 53
+                    y 53
+            }
+            dpad-right {
+                    image arrow_right.png
+                    x 123
+                    y 53
+            }
+            dpad-center {
+                    image select.png
+                    x 77
+                    y 81
+            }
+            phone-dial {
+                    image button.png
+                    x 0
+                    y 71
+            }
+            phone-hangup {
+                    image button.png
+                    x 168
+                    y 71
+            }
+
+            power {
+                    image button.png
+                    x 168
+                    y 0
+            }
+
+            volume-up {
+                    image button.png
+                    x 112
+                    y 0
+            }
+
+            volume-down {
+                    image button.png
+                    x 56
+                    y 0
+            }
+
+            search {
+                    image button.png
+                    x 168
+                    y 142
+            }
+
+        }
+    }
+
+    keyboard {
+        background {
+            image   keyboard.png
+        }
+        buttons {
+            1 {
+                image  key.png
+                x  5
+                y  5
+            }
+            2 {
+                image  key.png
+                x 42
+                y 5
+            }
+            3 {
+                image  key.png
+                x 79
+                y 5
+            }
+            4 {
+                image  key.png
+                x 116
+                y 5
+            }
+            5 {
+                image  key.png
+                x 153
+                y 5
+            }
+            6 {
+                image  key.png
+                x 190
+                y 5
+            }
+            7 {
+                image  key.png
+                x 227
+                y 5
+            }
+            8 {
+                image  key.png
+                x 264
+                y 5
+            }
+            9 {
+                image  key.png
+                x 301
+                y 5
+            }
+            0 {
+                image  key.png
+                x 338
+                y 5
+            }
+
+            q {
+                image  key.png
+                x  5
+                y  41
+            }
+            w {
+                image  key.png
+                x 42
+                y 41
+            }
+            e {
+                image  key.png
+                x 79
+                y 41
+            }
+            r {
+                image  key.png
+                x 116
+                y 41
+            }
+            t {
+                image  key.png
+                x 153
+                y 41
+            }
+            y {
+                image  key.png
+                x 190
+                y 41
+            }
+            u {
+                image  key.png
+                x 227
+                y 41
+            }
+            i {
+                image  key.png
+                x 264
+                y 41
+            }
+            o {
+                image  key.png
+                x 301
+                y 41
+            }
+            p {
+                image  key.png
+                x 338
+                y 41
+            }
+
+            a {
+                image  key.png
+                x  5
+                y 77
+            }
+            s {
+                image  key.png
+                x 42
+                y 77
+            }
+            d {
+                image  key.png
+                x 79
+                y 77
+            }
+            f {
+                image  key.png
+                x 116
+                y 77
+            }
+            g {
+                image  key.png
+                x 153
+                y 77
+            }
+            h {
+                image  key.png
+                x 190
+                y 77
+            }
+            j {
+                image  key.png
+                x 227
+                y 77
+            }
+            k {
+                image  key.png
+                x 264
+                y 77
+            }
+            l {
+                image  key.png
+                x 301
+                y 77
+            }
+            DEL {
+                image  key.png
+                x 338
+                y 77
+            }
+
+            CAP {
+                image  key.png
+                x  5
+                y 113
+            }
+            z {
+                image  key.png
+                x 42
+                y 113
+            }
+            x {
+                image  key.png
+                x 79
+                y 113
+            }
+            c {
+                image  key.png
+                x 116
+                y 113
+            }
+            v {
+                image  key.png
+                x 153
+                y 113
+            }
+            b {
+                image  key.png
+                x 190
+                y 113
+            }
+            n {
+                image  key.png
+                x 227
+                y 113
+            }
+            m {
+                image  key.png
+                x 264
+                y 113
+            }
+            PERIOD {
+                image  key.png
+                x 301
+                y 113
+            }
+            ENTER {
+                image  key.png
+                x 338
+                y 113
+            }
+
+            ALT {
+                image  key.png
+                x  5
+                y 149
+            }
+            SYM {
+                image  key.png
+                x 42
+                y 149
+            }
+            AT {
+                image  key.png
+                x 79
+                y 149
+            }
+            SPACE {
+                image  spacebar.png
+                x 116
+                y 149
+            }
+            SLASH {
+                image  key.png
+                x 264
+                y 149
+            }
+            COMMA {
+                image  key.png
+                x 301
+                y 149
+            }
+            ALT2 {
+                image  key.png
+                x 338
+                y 149
+            }
+
+        }
+    }
+}
+
+layouts {
+    portrait {
+        width     711
+        height    486
+        color     0xe0e0e0
+        event     EV_SW:0:1
+        
+        part1 {
+            name    portrait
+            x       0
+            y       0
+        }
+
+        part2 {
+            name    landscape
+            x       800
+            y       0
+        }
+
+        part3 {
+            name    device
+            x       28
+            y       27
+        }
+        part4 {
+            name     controls
+            x        396
+            y        53
+        }
+        part5 {
+            name     keyboard
+            x        315
+            y        280
+        }
+    }
+
+    landscape {
+        width     640
+        height    522
+        color     0xe0e0e0
+        event     EV_SW:0:0
+
+        dpad-rotation 3
+
+        part1 {
+            name    portrait
+            x       800
+            y       0
+        }
+
+        part2 {
+            name    landscape
+            x       0
+            y       0
+        }
+
+        part3 {
+            name      device
+            x         104
+            y         270
+            rotation  3
+        }
+
+        part4 {
+            name     controls
+            x        410
+            y        317
+        }
+
+        part5 {
+            name     keyboard
+            x        18
+            y        317
+        }
+    }
+}
+
+keyboard {
+    charmap qwerty2
+}
+
+network {
+    speed  full
+    delay  none
+}
diff --git a/tools/emulator/skins/WQVGA432/select.png b/tools/emulator/skins/WQVGA432/select.png
new file mode 100644
index 0000000..f4a65d3
--- /dev/null
+++ b/tools/emulator/skins/WQVGA432/select.png
Binary files differ
diff --git a/tools/emulator/skins/WQVGA432/spacebar.png b/tools/emulator/skins/WQVGA432/spacebar.png
new file mode 100644
index 0000000..aa459bd
--- /dev/null
+++ b/tools/emulator/skins/WQVGA432/spacebar.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA800/arrow_down.png b/tools/emulator/skins/WVGA800/arrow_down.png
new file mode 100644
index 0000000..b9fde22
--- /dev/null
+++ b/tools/emulator/skins/WVGA800/arrow_down.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA800/arrow_left.png b/tools/emulator/skins/WVGA800/arrow_left.png
new file mode 100644
index 0000000..281b192
--- /dev/null
+++ b/tools/emulator/skins/WVGA800/arrow_left.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA800/arrow_right.png b/tools/emulator/skins/WVGA800/arrow_right.png
new file mode 100644
index 0000000..4cbc65d
--- /dev/null
+++ b/tools/emulator/skins/WVGA800/arrow_right.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA800/arrow_up.png b/tools/emulator/skins/WVGA800/arrow_up.png
new file mode 100644
index 0000000..29c7121
--- /dev/null
+++ b/tools/emulator/skins/WVGA800/arrow_up.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA800/background_land.png b/tools/emulator/skins/WVGA800/background_land.png
new file mode 100644
index 0000000..4967717
--- /dev/null
+++ b/tools/emulator/skins/WVGA800/background_land.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA800/background_port.png b/tools/emulator/skins/WVGA800/background_port.png
new file mode 100644
index 0000000..13ef2ea
--- /dev/null
+++ b/tools/emulator/skins/WVGA800/background_port.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA800/button.png b/tools/emulator/skins/WVGA800/button.png
new file mode 100644
index 0000000..8281d20
--- /dev/null
+++ b/tools/emulator/skins/WVGA800/button.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA800/controls.png b/tools/emulator/skins/WVGA800/controls.png
new file mode 100644
index 0000000..04b85e2
--- /dev/null
+++ b/tools/emulator/skins/WVGA800/controls.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA800/hardware.ini b/tools/emulator/skins/WVGA800/hardware.ini
new file mode 100644
index 0000000..19e3b35
--- /dev/null
+++ b/tools/emulator/skins/WVGA800/hardware.ini
@@ -0,0 +1,4 @@
+# skin-specific hardware values
+hw.lcd.density=240
+vm.heapSize=24
+hw.ramSize=256
\ No newline at end of file
diff --git a/tools/emulator/skins/WVGA800/key.png b/tools/emulator/skins/WVGA800/key.png
new file mode 100644
index 0000000..40b03bf
--- /dev/null
+++ b/tools/emulator/skins/WVGA800/key.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA800/keyboard.png b/tools/emulator/skins/WVGA800/keyboard.png
new file mode 100644
index 0000000..ca49dcf
--- /dev/null
+++ b/tools/emulator/skins/WVGA800/keyboard.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA800/layout b/tools/emulator/skins/WVGA800/layout
new file mode 100644
index 0000000..63647f3
--- /dev/null
+++ b/tools/emulator/skins/WVGA800/layout
@@ -0,0 +1,439 @@
+parts {
+    portrait {
+        background {
+            image   background_port.png
+        }
+    }
+    landscape {
+        background {
+            image   background_land.png
+        }
+    }
+
+    device {
+        display {
+            width   480
+            height  800
+            x       0
+            y       0
+        }
+    }
+    
+    controls {
+        background {
+            image   controls.png
+        }
+        buttons {
+            soft-left {
+                    image button.png
+                    x 56
+                    y 142
+            }
+            home {
+                    image button.png
+                    x 0
+                    y 142
+            }
+            back {
+                    image button.png
+                    x 112
+                    y 142
+            }
+            dpad-up {
+                    image arrow_up.png
+                    x 77
+                    y 53
+            }
+            dpad-down {
+                    image arrow_down.png
+                    x 77
+                    y 106
+            }
+            dpad-left {
+                    image arrow_left.png
+                    x 53
+                    y 53
+            }
+            dpad-right {
+                    image arrow_right.png
+                    x 123
+                    y 53
+            }
+            dpad-center {
+                    image select.png
+                    x 77
+                    y 81
+            }
+            phone-dial {
+                    image button.png
+                    x 0
+                    y 71
+            }
+            phone-hangup {
+                    image button.png
+                    x 168
+                    y 71
+            }
+
+            power {
+                    image button.png
+                    x 168
+                    y 0
+            }
+
+            volume-up {
+                    image button.png
+                    x 112
+                    y 0
+            }
+
+            volume-down {
+                    image button.png
+                    x 56
+                    y 0
+            }
+
+            search {
+                    image button.png
+                    x 168
+                    y 142
+            }
+
+        }
+    }
+
+    keyboard {
+        background {
+            image   keyboard.png
+        }
+        buttons {
+            1 {
+                image  key.png
+                x  5
+                y  5
+            }
+            2 {
+                image  key.png
+                x 42
+                y 5
+            }
+            3 {
+                image  key.png
+                x 79
+                y 5
+            }
+            4 {
+                image  key.png
+                x 116
+                y 5
+            }
+            5 {
+                image  key.png
+                x 153
+                y 5
+            }
+            6 {
+                image  key.png
+                x 190
+                y 5
+            }
+            7 {
+                image  key.png
+                x 227
+                y 5
+            }
+            8 {
+                image  key.png
+                x 264
+                y 5
+            }
+            9 {
+                image  key.png
+                x 301
+                y 5
+            }
+            0 {
+                image  key.png
+                x 338
+                y 5
+            }
+
+            q {
+                image  key.png
+                x  5
+                y  41
+            }
+            w {
+                image  key.png
+                x 42
+                y 41
+            }
+            e {
+                image  key.png
+                x 79
+                y 41
+            }
+            r {
+                image  key.png
+                x 116
+                y 41
+            }
+            t {
+                image  key.png
+                x 153
+                y 41
+            }
+            y {
+                image  key.png
+                x 190
+                y 41
+            }
+            u {
+                image  key.png
+                x 227
+                y 41
+            }
+            i {
+                image  key.png
+                x 264
+                y 41
+            }
+            o {
+                image  key.png
+                x 301
+                y 41
+            }
+            p {
+                image  key.png
+                x 338
+                y 41
+            }
+
+            a {
+                image  key.png
+                x  5
+                y 77
+            }
+            s {
+                image  key.png
+                x 42
+                y 77
+            }
+            d {
+                image  key.png
+                x 79
+                y 77
+            }
+            f {
+                image  key.png
+                x 116
+                y 77
+            }
+            g {
+                image  key.png
+                x 153
+                y 77
+            }
+            h {
+                image  key.png
+                x 190
+                y 77
+            }
+            j {
+                image  key.png
+                x 227
+                y 77
+            }
+            k {
+                image  key.png
+                x 264
+                y 77
+            }
+            l {
+                image  key.png
+                x 301
+                y 77
+            }
+            DEL {
+                image  key.png
+                x 338
+                y 77
+            }
+
+            CAP {
+                image  key.png
+                x  5
+                y 113
+            }
+            z {
+                image  key.png
+                x 42
+                y 113
+            }
+            x {
+                image  key.png
+                x 79
+                y 113
+            }
+            c {
+                image  key.png
+                x 116
+                y 113
+            }
+            v {
+                image  key.png
+                x 153
+                y 113
+            }
+            b {
+                image  key.png
+                x 190
+                y 113
+            }
+            n {
+                image  key.png
+                x 227
+                y 113
+            }
+            m {
+                image  key.png
+                x 264
+                y 113
+            }
+            PERIOD {
+                image  key.png
+                x 301
+                y 113
+            }
+            ENTER {
+                image  key.png
+                x 338
+                y 113
+            }
+
+            ALT {
+                image  key.png
+                x  5
+                y 149
+            }
+            SYM {
+                image  key.png
+                x 42
+                y 149
+            }
+            AT {
+                image  key.png
+                x 79
+                y 149
+            }
+            SPACE {
+                image  spacebar.png
+                x 116
+                y 149
+            }
+            SLASH {
+                image  key.png
+                x 264
+                y 149
+            }
+            COMMA {
+                image  key.png
+                x 301
+                y 149
+            }
+            ALT2 {
+                image  key.png
+                x 338
+                y 149
+            }
+
+        }
+    }
+}
+
+layouts {
+    portrait {
+        width     950
+        height    854
+        color     0xe0e0e0
+        event     EV_SW:0:1
+        
+        part1 {
+            name    portrait
+            x       0
+            y       0
+        }
+
+        part2 {
+            name    landscape
+            x       1000
+            y       0
+        }
+
+        part3 {
+            name    device
+            x       27
+            y       27
+        }
+        part4 {
+            name    controls
+            x       635
+            y       207
+        }
+        part5 {
+            name    keyboard
+            x       554
+            y       459
+        }
+
+    }
+
+    landscape {
+        width     853
+        height    761
+        color     0xe0e0e0
+        event     EV_SW:0:0
+
+        dpad-rotation 3
+
+        part1 {
+            name    portrait
+            x       900
+            y       0
+        }
+
+        part2 {
+            name    landscape
+            x       0
+            y       0
+        }
+
+        part3 {
+            name      device
+            x         26
+            y         509
+            rotation  3
+        }
+
+        part4 {
+            name     controls
+            x        539
+            y        556
+        }
+
+        part5 {
+            name     keyboard
+            x        98
+            y        556
+        }
+    }
+}
+
+keyboard {
+    charmap qwerty2
+}
+
+network {
+    speed  full
+    delay  none
+}
diff --git a/tools/emulator/skins/WVGA800/select.png b/tools/emulator/skins/WVGA800/select.png
new file mode 100644
index 0000000..f4a65d3
--- /dev/null
+++ b/tools/emulator/skins/WVGA800/select.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA800/spacebar.png b/tools/emulator/skins/WVGA800/spacebar.png
new file mode 100644
index 0000000..aa459bd
--- /dev/null
+++ b/tools/emulator/skins/WVGA800/spacebar.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA854/arrow_down.png b/tools/emulator/skins/WVGA854/arrow_down.png
new file mode 100644
index 0000000..b9fde22
--- /dev/null
+++ b/tools/emulator/skins/WVGA854/arrow_down.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA854/arrow_left.png b/tools/emulator/skins/WVGA854/arrow_left.png
new file mode 100644
index 0000000..281b192
--- /dev/null
+++ b/tools/emulator/skins/WVGA854/arrow_left.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA854/arrow_right.png b/tools/emulator/skins/WVGA854/arrow_right.png
new file mode 100644
index 0000000..4cbc65d
--- /dev/null
+++ b/tools/emulator/skins/WVGA854/arrow_right.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA854/arrow_up.png b/tools/emulator/skins/WVGA854/arrow_up.png
new file mode 100644
index 0000000..29c7121
--- /dev/null
+++ b/tools/emulator/skins/WVGA854/arrow_up.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA854/background_land.png b/tools/emulator/skins/WVGA854/background_land.png
new file mode 100644
index 0000000..4f0f90e
--- /dev/null
+++ b/tools/emulator/skins/WVGA854/background_land.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA854/background_port.png b/tools/emulator/skins/WVGA854/background_port.png
new file mode 100644
index 0000000..e35bf67
--- /dev/null
+++ b/tools/emulator/skins/WVGA854/background_port.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA854/button.png b/tools/emulator/skins/WVGA854/button.png
new file mode 100644
index 0000000..8281d20
--- /dev/null
+++ b/tools/emulator/skins/WVGA854/button.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA854/controls.png b/tools/emulator/skins/WVGA854/controls.png
new file mode 100644
index 0000000..04b85e2
--- /dev/null
+++ b/tools/emulator/skins/WVGA854/controls.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA854/hardware.ini b/tools/emulator/skins/WVGA854/hardware.ini
new file mode 100644
index 0000000..9434288
--- /dev/null
+++ b/tools/emulator/skins/WVGA854/hardware.ini
@@ -0,0 +1,4 @@
+# skin-specific hardware values
+hw.lcd.density=240
+vm.heapSize=24
+hw.ramSize=256
diff --git a/tools/emulator/skins/WVGA854/key.png b/tools/emulator/skins/WVGA854/key.png
new file mode 100644
index 0000000..40b03bf
--- /dev/null
+++ b/tools/emulator/skins/WVGA854/key.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA854/keyboard.png b/tools/emulator/skins/WVGA854/keyboard.png
new file mode 100644
index 0000000..ca49dcf
--- /dev/null
+++ b/tools/emulator/skins/WVGA854/keyboard.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA854/layout b/tools/emulator/skins/WVGA854/layout
new file mode 100644
index 0000000..b086ddc
--- /dev/null
+++ b/tools/emulator/skins/WVGA854/layout
@@ -0,0 +1,439 @@
+parts {
+    portrait {
+        background {
+            image   background_port.png
+        }
+    }
+    landscape {
+        background {
+            image   background_land.png
+        }
+    }
+
+    device {
+        display {
+            width   480
+            height  854
+            x       0
+            y       0
+        }
+    }
+    
+    controls {
+        background {
+            image   controls.png
+        }
+        buttons {
+            soft-left {
+                    image button.png
+                    x 56
+                    y 142
+            }
+            home {
+                    image button.png
+                    x 0
+                    y 142
+            }
+            back {
+                    image button.png
+                    x 112
+                    y 142
+            }
+            dpad-up {
+                    image arrow_up.png
+                    x 77
+                    y 53
+            }
+            dpad-down {
+                    image arrow_down.png
+                    x 77
+                    y 106
+            }
+            dpad-left {
+                    image arrow_left.png
+                    x 53
+                    y 53
+            }
+            dpad-right {
+                    image arrow_right.png
+                    x 123
+                    y 53
+            }
+            dpad-center {
+                    image select.png
+                    x 77
+                    y 81
+            }
+            phone-dial {
+                    image button.png
+                    x 0
+                    y 71
+            }
+            phone-hangup {
+                    image button.png
+                    x 168
+                    y 71
+            }
+
+            power {
+                    image button.png
+                    x 168
+                    y 0
+            }
+
+            volume-up {
+                    image button.png
+                    x 112
+                    y 0
+            }
+
+            volume-down {
+                    image button.png
+                    x 56
+                    y 0
+            }
+
+            search {
+                    image button.png
+                    x 168
+                    y 142
+            }
+
+        }
+    }
+
+    keyboard {
+        background {
+            image   keyboard.png
+        }
+        buttons {
+            1 {
+                image  key.png
+                x  5
+                y  5
+            }
+            2 {
+                image  key.png
+                x 42
+                y 5
+            }
+            3 {
+                image  key.png
+                x 79
+                y 5
+            }
+            4 {
+                image  key.png
+                x 116
+                y 5
+            }
+            5 {
+                image  key.png
+                x 153
+                y 5
+            }
+            6 {
+                image  key.png
+                x 190
+                y 5
+            }
+            7 {
+                image  key.png
+                x 227
+                y 5
+            }
+            8 {
+                image  key.png
+                x 264
+                y 5
+            }
+            9 {
+                image  key.png
+                x 301
+                y 5
+            }
+            0 {
+                image  key.png
+                x 338
+                y 5
+            }
+
+            q {
+                image  key.png
+                x  5
+                y  41
+            }
+            w {
+                image  key.png
+                x 42
+                y 41
+            }
+            e {
+                image  key.png
+                x 79
+                y 41
+            }
+            r {
+                image  key.png
+                x 116
+                y 41
+            }
+            t {
+                image  key.png
+                x 153
+                y 41
+            }
+            y {
+                image  key.png
+                x 190
+                y 41
+            }
+            u {
+                image  key.png
+                x 227
+                y 41
+            }
+            i {
+                image  key.png
+                x 264
+                y 41
+            }
+            o {
+                image  key.png
+                x 301
+                y 41
+            }
+            p {
+                image  key.png
+                x 338
+                y 41
+            }
+
+            a {
+                image  key.png
+                x  5
+                y 77
+            }
+            s {
+                image  key.png
+                x 42
+                y 77
+            }
+            d {
+                image  key.png
+                x 79
+                y 77
+            }
+            f {
+                image  key.png
+                x 116
+                y 77
+            }
+            g {
+                image  key.png
+                x 153
+                y 77
+            }
+            h {
+                image  key.png
+                x 190
+                y 77
+            }
+            j {
+                image  key.png
+                x 227
+                y 77
+            }
+            k {
+                image  key.png
+                x 264
+                y 77
+            }
+            l {
+                image  key.png
+                x 301
+                y 77
+            }
+            DEL {
+                image  key.png
+                x 338
+                y 77
+            }
+
+            CAP {
+                image  key.png
+                x  5
+                y 113
+            }
+            z {
+                image  key.png
+                x 42
+                y 113
+            }
+            x {
+                image  key.png
+                x 79
+                y 113
+            }
+            c {
+                image  key.png
+                x 116
+                y 113
+            }
+            v {
+                image  key.png
+                x 153
+                y 113
+            }
+            b {
+                image  key.png
+                x 190
+                y 113
+            }
+            n {
+                image  key.png
+                x 227
+                y 113
+            }
+            m {
+                image  key.png
+                x 264
+                y 113
+            }
+            PERIOD {
+                image  key.png
+                x 301
+                y 113
+            }
+            ENTER {
+                image  key.png
+                x 338
+                y 113
+            }
+
+            ALT {
+                image  key.png
+                x  5
+                y 149
+            }
+            SYM {
+                image  key.png
+                x 42
+                y 149
+            }
+            AT {
+                image  key.png
+                x 79
+                y 149
+            }
+            SPACE {
+                image  spacebar.png
+                x 116
+                y 149
+            }
+            SLASH {
+                image  key.png
+                x 264
+                y 149
+            }
+            COMMA {
+                image  key.png
+                x 301
+                y 149
+            }
+            ALT2 {
+                image  key.png
+                x 338
+                y 149
+            }
+
+        }
+    }
+}
+
+layouts {
+    portrait {
+        width     950
+        height    908
+        color     0xe0e0e0
+        event     EV_SW:0:1
+        
+        part1 {
+            name    portrait
+            x       0
+            y       0
+        }
+
+        part2 {
+            name    landscape
+            x       1000
+            y       0
+        }
+
+        part3 {
+            name    device
+            x       27
+            y       27
+        }
+        part4 {
+            name    controls
+            x       635
+            y       234
+        }
+        part5 {
+            name    keyboard
+            x       554
+            y       486
+        }
+
+    }
+
+    landscape {
+        width     907
+        height    761
+        color     0xe0e0e0
+        event     EV_SW:0:0
+
+        dpad-rotation 3
+
+        part1 {
+            name    portrait
+            x       900
+            y       0
+        }
+
+        part2 {
+            name    landscape
+            x       0
+            y       0
+        }
+
+        part3 {
+            name      device
+            x         26
+            y         509
+            rotation  3
+        }
+
+        part4 {
+            name     controls
+            x        567
+            y        556
+        }
+
+        part5 {
+            name     keyboard
+            x        126
+            y        556
+        }
+    }
+}
+
+keyboard {
+    charmap qwerty2
+}
+
+network {
+    speed  full
+    delay  none
+}
diff --git a/tools/emulator/skins/WVGA854/select.png b/tools/emulator/skins/WVGA854/select.png
new file mode 100644
index 0000000..f4a65d3
--- /dev/null
+++ b/tools/emulator/skins/WVGA854/select.png
Binary files differ
diff --git a/tools/emulator/skins/WVGA854/spacebar.png b/tools/emulator/skins/WVGA854/spacebar.png
new file mode 100644
index 0000000..aa459bd
--- /dev/null
+++ b/tools/emulator/skins/WVGA854/spacebar.png
Binary files differ