diff -urN Original_4.4.4_r1/packages/apps/a1/AndroidManifest.xml AndroidSource/packages/apps/a1/AndroidManifest.xml
--- Original_4.4.4_r1/packages/apps/a1/AndroidManifest.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/AndroidManifest.xml	2015-11-25 17:26:36.000000000 +0900
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.a1"
+    android:versionCode="1"
+    android:versionName="1.0" >
+
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+
+    <uses-sdk
+        android:minSdkVersion="19"
+        android:targetSdkVersion="19" />
+
+    <application
+        android:allowBackup="true"
+        android:icon="@drawable/ic_launcher"
+        android:label="@string/app_name"
+        android:theme="@style/AppTheme" >
+        <receiver android:name="com.example.aa.StartMyServiceAtBootReceiver" >
+            <intent-filter>
+                <action android:name="android.intent.action.BOOT_COMPLETED" />
+            </intent-filter>
+        </receiver>
+
+        <service
+            android:name="com.example.aa.MainActivity"
+            android:enabled="true" />
+        <!-- <activity -->
+        <!-- android:name="com.example.aa.MainActivity" -->
+        <!-- android:label="@string/app_name" > -->
+        <!-- <intent-filter> -->
+        <!-- <action android:name="android.intent.action.MAIN" /> -->
+
+
+        <!-- <category android:name="android.intent.category.LAUNCHER" /> -->
+        <!-- </intent-filter> -->
+
+
+        <!-- </activity> -->
+    </application>
+
+</manifest>
\ No newline at end of file
diff -urN Original_4.4.4_r1/packages/apps/a1/Android.mk AndroidSource/packages/apps/a1/Android.mk
--- Original_4.4.4_r1/packages/apps/a1/Android.mk	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/Android.mk	2015-11-25 17:27:50.000000000 +0900
@@ -0,0 +1,18 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := a1 
+LOCAL_CERTIFICATE := platform
+LOCAL_PRIVILEGED_MODULE := true
+
+include $(BUILD_PACKAGE)
+
+include $(call all-makefiles-under, $(LOCAL_PATH))
+
+
+
+
diff -urN Original_4.4.4_r1/packages/apps/a1/Android.mk~ AndroidSource/packages/apps/a1/Android.mk~
--- Original_4.4.4_r1/packages/apps/a1/Android.mk~	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/Android.mk~	2015-01-09 00:26:12.000000000 +0900
@@ -0,0 +1,18 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := TestApp 
+LOCAL_CERTIFICATE := platform
+LOCAL_PRIVILEGED_MODULE := true
+
+include $(BUILD_PACKAGE)
+
+include $(call all-makefiles-under, $(LOCAL_PATH))
+
+
+
+
Binary files Original_4.4.4_r1/packages/apps/a1/bin/a1.apk and AndroidSource/packages/apps/a1/bin/a1.apk differ
diff -urN Original_4.4.4_r1/packages/apps/a1/bin/AndroidManifest.xml AndroidSource/packages/apps/a1/bin/AndroidManifest.xml
--- Original_4.4.4_r1/packages/apps/a1/bin/AndroidManifest.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/bin/AndroidManifest.xml	2015-11-25 17:26:36.000000000 +0900
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.a1"
+    android:versionCode="1"
+    android:versionName="1.0" >
+
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+
+    <uses-sdk
+        android:minSdkVersion="19"
+        android:targetSdkVersion="19" />
+
+    <application
+        android:allowBackup="true"
+        android:icon="@drawable/ic_launcher"
+        android:label="@string/app_name"
+        android:theme="@style/AppTheme" >
+        <receiver android:name="com.example.aa.StartMyServiceAtBootReceiver" >
+            <intent-filter>
+                <action android:name="android.intent.action.BOOT_COMPLETED" />
+            </intent-filter>
+        </receiver>
+
+        <service
+            android:name="com.example.aa.MainActivity"
+            android:enabled="true" />
+        <!-- <activity -->
+        <!-- android:name="com.example.aa.MainActivity" -->
+        <!-- android:label="@string/app_name" > -->
+        <!-- <intent-filter> -->
+        <!-- <action android:name="android.intent.action.MAIN" /> -->
+
+
+        <!-- <category android:name="android.intent.category.LAUNCHER" /> -->
+        <!-- </intent-filter> -->
+
+
+        <!-- </activity> -->
+    </application>
+
+</manifest>
\ No newline at end of file
Binary files Original_4.4.4_r1/packages/apps/a1/bin/classes/com/example/a1/BuildConfig.class and AndroidSource/packages/apps/a1/bin/classes/com/example/a1/BuildConfig.class differ
Binary files Original_4.4.4_r1/packages/apps/a1/bin/classes/com/example/a1/R$attr.class and AndroidSource/packages/apps/a1/bin/classes/com/example/a1/R$attr.class differ
Binary files Original_4.4.4_r1/packages/apps/a1/bin/classes/com/example/a1/R.class and AndroidSource/packages/apps/a1/bin/classes/com/example/a1/R.class differ
Binary files Original_4.4.4_r1/packages/apps/a1/bin/classes/com/example/a1/R$dimen.class and AndroidSource/packages/apps/a1/bin/classes/com/example/a1/R$dimen.class differ
Binary files Original_4.4.4_r1/packages/apps/a1/bin/classes/com/example/a1/R$drawable.class and AndroidSource/packages/apps/a1/bin/classes/com/example/a1/R$drawable.class differ
Binary files Original_4.4.4_r1/packages/apps/a1/bin/classes/com/example/a1/R$id.class and AndroidSource/packages/apps/a1/bin/classes/com/example/a1/R$id.class differ
Binary files Original_4.4.4_r1/packages/apps/a1/bin/classes/com/example/a1/R$layout.class and AndroidSource/packages/apps/a1/bin/classes/com/example/a1/R$layout.class differ
Binary files Original_4.4.4_r1/packages/apps/a1/bin/classes/com/example/a1/R$menu.class and AndroidSource/packages/apps/a1/bin/classes/com/example/a1/R$menu.class differ
Binary files Original_4.4.4_r1/packages/apps/a1/bin/classes/com/example/a1/R$string.class and AndroidSource/packages/apps/a1/bin/classes/com/example/a1/R$string.class differ
Binary files Original_4.4.4_r1/packages/apps/a1/bin/classes/com/example/a1/R$style.class and AndroidSource/packages/apps/a1/bin/classes/com/example/a1/R$style.class differ
Binary files Original_4.4.4_r1/packages/apps/a1/bin/classes/com/example/aa/MainActivity.class and AndroidSource/packages/apps/a1/bin/classes/com/example/aa/MainActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/a1/bin/classes/com/example/aa/StartMyServiceAtBootReceiver.class and AndroidSource/packages/apps/a1/bin/classes/com/example/aa/StartMyServiceAtBootReceiver.class differ
Binary files Original_4.4.4_r1/packages/apps/a1/bin/classes.dex and AndroidSource/packages/apps/a1/bin/classes.dex differ
Binary files Original_4.4.4_r1/packages/apps/a1/bin/dexedLibs/android-support-v4-662f517e02939eb28de50a62c54df090.jar and AndroidSource/packages/apps/a1/bin/dexedLibs/android-support-v4-662f517e02939eb28de50a62c54df090.jar differ
Binary files Original_4.4.4_r1/packages/apps/a1/bin/dexedLibs/android-support-v4-664e038797163c322951976646a5b761.jar and AndroidSource/packages/apps/a1/bin/dexedLibs/android-support-v4-664e038797163c322951976646a5b761.jar differ
diff -urN Original_4.4.4_r1/packages/apps/a1/bin/jarlist.cache AndroidSource/packages/apps/a1/bin/jarlist.cache
--- Original_4.4.4_r1/packages/apps/a1/bin/jarlist.cache	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/bin/jarlist.cache	2015-11-25 14:28:46.000000000 +0900
@@ -0,0 +1,3 @@
+# cache for current jar dependency. DO NOT EDIT.
+# format is <lastModified> <length> <SHA-1> <path>
+# Encoding is UTF-8
Binary files Original_4.4.4_r1/packages/apps/a1/bin/res/crunch/drawable-hdpi/ic_launcher.png and AndroidSource/packages/apps/a1/bin/res/crunch/drawable-hdpi/ic_launcher.png differ
Binary files Original_4.4.4_r1/packages/apps/a1/bin/res/crunch/drawable-mdpi/ic_launcher.png and AndroidSource/packages/apps/a1/bin/res/crunch/drawable-mdpi/ic_launcher.png differ
Binary files Original_4.4.4_r1/packages/apps/a1/bin/res/crunch/drawable-xhdpi/ic_launcher.png and AndroidSource/packages/apps/a1/bin/res/crunch/drawable-xhdpi/ic_launcher.png differ
Binary files Original_4.4.4_r1/packages/apps/a1/bin/res/crunch/drawable-xxhdpi/ic_launcher.png and AndroidSource/packages/apps/a1/bin/res/crunch/drawable-xxhdpi/ic_launcher.png differ
Binary files Original_4.4.4_r1/packages/apps/a1/bin/resources.ap_ and AndroidSource/packages/apps/a1/bin/resources.ap_ differ
diff -urN Original_4.4.4_r1/packages/apps/a1/.classpath AndroidSource/packages/apps/a1/.classpath
--- Original_4.4.4_r1/packages/apps/a1/.classpath	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/.classpath	2015-05-12 12:44:40.000000000 +0900
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="gen"/>
+	<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
+	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
+	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
+	<classpathentry kind="output" path="bin/classes"/>
+</classpath>
diff -urN Original_4.4.4_r1/packages/apps/a1/gen/com/example/a1/BuildConfig.java AndroidSource/packages/apps/a1/gen/com/example/a1/BuildConfig.java
--- Original_4.4.4_r1/packages/apps/a1/gen/com/example/a1/BuildConfig.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/gen/com/example/a1/BuildConfig.java	2015-11-25 14:28:52.000000000 +0900
@@ -0,0 +1,6 @@
+/** Automatically generated file. DO NOT MODIFY */
+package com.example.a1;
+
+public final class BuildConfig {
+    public final static boolean DEBUG = true;
+}
\ No newline at end of file
diff -urN Original_4.4.4_r1/packages/apps/a1/gen/com/example/a1/R.java AndroidSource/packages/apps/a1/gen/com/example/a1/R.java
--- Original_4.4.4_r1/packages/apps/a1/gen/com/example/a1/R.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/gen/com/example/a1/R.java	2015-11-25 17:26:36.000000000 +0900
@@ -0,0 +1,71 @@
+/* AUTO-GENERATED FILE.  DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * aapt tool from the resource data it found.  It
+ * should not be modified by hand.
+ */
+
+package com.example.a1;
+
+public final class R {
+    public static final class attr {
+    }
+    public static final class dimen {
+        /**  Default screen margins, per the Android Design guidelines. 
+
+         Example customization of dimensions originally defined in res/values/dimens.xml
+         (such as screen margins) for screens with more than 820dp of available width. This
+         would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively).
+    
+         */
+        public static final int activity_horizontal_margin=0x7f040000;
+        public static final int activity_vertical_margin=0x7f040001;
+    }
+    public static final class drawable {
+        public static final int ic_launcher=0x7f020000;
+    }
+    public static final class id {
+        public static final int action_settings=0x7f080002;
+        public static final int button1=0x7f080001;
+        public static final int textView1=0x7f080000;
+    }
+    public static final class layout {
+        public static final int activity_main=0x7f030000;
+    }
+    public static final class menu {
+        public static final int main=0x7f070000;
+    }
+    public static final class string {
+        public static final int action_settings=0x7f050002;
+        public static final int app_name=0x7f050000;
+        public static final int hello_world=0x7f050001;
+    }
+    public static final class style {
+        /** 
+        Base application theme, dependent on API level. This theme is replaced
+        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
+    
+
+            Theme customizations available in newer API levels can go in
+            res/values-vXX/styles.xml, while customizations related to
+            backward-compatibility can go here.
+        
+
+        Base application theme for API 11+. This theme completely replaces
+        AppBaseTheme from res/values/styles.xml on API 11+ devices.
+    
+ API 11 theme customizations can go here. 
+
+        Base application theme for API 14+. This theme completely replaces
+        AppBaseTheme from BOTH res/values/styles.xml and
+        res/values-v11/styles.xml on API 14+ devices.
+    
+ API 14 theme customizations can go here. 
+         */
+        public static final int AppBaseTheme=0x7f060000;
+        /**  Application theme. 
+ All customizations that are NOT specific to a particular API-level can go here. 
+         */
+        public static final int AppTheme=0x7f060001;
+    }
+}
Binary files Original_4.4.4_r1/packages/apps/a1/ic_launcher-web.png and AndroidSource/packages/apps/a1/ic_launcher-web.png differ
Binary files Original_4.4.4_r1/packages/apps/a1/libs/android-support-v4.jar and AndroidSource/packages/apps/a1/libs/android-support-v4.jar differ
diff -urN Original_4.4.4_r1/packages/apps/a1/proguard-project.txt AndroidSource/packages/apps/a1/proguard-project.txt
--- Original_4.4.4_r1/packages/apps/a1/proguard-project.txt	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/proguard-project.txt	2015-05-12 12:44:38.000000000 +0900
@@ -0,0 +1,20 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
diff -urN Original_4.4.4_r1/packages/apps/a1/.project AndroidSource/packages/apps/a1/.project
--- Original_4.4.4_r1/packages/apps/a1/.project	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/.project	2015-05-12 12:44:38.000000000 +0900
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>a1</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.ApkBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff -urN Original_4.4.4_r1/packages/apps/a1/project.properties AndroidSource/packages/apps/a1/project.properties
--- Original_4.4.4_r1/packages/apps/a1/project.properties	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/project.properties	2015-05-12 12:44:40.000000000 +0900
@@ -0,0 +1,14 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-19
Binary files Original_4.4.4_r1/packages/apps/a1/res/drawable-hdpi/ic_launcher.png and AndroidSource/packages/apps/a1/res/drawable-hdpi/ic_launcher.png differ
Binary files Original_4.4.4_r1/packages/apps/a1/res/drawable-mdpi/ic_launcher.png and AndroidSource/packages/apps/a1/res/drawable-mdpi/ic_launcher.png differ
Binary files Original_4.4.4_r1/packages/apps/a1/res/drawable-xhdpi/ic_launcher.png and AndroidSource/packages/apps/a1/res/drawable-xhdpi/ic_launcher.png differ
Binary files Original_4.4.4_r1/packages/apps/a1/res/drawable-xxhdpi/ic_launcher.png and AndroidSource/packages/apps/a1/res/drawable-xxhdpi/ic_launcher.png differ
diff -urN Original_4.4.4_r1/packages/apps/a1/res/layout/activity_main.xml AndroidSource/packages/apps/a1/res/layout/activity_main.xml
--- Original_4.4.4_r1/packages/apps/a1/res/layout/activity_main.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/res/layout/activity_main.xml	2015-11-25 18:04:22.000000000 +0900
@@ -0,0 +1,29 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    tools:context="com.example.aa.MainActivity" >
+
+    
+    
+    <TextView
+        android:id="@+id/textView1"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/hello_world" />
+
+    <Button
+        android:id="@+id/button1"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignLeft="@+id/textView1"
+        android:layout_below="@+id/textView1"
+        android:layout_marginLeft="38dp"
+        android:layout_marginTop="20dp"
+        android:text="@string/hello_world" />
+
+</RelativeLayout>
diff -urN Original_4.4.4_r1/packages/apps/a1/res/layout/activity_main.xml~ AndroidSource/packages/apps/a1/res/layout/activity_main.xml~
--- Original_4.4.4_r1/packages/apps/a1/res/layout/activity_main.xml~	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/res/layout/activity_main.xml~	2015-05-12 16:37:16.000000000 +0900
@@ -0,0 +1,29 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    tools:context="com.example.aa.MainActivity" >
+
+    
+    
+    <TextView
+        android:id="@+id/textView1"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/hello_world" />
+
+    <Button
+        android:id="@+id/button1"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignLeft="@+id/textView1"
+        android:layout_below="@+id/textView1"
+        android:layout_marginLeft="38dp"
+        android:layout_marginTop="20dp"
+        android:text="Client" />
+
+</RelativeLayout>
\ No newline at end of file
diff -urN Original_4.4.4_r1/packages/apps/a1/res/menu/main.xml AndroidSource/packages/apps/a1/res/menu/main.xml
--- Original_4.4.4_r1/packages/apps/a1/res/menu/main.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/res/menu/main.xml	2015-05-12 12:44:40.000000000 +0900
@@ -0,0 +1,11 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:context="com.example.a1.MainActivity" >
+
+    <item
+        android:id="@+id/action_settings"
+        android:orderInCategory="100"
+        android:showAsAction="never"
+        android:title="@string/action_settings"/>
+
+</menu>
diff -urN Original_4.4.4_r1/packages/apps/a1/res/values/dimens.xml AndroidSource/packages/apps/a1/res/values/dimens.xml
--- Original_4.4.4_r1/packages/apps/a1/res/values/dimens.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/res/values/dimens.xml	2015-05-12 12:44:40.000000000 +0900
@@ -0,0 +1,7 @@
+<resources>
+
+    <!-- Default screen margins, per the Android Design guidelines. -->
+    <dimen name="activity_horizontal_margin">16dp</dimen>
+    <dimen name="activity_vertical_margin">16dp</dimen>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/a1/res/values/strings.xml AndroidSource/packages/apps/a1/res/values/strings.xml
--- Original_4.4.4_r1/packages/apps/a1/res/values/strings.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/res/values/strings.xml	2015-05-12 12:44:40.000000000 +0900
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <string name="app_name">a1</string>
+    <string name="hello_world">Hello world!</string>
+    <string name="action_settings">Settings</string>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/a1/res/values/styles.xml AndroidSource/packages/apps/a1/res/values/styles.xml
--- Original_4.4.4_r1/packages/apps/a1/res/values/styles.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/res/values/styles.xml	2015-05-12 12:44:40.000000000 +0900
@@ -0,0 +1,20 @@
+<resources>
+
+    <!--
+        Base application theme, dependent on API level. This theme is replaced
+        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Light">
+        <!--
+            Theme customizations available in newer API levels can go in
+            res/values-vXX/styles.xml, while customizations related to
+            backward-compatibility can go here.
+        -->
+    </style>
+
+    <!-- Application theme. -->
+    <style name="AppTheme" parent="AppBaseTheme">
+        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
+    </style>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/a1/res/values-v11/styles.xml AndroidSource/packages/apps/a1/res/values-v11/styles.xml
--- Original_4.4.4_r1/packages/apps/a1/res/values-v11/styles.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/res/values-v11/styles.xml	2015-05-12 12:44:40.000000000 +0900
@@ -0,0 +1,11 @@
+<resources>
+
+    <!--
+        Base application theme for API 11+. This theme completely replaces
+        AppBaseTheme from res/values/styles.xml on API 11+ devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
+        <!-- API 11 theme customizations can go here. -->
+    </style>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/a1/res/values-v14/styles.xml AndroidSource/packages/apps/a1/res/values-v14/styles.xml
--- Original_4.4.4_r1/packages/apps/a1/res/values-v14/styles.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/res/values-v14/styles.xml	2015-05-12 12:44:40.000000000 +0900
@@ -0,0 +1,12 @@
+<resources>
+
+    <!--
+        Base application theme for API 14+. This theme completely replaces
+        AppBaseTheme from BOTH res/values/styles.xml and
+        res/values-v11/styles.xml on API 14+ devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
+        <!-- API 14 theme customizations can go here. -->
+    </style>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/a1/res/values-w820dp/dimens.xml AndroidSource/packages/apps/a1/res/values-w820dp/dimens.xml
--- Original_4.4.4_r1/packages/apps/a1/res/values-w820dp/dimens.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/res/values-w820dp/dimens.xml	2015-05-12 12:44:40.000000000 +0900
@@ -0,0 +1,10 @@
+<resources>
+
+    <!--
+         Example customization of dimensions originally defined in res/values/dimens.xml
+         (such as screen margins) for screens with more than 820dp of available width. This
+         would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively).
+    -->
+    <dimen name="activity_horizontal_margin">64dp</dimen>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/a1/src/com/example/aa/MainActivity.java AndroidSource/packages/apps/a1/src/com/example/aa/MainActivity.java
--- Original_4.4.4_r1/packages/apps/a1/src/com/example/aa/MainActivity.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/src/com/example/aa/MainActivity.java	2015-11-25 17:24:46.000000000 +0900
@@ -0,0 +1,40 @@
+package com.example.aa;
+
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+import java.io.OutputStream;
+import java.net.InetAddress;
+import java.net.Socket;
+import java.util.List;
+
+import com.example.a1.R;
+
+import android.app.Activity;
+import android.app.Service;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.media.MediaCodec;
+import android.media.MediaExtractor;
+import android.media.MediaFormat;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiManager;
+import android.os.Bundle;
+import android.os.Environment;
+import android.os.IBinder;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+
+public class MainActivity extends Service {
+	private final String TAG = "TAG";
+	
+    @Override
+    public IBinder onBind(Intent arg0) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+}
diff -urN Original_4.4.4_r1/packages/apps/a1/src/com/example/aa/StartMyServiceAtBootReceiver.java AndroidSource/packages/apps/a1/src/com/example/aa/StartMyServiceAtBootReceiver.java
--- Original_4.4.4_r1/packages/apps/a1/src/com/example/aa/StartMyServiceAtBootReceiver.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/src/com/example/aa/StartMyServiceAtBootReceiver.java	2015-11-27 15:24:04.000000000 +0900
@@ -0,0 +1,48 @@
+package com.example.aa;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiManager;
+
+import java.util.List;
+
+public class StartMyServiceAtBootReceiver extends BroadcastReceiver {
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
+            saveWpaConfig(context, "dcslab5G", "dcslab2014", false);
+        }
+    }
+    
+    public static void saveWpaConfig(Context context, String SSID, String Passphrase, boolean Hidden)
+    {
+        WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
+        if (!wifiManager.isWifiEnabled())
+        wifiManager.setWifiEnabled(true);
+        
+        try {
+            Thread.sleep(2000);
+        } catch (InterruptedException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        
+        // setup a wifi configuration
+        WifiConfiguration wc = new WifiConfiguration();
+        wc.SSID = "\""+SSID+"\"";
+        wc.preSharedKey = "\""+Passphrase+"\"";
+        wc.status = WifiConfiguration.Status.ENABLED;
+        wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
+        wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
+        wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
+        wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
+        wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
+        wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
+        // connect to and enable the connection
+        int netId = wifiManager.addNetwork(wc);
+        wifiManager.enableNetwork(netId, true);
+        wifiManager.setWifiEnabled(true);
+    }
+}
diff -urN Original_4.4.4_r1/packages/apps/a1/src/com/example/aa/StartMyServiceAtBootReceiver.java~ AndroidSource/packages/apps/a1/src/com/example/aa/StartMyServiceAtBootReceiver.java~
--- Original_4.4.4_r1/packages/apps/a1/src/com/example/aa/StartMyServiceAtBootReceiver.java~	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/a1/src/com/example/aa/StartMyServiceAtBootReceiver.java~	2015-11-27 15:23:54.000000000 +0900
@@ -0,0 +1,54 @@
+package com.example.aa;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiManager;
+
+import java.util.List;
+
+public class StartMyServiceAtBootReceiver extends BroadcastReceiver {
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
+            try {
+                Thread.sleep(3000);
+            } catch (InterruptedException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+            saveWpaConfig(context, "dcslab5G", "dcslab2014", false);
+        }
+    }
+    
+    public static void saveWpaConfig(Context context, String SSID, String Passphrase, boolean Hidden)
+    {
+        WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
+        if (!wifiManager.isWifiEnabled())
+        wifiManager.setWifiEnabled(true);
+        
+        try {
+            Thread.sleep(2000);
+        } catch (InterruptedException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        
+        // setup a wifi configuration
+        WifiConfiguration wc = new WifiConfiguration();
+        wc.SSID = "\""+SSID+"\"";
+        wc.preSharedKey = "\""+Passphrase+"\"";
+        wc.status = WifiConfiguration.Status.ENABLED;
+        wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
+        wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
+        wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
+        wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
+        wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
+        wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
+        // connect to and enable the connection
+        int netId = wifiManager.addNetwork(wc);
+        wifiManager.enableNetwork(netId, true);
+        wifiManager.setWifiEnabled(true);
+    }
+}
diff -urN Original_4.4.4_r1/packages/apps/Settings/AndroidManifest.xml AndroidSource/packages/apps/Settings/AndroidManifest.xml
--- Original_4.4.4_r1/packages/apps/Settings/AndroidManifest.xml	2016-01-29 15:12:43.007488000 +0900
+++ AndroidSource/packages/apps/Settings/AndroidManifest.xml	2016-01-05 18:58:39.000000000 +0900
@@ -261,6 +261,27 @@
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
             </intent-filter>
         </activity-alias>
+        
+        <!-- CollaboRoid Settings -->
+        <activity android:name="Settings$CollaboRoidSettingsActivity"
+                android:uiOptions="splitActionBarWhenNarrow"
+                android:taskAffinity=""
+                android:label="@string/collaboroid_settings"
+                android:configChanges="orientation|keyboardHidden|screenSize"
+                android:excludeFromRecents="true">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <action android:name="android.settings.WIFI_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <category android:name="android.intent.category.VOICE_LAUNCH" />
+                <category android:name="com.android.settings.SHORTCUT" />
+            </intent-filter>
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                android:value="com.android.settings.collaboroid.CollaboRoidSettings" />
+            <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+                android:resource="@id/collaboroid_settings" />
+        </activity>
+                
 
         <activity android:name="ApnSettings"
                 android:label="@string/apn_settings"
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accessibility/AccessibilitySettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accessibility/AccessibilitySettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accessibility/AccessibilityUtils.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accessibility/AccessibilityUtils.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accessibility/CaptionPropertiesFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accessibility/CaptionPropertiesFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accessibility/ColorPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accessibility/ColorPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accessibility/EdgeTypePreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accessibility/EdgeTypePreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accessibility/ListDialogPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accessibility/ListDialogPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accessibility/ListDialogPreference$ListPreferenceAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accessibility/ListDialogPreference$ListPreferenceAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accessibility/ListDialogPreference$OnValueChangedListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accessibility/ListDialogPreference$OnValueChangedListener.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accessibility/ListDialogPreference$SavedState.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accessibility/ListDialogPreference$SavedState.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accessibility/LocalePreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accessibility/LocalePreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accessibility/LocalePreference$LocaleInfo.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accessibility/LocalePreference$LocaleInfo.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accessibility/PresetPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accessibility/PresetPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accessibility/SettingsContentObserver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accessibility/SettingsContentObserver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accessibility/ToggleGlobalGesturePreferenceFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accessibility/ToggleGlobalGesturePreferenceFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accessibility/ToggleSwitch.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accessibility/ToggleSwitch.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accessibility/ToggleSwitch$OnBeforeCheckedChangeListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accessibility/ToggleSwitch$OnBeforeCheckedChangeListener.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/AccountPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/AccountPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accounts/AccountPreferenceBase.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accounts/AccountPreferenceBase.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accounts/AccountSyncSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accounts/AccountSyncSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accounts/AddAccountSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accounts/AddAccountSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accounts/AuthenticatorHelper.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accounts/AuthenticatorHelper.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accounts/ChooseAccountActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accounts/ChooseAccountActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accounts/ChooseAccountActivity$ProviderEntry.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accounts/ChooseAccountActivity$ProviderEntry.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accounts/ManageAccountsSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accounts/ManageAccountsSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accounts/ManageAccountsSettings$FragmentStarter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accounts/ManageAccountsSettings$FragmentStarter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accounts/ProviderPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accounts/ProviderPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accounts/SyncSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accounts/SyncSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accounts/SyncSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accounts/SyncSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/accounts/SyncStateCheckBoxPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/accounts/SyncStateCheckBoxPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ActivityPicker.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ActivityPicker.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ActivityPicker$EmptyDrawable.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ActivityPicker$EmptyDrawable.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ActivityPicker$IconResizer.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ActivityPicker$IconResizer.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ActivityPicker$PickAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ActivityPicker$PickAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ActivityPicker$PickAdapter$Item.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ActivityPicker$PickAdapter$Item.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/AirplaneModeEnabler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/AirplaneModeEnabler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/AllowBindAppWidgetActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/AllowBindAppWidgetActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ApnEditor.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ApnEditor.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ApnPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ApnPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ApnSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ApnSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ApnSettings$RestoreApnProcessHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ApnSettings$RestoreApnProcessHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ApnSettings$RestoreApnUiHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ApnSettings$RestoreApnUiHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/AppClickListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/AppClickListener.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/ApplicationsState$AppEntry.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/ApplicationsState$AppEntry.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/ApplicationsState$AppFilter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/ApplicationsState$AppFilter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/ApplicationsState$BackgroundHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/ApplicationsState$BackgroundHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/ApplicationsState$Callbacks.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/ApplicationsState$Callbacks.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/ApplicationsState.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/ApplicationsState.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/ApplicationsState$MainHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/ApplicationsState$MainHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/ApplicationsState$PackageIntentReceiver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/ApplicationsState$PackageIntentReceiver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/ApplicationsState$Session.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/ApplicationsState$Session.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/ApplicationsState$SizeInfo.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/ApplicationsState$SizeInfo.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/AppOpsCategory$AppListAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/AppOpsCategory$AppListAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/AppOpsCategory$AppListLoader.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/AppOpsCategory$AppListLoader.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/AppOpsCategory.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/AppOpsCategory.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/AppOpsCategory$InterestingConfigChanges.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/AppOpsCategory$InterestingConfigChanges.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/AppOpsCategory$PackageIntentReceiver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/AppOpsCategory$PackageIntentReceiver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/AppOpsDetails.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/AppOpsDetails.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/AppOpsState$AppEntry.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/AppOpsState$AppEntry.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/AppOpsState$AppOpEntry.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/AppOpsState$AppOpEntry.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/AppOpsState.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/AppOpsState.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/AppOpsState$OpsTemplate.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/AppOpsState$OpsTemplate.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/AppOpsSummary.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/AppOpsSummary.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/AppOpsSummary$MyPagerAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/AppOpsSummary$MyPagerAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/AppViewHolder.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/AppViewHolder.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/CanBeOnSdCardChecker.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/CanBeOnSdCardChecker.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/InstalledAppDetails.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/InstalledAppDetails.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/InstalledAppDetails$ClearCacheObserver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/InstalledAppDetails$ClearCacheObserver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/InstalledAppDetails$ClearUserDataObserver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/InstalledAppDetails$ClearUserDataObserver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/InstalledAppDetails$DisableChanger.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/InstalledAppDetails$DisableChanger.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/InstalledAppDetails$MyAlertDialogFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/InstalledAppDetails$MyAlertDialogFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/InstalledAppDetails$PackageMoveObserver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/InstalledAppDetails$PackageMoveObserver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/InstalledAppDetails$PremiumSmsSelectionListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/InstalledAppDetails$PremiumSmsSelectionListener.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/InstalledAppDetailsTop.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/InstalledAppDetailsTop.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/InterestingConfigChanges.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/InterestingConfigChanges.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/LinearColorBar.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/LinearColorBar.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/LinearColorBar$OnRegionTappedListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/LinearColorBar$OnRegionTappedListener.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/LinearColorPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/LinearColorPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/ManageApplications$ApplicationsAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/ManageApplications$ApplicationsAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/ManageApplications.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/ManageApplications.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/ManageApplications$MyPagerAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/ManageApplications$MyPagerAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/ManageApplications$TabInfo.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/ManageApplications$TabInfo.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/ProcessStatsDetail.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/ProcessStatsDetail.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/ProcessStatsPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/ProcessStatsPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/ProcessStatsUi.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/ProcessStatsUi.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/ProcStatsEntry.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/ProcStatsEntry.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/ProcStatsEntry$Service.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/ProcStatsEntry$Service.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/RunningProcessesView$ActiveItem.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/RunningProcessesView$ActiveItem.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/RunningProcessesView.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/RunningProcessesView.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/RunningProcessesView$ServiceListAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/RunningProcessesView$ServiceListAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/RunningProcessesView$TimeTicker.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/RunningProcessesView$TimeTicker.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/RunningProcessesView$ViewHolder.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/RunningProcessesView$ViewHolder.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/RunningServiceDetails$ActiveDetail.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/RunningServiceDetails$ActiveDetail.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/RunningServiceDetails.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/RunningServiceDetails.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/RunningServiceDetails$MyAlertDialogFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/RunningServiceDetails$MyAlertDialogFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/RunningState$AppProcessInfo.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/RunningState$AppProcessInfo.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/RunningState$BackgroundHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/RunningState$BackgroundHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/RunningState$BaseItem.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/RunningState$BaseItem.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/RunningState.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/RunningState.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/RunningState$MergedItem.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/RunningState$MergedItem.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/RunningState$OnRefreshUiListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/RunningState$OnRefreshUiListener.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/RunningState$ProcessItem.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/RunningState$ProcessItem.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/RunningState$ServiceItem.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/RunningState$ServiceItem.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/RunningState$ServiceProcessComparator.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/RunningState$ServiceProcessComparator.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/applications/RunningState$UserState.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/applications/RunningState$UserState.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ApplicationSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ApplicationSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/AppPicker$AppListAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/AppPicker$AppListAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/AppPicker.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/AppPicker.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/AppPicker$MyApplicationInfo.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/AppPicker$MyApplicationInfo.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/AppWidgetLoader.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/AppWidgetLoader.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/AppWidgetLoader$ItemConstructor.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/AppWidgetLoader$ItemConstructor.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/AppWidgetLoader$LabelledItem.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/AppWidgetLoader$LabelledItem.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/AppWidgetPickActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/AppWidgetPickActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/BandMode$BandListItem.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/BandMode$BandListItem.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/BandMode.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/BandMode.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/BatteryInfo.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/BatteryInfo.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/A2dpProfile$A2dpServiceListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/A2dpProfile$A2dpServiceListener.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/A2dpProfile.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/A2dpProfile.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothCallback.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothCallback.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDeviceFilter$AllFilter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDeviceFilter$AllFilter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDeviceFilter$AudioFilter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDeviceFilter$AudioFilter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDeviceFilter$BondedDeviceFilter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDeviceFilter$BondedDeviceFilter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDeviceFilter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDeviceFilter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDeviceFilter$ClassUuidFilter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDeviceFilter$ClassUuidFilter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDeviceFilter$Filter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDeviceFilter$Filter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDeviceFilter$NapFilter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDeviceFilter$NapFilter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDeviceFilter$PanuFilter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDeviceFilter$PanuFilter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDeviceFilter$TransferFilter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDeviceFilter$TransferFilter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDeviceFilter$UnbondedDeviceFilter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDeviceFilter$UnbondedDeviceFilter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDevicePreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDevicePreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDiscoverableEnabler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDiscoverableTimeoutReceiver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDiscoverableTimeoutReceiver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDiscoveryReceiver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothDiscoveryReceiver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEnabler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEnabler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager$AdapterStateChangedHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager$AdapterStateChangedHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager$BondStateChangedHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager$BondStateChangedHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager$ClassChangedHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager$ClassChangedHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager$DeviceDisappearedHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager$DeviceDisappearedHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager$DeviceFoundHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager$DeviceFoundHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager$DockEventHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager$DockEventHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager$Handler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager$Handler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager$NameChangedHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager$NameChangedHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager$PairingCancelHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager$PairingCancelHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager$ScanningStateChangedHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager$ScanningStateChangedHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager$UuidChangedHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothEventManager$UuidChangedHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothNameDialogFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothNameDialogFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothPairingDialog.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothPairingDialog.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothPairingRequest.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothPairingRequest.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothPermissionActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothPermissionActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothPermissionRequest.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothPermissionRequest.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothProgressCategory.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothProgressCategory.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothVisibilityTimeoutFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/BluetoothVisibilityTimeoutFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/CachedBluetoothDevice$Callback.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/CachedBluetoothDevice$Callback.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/CachedBluetoothDevice.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/CachedBluetoothDevice.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/CachedBluetoothDeviceManager.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/CachedBluetoothDeviceManager.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/DeviceListPreferenceFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/DeviceListPreferenceFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/DevicePickerActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/DevicePickerActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/DevicePickerFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/DevicePickerFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/DeviceProfilesSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/DeviceProfilesSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/DeviceProfilesSettings$RenameEditTextPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/DeviceProfilesSettings$RenameEditTextPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/DockEventReceiver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/DockEventReceiver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/DockService.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/DockService.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/DockService$ServiceHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/DockService$ServiceHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/HeadsetProfile.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/HeadsetProfile.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/HeadsetProfile$HeadsetServiceListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/HeadsetProfile$HeadsetServiceListener.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/HidProfile.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/HidProfile.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/HidProfile$InputDeviceServiceListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/HidProfile$InputDeviceServiceListener.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/LocalBluetoothAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/LocalBluetoothAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/LocalBluetoothManager.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/LocalBluetoothManager.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/LocalBluetoothPreferences.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/LocalBluetoothPreferences.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/LocalBluetoothProfile.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/LocalBluetoothProfile.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/LocalBluetoothProfileManager.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/LocalBluetoothProfileManager.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/LocalBluetoothProfileManager$PanStateChangedHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/LocalBluetoothProfileManager$PanStateChangedHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/LocalBluetoothProfileManager$ServiceListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/LocalBluetoothProfileManager$ServiceListener.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/LocalBluetoothProfileManager$StateChangedHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/LocalBluetoothProfileManager$StateChangedHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/MapProfile.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/MapProfile.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/MapProfile$MapServiceListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/MapProfile$MapServiceListener.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/OppProfile.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/OppProfile.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/PanProfile.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/PanProfile.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/PanProfile$PanServiceListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/PanProfile$PanServiceListener.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/PbapServerProfile.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/PbapServerProfile.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/PbapServerProfile$PbapServiceListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/PbapServerProfile$PbapServiceListener.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/RequestPermissionActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/RequestPermissionActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/RequestPermissionHelperActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/RequestPermissionHelperActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/Utf8ByteLengthFilter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/Utf8ByteLengthFilter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/Utf8ByteLengthFilterTest.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/Utf8ByteLengthFilterTest.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/bluetooth/Utils.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/bluetooth/Utils.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/BrightnessPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/BrightnessPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/BugreportPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/BugreportPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ButtonBarHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ButtonBarHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ChooseLockGeneric$ChooseLockGenericFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ChooseLockGeneric$ChooseLockGenericFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ChooseLockGeneric.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ChooseLockGeneric.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ChooseLockGeneric$InternalActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ChooseLockGeneric$InternalActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ChooseLockPassword$ChooseLockPasswordFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ChooseLockPassword$ChooseLockPasswordFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ChooseLockPassword$ChooseLockPasswordFragment$Stage.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ChooseLockPassword$ChooseLockPasswordFragment$Stage.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ChooseLockPassword.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ChooseLockPassword.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ChooseLockPattern$ChooseLockPatternFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ChooseLockPattern$ChooseLockPatternFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ChooseLockPattern$ChooseLockPatternFragment$LeftButtonMode.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ChooseLockPattern$ChooseLockPatternFragment$LeftButtonMode.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ChooseLockPattern$ChooseLockPatternFragment$RightButtonMode.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ChooseLockPattern$ChooseLockPatternFragment$RightButtonMode.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ChooseLockPattern$ChooseLockPatternFragment$Stage.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ChooseLockPattern$ChooseLockPatternFragment$Stage.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ChooseLockPattern.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ChooseLockPattern.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ChooseLockSettingsHelper.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ChooseLockSettingsHelper.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/collaboroid/CollaboRoidConfigUiBase.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/collaboroid/CollaboRoidConfigUiBase.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/collaboroid/CollaboRoidDialog.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/collaboroid/CollaboRoidDialog.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/collaboroid/CollaboRoidEnabler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/collaboroid/CollaboRoidEnabler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/collaboroid/CollaboRoidSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/collaboroid/CollaboRoidSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/collaboroid/CollaboRoidSettings$ProportionalOuterFrame.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/collaboroid/CollaboRoidSettings$ProportionalOuterFrame.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/collaboroid/RemoteDevice.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/collaboroid/RemoteDevice.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ConfirmLockPassword.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ConfirmLockPassword.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ConfirmLockPassword$ConfirmLockPasswordFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ConfirmLockPassword$ConfirmLockPasswordFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ConfirmLockPattern.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ConfirmLockPattern.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ConfirmLockPattern$ConfirmLockPatternFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ConfirmLockPattern$ConfirmLockPatternFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ConfirmLockPattern$Stage.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ConfirmLockPattern$Stage.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/CreateShortcut.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/CreateShortcut.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/CredentialStorage.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/CredentialStorage.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/CredentialStorage$ConfigureKeyGuardDialog.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/CredentialStorage$ConfigureKeyGuardDialog.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/CredentialStorage$ResetDialog.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/CredentialStorage$ResetDialog.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/CredentialStorage$ResetKeyStoreAndKeyChain.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/CredentialStorage$ResetKeyStoreAndKeyChain.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/CredentialStorage$UnlockDialog.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/CredentialStorage$UnlockDialog.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/CryptKeeper.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/CryptKeeper.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/CryptKeeperConfirm$Blank.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/CryptKeeperConfirm$Blank.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/CryptKeeperConfirm.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/CryptKeeperConfirm.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/CryptKeeper$DecryptTask.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/CryptKeeper$DecryptTask.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/CryptKeeper$FadeToBlack.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/CryptKeeper$FadeToBlack.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/CryptKeeper$NonConfigurationInstanceState.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/CryptKeeper$NonConfigurationInstanceState.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/CryptKeeperSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/CryptKeeperSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/CryptKeeper$ValidationTask.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/CryptKeeper$ValidationTask.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$AppDetailsFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$AppDetailsFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$AppItem.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$AppItem.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DataUsageSummary.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DataUsageSummary.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$ConfirmAppRestrictFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$ConfirmAppRestrictFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$ConfirmAutoSyncChangeFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$ConfirmAutoSyncChangeFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$ConfirmDataDisableFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$ConfirmDataDisableFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$ConfirmDataRoamingFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$ConfirmDataRoamingFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$ConfirmLimitFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$ConfirmLimitFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$ConfirmRestrictFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$ConfirmRestrictFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$CycleAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$CycleAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$CycleChangeItem.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$CycleChangeItem.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$CycleEditorFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$CycleEditorFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$CycleItem.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$CycleItem.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$DataUsageAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$DataUsageAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$DeniedRestrictFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$DeniedRestrictFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$LimitEditorFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$LimitEditorFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$UidDetailTask.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$UidDetailTask.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$WarningEditorFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DataUsageSummary$WarningEditorFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DateTimeSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DateTimeSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DateTimeSettingsSetupWizard.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DateTimeSettingsSetupWizard.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DefaultRingtonePreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DefaultRingtonePreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DevelopmentSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DevelopmentSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DevelopmentSettings$SystemPropPoker.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DevelopmentSettings$SystemPropPoker.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DeviceAdminAdd.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DeviceAdminAdd.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DeviceAdminSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DeviceAdminSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DeviceAdminSettings$PolicyListAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DeviceAdminSettings$PolicyListAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DeviceAdminSettings$ViewHolder.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DeviceAdminSettings$ViewHolder.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/deviceinfo/FileItemInfoLayout.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/deviceinfo/FileItemInfoLayout.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/deviceinfo/Memory.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/deviceinfo/Memory.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/deviceinfo/Memory$ClearCacheObserver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/deviceinfo/Memory$ClearCacheObserver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/deviceinfo/Memory$ConfirmClearCacheFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/deviceinfo/Memory$ConfirmClearCacheFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/deviceinfo/MiscFilesHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/deviceinfo/MiscFilesHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/deviceinfo/MiscFilesHandler$MemoryMearurementAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/deviceinfo/MiscFilesHandler$MemoryMearurementAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/deviceinfo/MiscFilesHandler$ModeCallback.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/deviceinfo/MiscFilesHandler$ModeCallback.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/deviceinfo/PercentageBarChart.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/deviceinfo/PercentageBarChart.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/deviceinfo/PercentageBarChart$Entry.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/deviceinfo/PercentageBarChart$Entry.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/deviceinfo/Status.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/deviceinfo/Status.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/deviceinfo/Status$MyHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/deviceinfo/Status$MyHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/deviceinfo/StorageItemPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/deviceinfo/StorageItemPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/deviceinfo/StorageMeasurement.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/deviceinfo/StorageMeasurement.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/deviceinfo/StorageMeasurement$FileInfo.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/deviceinfo/StorageMeasurement$FileInfo.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/deviceinfo/StorageMeasurement$MeasurementDetails.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/deviceinfo/StorageMeasurement$MeasurementDetails.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/deviceinfo/StorageMeasurement$MeasurementHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/deviceinfo/StorageMeasurement$MeasurementHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/deviceinfo/StorageMeasurement$MeasurementReceiver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/deviceinfo/StorageMeasurement$MeasurementReceiver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/deviceinfo/StorageMeasurement$StatsObserver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/deviceinfo/StorageMeasurement$StatsObserver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/deviceinfo/StorageVolumePreferenceCategory.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/deviceinfo/StorageVolumePreferenceCategory.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/deviceinfo/StorageVolumePreferenceCategory$PreferenceHeader.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/deviceinfo/StorageVolumePreferenceCategory$PreferenceHeader.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/deviceinfo/UsageBarPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/deviceinfo/UsageBarPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/deviceinfo/UsbSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/deviceinfo/UsbSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DeviceInfoSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DeviceInfoSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DeviceInfoSettingsTest.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DeviceInfoSettingsTest.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DialogCreatable.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DialogCreatable.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Display.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Display.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DisplaySettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DisplaySettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/drawable/DrawableWrapper.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/drawable/DrawableWrapper.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/drawable/InsetBoundsDrawable.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/drawable/InsetBoundsDrawable.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DreamBackend.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DreamBackend.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DreamBackend$DreamInfo.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DreamBackend$DreamInfo.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DreamBackend$DreamInfoComparator.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DreamBackend$DreamInfoComparator.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DreamSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DreamSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DreamSettings$DreamInfoAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DreamSettings$DreamInfoAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/DreamSettings$PackageReceiver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/DreamSettings$PackageReceiver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/EditPinPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/EditPinPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/EditPinPreference$OnPinEnteredListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/EditPinPreference$OnPinEnteredListener.class differ
diff -urN Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/EventLogTags.logtags AndroidSource/packages/apps/Settings/bin/com/android/settings/EventLogTags.logtags
--- Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/EventLogTags.logtags	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/Settings/bin/com/android/settings/EventLogTags.logtags	2015-01-09 01:04:57.000000000 +0900
@@ -0,0 +1,6 @@
+# See system/core/logcat/event.logtags for a description of the format of this file.
+
+option java_package com.android.settings
+
+# log the type of screen lock when user sets lock screen
+90200 lock_screen_type (type|3)
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/fuelgauge/BatteryHistoryChart$ChartData.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/fuelgauge/BatteryHistoryChart$ChartData.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/fuelgauge/BatteryHistoryChart.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/fuelgauge/BatteryHistoryChart.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/fuelgauge/BatteryHistoryDetail.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/fuelgauge/BatteryHistoryDetail.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/fuelgauge/BatteryHistoryPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/fuelgauge/BatteryHistoryPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/fuelgauge/BatterySipper.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/fuelgauge/BatterySipper.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/fuelgauge/BatterySipper$UidToDetail.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/fuelgauge/BatterySipper$UidToDetail.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/fuelgauge/BatteryStatsHelper.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/fuelgauge/BatteryStatsHelper.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/fuelgauge/BatteryStatsHelper$NameAndIconLoader.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/fuelgauge/BatteryStatsHelper$NameAndIconLoader.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/fuelgauge/PowerGaugePreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/fuelgauge/PowerGaugePreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/fuelgauge/PowerUsageDetail.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/fuelgauge/PowerUsageDetail.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/fuelgauge/PowerUsageDetail$DrainType.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/fuelgauge/PowerUsageDetail$DrainType.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/fuelgauge/PowerUsageSummary.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/fuelgauge/PowerUsageSummary.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/fuelgauge/Utils.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/fuelgauge/Utils.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/HelpUtils.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/HelpUtils.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/HomeSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/HomeSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/HomeSettings$HomeAppPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/HomeSettings$HomeAppPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/IccLockSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/IccLockSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/IconPreferenceScreen.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/IconPreferenceScreen.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/CheckBoxAndSettingsPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/CheckBoxAndSettingsPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/InputMethodAndLanguageSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/InputMethodAndLanguageSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/InputMethodAndLanguageSettings$SettingsObserver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/InputMethodAndLanguageSettings$SettingsObserver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/InputMethodAndSubtypeEnablerActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/InputMethodAndSubtypeEnablerActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler$SubtypeCheckBoxPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/InputMethodAndSubtypeEnabler$SubtypeCheckBoxPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/InputMethodAndSubtypeUtil.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/InputMethodDialogReceiver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/InputMethodDialogReceiver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/InputMethodPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/InputMethodPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/InputMethodSettingValuesWrapper.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/InputMethodSettingValuesWrapper.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/KeyboardLayoutDialogFragment$KeyboardLayoutAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/KeyboardLayoutDialogFragment$KeyboardLayoutAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/KeyboardLayoutDialogFragment$KeyboardLayoutLoader.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/KeyboardLayoutDialogFragment$KeyboardLayoutLoader.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/KeyboardLayoutDialogFragment$Keyboards.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/KeyboardLayoutDialogFragment$Keyboards.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/KeyboardLayoutDialogFragment$OnSetupKeyboardLayoutsListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/KeyboardLayoutDialogFragment$OnSetupKeyboardLayoutsListener.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/KeyboardLayoutPickerFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/SingleSpellCheckerPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/SingleSpellCheckerPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/SpellCheckersPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/SpellCheckersPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/SpellCheckersSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/SpellCheckersSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/SpellCheckerUtils.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/SpellCheckerUtils.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/UserDictionaryAddWordActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/UserDictionaryAddWordActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/UserDictionaryAddWordContents.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/UserDictionaryAddWordContents.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/UserDictionaryAddWordContents$LocaleRenderer.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/UserDictionaryAddWordContents$LocaleRenderer.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/UserDictionaryAddWordFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/UserDictionaryAddWordFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/UserDictionaryList.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/UserDictionaryList.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/UserDictionaryLocalePicker.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/UserDictionaryLocalePicker.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/inputmethod/UserDictionarySettingsUtils.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/inputmethod/UserDictionarySettingsUtils.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/KeyguardAppWidgetPickActivity$AppWidgetAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/KeyguardAppWidgetPickActivity$AppWidgetAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/KeyguardAppWidgetPickActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/KeyguardAppWidgetPickActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/KeyguardAppWidgetPickActivity$Item.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/KeyguardAppWidgetPickActivity$Item.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/KeyguardAppWidgetPickActivity$Item$WidgetPreviewLoader$BitmapCache.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/KeyguardAppWidgetPickActivity$Item$WidgetPreviewLoader$BitmapCache.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/KeyguardAppWidgetPickActivity$Item$WidgetPreviewLoader$CanvasCache.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/KeyguardAppWidgetPickActivity$Item$WidgetPreviewLoader$CanvasCache.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/KeyguardAppWidgetPickActivity$Item$WidgetPreviewLoader.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/KeyguardAppWidgetPickActivity$Item$WidgetPreviewLoader.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/KeyguardAppWidgetPickActivity$Item$WidgetPreviewLoader$PaintCache.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/KeyguardAppWidgetPickActivity$Item$WidgetPreviewLoader$PaintCache.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/KeyguardAppWidgetPickActivity$Item$WidgetPreviewLoader$RectCache.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/KeyguardAppWidgetPickActivity$Item$WidgetPreviewLoader$RectCache.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/KeyguardAppWidgetPickActivity$Item$WidgetPreviewLoader$WeakReferenceThreadLocal.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/KeyguardAppWidgetPickActivity$Item$WidgetPreviewLoader$WeakReferenceThreadLocal.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/LocalePicker.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/LocalePicker.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/location/InjectedSetting.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/location/InjectedSetting.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/location/LocationMode.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/location/LocationMode.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/location/LocationSettingsBase.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/location/LocationSettingsBase.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/location/LocationSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/location/LocationSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/location/RadioButtonPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/location/RadioButtonPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/location/RadioButtonPreference$OnClickListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/location/RadioButtonPreference$OnClickListener.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/location/RecentLocationApps.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/location/RecentLocationApps.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/location/RecentLocationApps$PackageEntryClickedListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/location/RecentLocationApps$PackageEntryClickedListener.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/location/SettingsInjector.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/location/SettingsInjector.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/location/SettingsInjector$Setting.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/location/SettingsInjector$Setting.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/location/SettingsInjector$StatusLoadingHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/location/SettingsInjector$StatusLoadingHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/MasterClear.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/MasterClear.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/MasterClearConfirm.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/MasterClearConfirm.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/MediaFormat.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/MediaFormat.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/MonitoringCertInfoActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/MonitoringCertInfoActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/net/ChartData.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/net/ChartData.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/net/ChartDataLoader.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/net/ChartDataLoader.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/net/DataUsageMeteredSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/net/DataUsageMeteredSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/net/DataUsageMeteredSettings$MeteredPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/net/DataUsageMeteredSettings$MeteredPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/net/NetworkPolicyEditor.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/net/NetworkPolicyEditor.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/net/SummaryForAllUidLoader.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/net/SummaryForAllUidLoader.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/net/UidDetail.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/net/UidDetail.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/net/UidDetailProvider.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/net/UidDetailProvider.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/nfc/AndroidBeam.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/nfc/AndroidBeam.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/nfc/NfcEnabler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/nfc/NfcEnabler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/nfc/PaymentBackend.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/nfc/PaymentBackend.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/nfc/PaymentBackend$PaymentAppInfo.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/nfc/PaymentBackend$PaymentAppInfo.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/nfc/PaymentDefaultDialog.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/nfc/PaymentDefaultDialog.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/nfc/PaymentSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/nfc/PaymentSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/nfc/PaymentSettings$PaymentAppPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/nfc/PaymentSettings$PaymentAppPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/nfc/PaymentSettings$SettingsPackageMonitor.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/nfc/PaymentSettings$SettingsPackageMonitor.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/NotificationAccessSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/NotificationAccessSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/NotificationAccessSettings$ListenerListAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/NotificationAccessSettings$ListenerListAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/NotificationAccessSettings$ListenerWarningDialogFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/NotificationAccessSettings$ListenerWarningDialogFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/NotificationAccessSettings$ViewHolder.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/NotificationAccessSettings$ViewHolder.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/NotificationStation.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/NotificationStation.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/NotificationStation$HistoricalNotificationInfo.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/NotificationStation$HistoricalNotificationInfo.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/NotificationStation$NotificationHistoryAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/NotificationStation$NotificationHistoryAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/NotificationStation$PackageReceiver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/NotificationStation$PackageReceiver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/NsdEnabler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/NsdEnabler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/OwnerInfoSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/OwnerInfoSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/PointerSpeedPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/PointerSpeedPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/PointerSpeedPreference$SavedState.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/PointerSpeedPreference$SavedState.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/print/PrintJobSettingsFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/print/PrintJobSettingsFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/print/PrintServiceSettingsFragment$AnnounceFilterResult.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/print/PrintServiceSettingsFragment$AnnounceFilterResult.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/print/PrintServiceSettingsFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/print/PrintServiceSettingsFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/print/PrintServiceSettingsFragment$PrintersAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/print/PrintServiceSettingsFragment$PrintersAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/print/PrintServiceSettingsFragment$PrintersLoader.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/print/PrintServiceSettingsFragment$PrintersLoader.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/print/PrintServiceSettingsFragment$SettingsContentObserver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/print/PrintServiceSettingsFragment$SettingsContentObserver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/print/PrintSettingsFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/print/PrintSettingsFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/print/PrintSettingsFragment$PrintJobsController.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/print/PrintSettingsFragment$PrintJobsController.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/print/PrintSettingsFragment$PrintJobsLoader.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/print/PrintSettingsFragment$PrintJobsLoader.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/print/PrintSettingsFragment$SettingsContentObserver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/print/PrintSettingsFragment$SettingsContentObserver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/print/PrintSettingsFragment$SettingsPackageMonitor.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/print/PrintSettingsFragment$SettingsPackageMonitor.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/print/PrintSettingsFragment$ToggleSwitch.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/print/PrintSettingsFragment$ToggleSwitch.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/print/PrintSettingsFragment$ToggleSwitch$OnBeforeCheckedChangeListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/print/PrintSettingsFragment$ToggleSwitch$OnBeforeCheckedChangeListener.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/print/SettingsUtils.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/print/SettingsUtils.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/PrivacySettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/PrivacySettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ProgressCategoryBase.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ProgressCategoryBase.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ProgressCategory.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ProgressCategory.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ProxySelector.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ProxySelector.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/quicklaunch/BookmarkPicker.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/quicklaunch/BookmarkPicker.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/quicklaunch/QuickLaunchSettings$BookmarksObserver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/quicklaunch/QuickLaunchSettings$BookmarksObserver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/quicklaunch/QuickLaunchSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/quicklaunch/QuickLaunchSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/quicklaunch/ShortcutPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/quicklaunch/ShortcutPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/RadioInfo$CellInfoListRateHandler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/RadioInfo$CellInfoListRateHandler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/RadioInfo.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/RadioInfo.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/RegulatoryInfoDisplayActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/RegulatoryInfoDisplayActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/RestrictedSettingsFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/RestrictedSettingsFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/RingerVolumePreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/RingerVolumePreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/RingerVolumePreference$SavedState.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/RingerVolumePreference$SavedState.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/SecuritySettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/SecuritySettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/SelectableEditTextPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/SelectableEditTextPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/SetFullBackupPassword.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/SetFullBackupPassword.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$AccessibilitySettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$AccessibilitySettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$AccountSyncSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$AccountSyncSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$AccountSyncSettingsInAddAccountActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$AccountSyncSettingsInAddAccountActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$AdvancedWifiSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$AdvancedWifiSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$AndroidBeamSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$AndroidBeamSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$ApplicationSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$ApplicationSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$AppOpsSummaryActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$AppOpsSummaryActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$BluetoothSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$BluetoothSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$CaptioningSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$CaptioningSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$CryptKeeperSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$CryptKeeperSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$DataUsageSummaryActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$DataUsageSummaryActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$DateTimeSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$DateTimeSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$DevelopmentSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$DevelopmentSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$DeviceAdminSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$DeviceAdminSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$DeviceInfoSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$DeviceInfoSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$DisplaySettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$DisplaySettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$DreamSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$DreamSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$HeaderAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$HeaderAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$HeaderAdapter$HeaderViewHolder.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$HeaderAdapter$HeaderViewHolder.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/SettingsHookTests.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/SettingsHookTests.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$InputMethodAndLanguageSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$InputMethodAndLanguageSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$InputMethodAndSubtypeEnablerActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$InputMethodAndSubtypeEnablerActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$KeyboardLayoutPickerActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$KeyboardLayoutPickerActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/SettingsLicenseActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/SettingsLicenseActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/SettingsLicenseActivity$LicenseFileLoader.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/SettingsLicenseActivity$LicenseFileLoader.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$LocalePickerActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$LocalePickerActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$LocationSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$LocationSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$ManageAccountsSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$ManageAccountsSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$ManageApplicationsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$ManageApplicationsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$NoHomeDialogFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$NoHomeDialogFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$NotificationAccessSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$NotificationAccessSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$NotificationStationActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$NotificationStationActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$PaymentSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$PaymentSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$PowerUsageSummaryActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$PowerUsageSummaryActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/SettingsPreferenceFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/SettingsPreferenceFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/SettingsPreferenceFragment$SettingsDialogFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/SettingsPreferenceFragment$SettingsDialogFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$PrintJobSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$PrintJobSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$PrintSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$PrintSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$PrivacySettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$PrivacySettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$RunningServicesActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$RunningServicesActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/SettingsSafetyLegalActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/SettingsSafetyLegalActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$SecuritySettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$SecuritySettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$SoundSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$SoundSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$SpellCheckersSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$SpellCheckersSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$StorageSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$StorageSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$StorageUseActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$StorageUseActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$TetherSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$TetherSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$TextToSpeechSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$TextToSpeechSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$TrustedCredentialsSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$TrustedCredentialsSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$UsbSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$UsbSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$UserDictionarySettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$UserDictionarySettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$UserSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$UserSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$VpnSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$VpnSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$WifiDisplaySettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$WifiDisplaySettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$WifiP2pSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$WifiP2pSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$WifiSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$WifiSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Settings$WirelessSettingsActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Settings$WirelessSettingsActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/SmsDefaultDialog.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/SmsDefaultDialog.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/SmsListPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/SmsListPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/SmsListPreference$SmsArrayAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/SmsListPreference$SmsArrayAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/SoundSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/SoundSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/SubSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/SubSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/TestingSettingsBroadcastReceiver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/TestingSettingsBroadcastReceiver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/TestingSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/TestingSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/tests/BluetoothRequestPermissionTest$BtOnClickListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/tests/BluetoothRequestPermissionTest$BtOnClickListener.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/tests/BluetoothRequestPermissionTest$BtScanOnClickListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/tests/BluetoothRequestPermissionTest$BtScanOnClickListener.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/tests/BluetoothRequestPermissionTest.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/tests/BluetoothRequestPermissionTest.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/tests/Manufacturer.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/tests/Manufacturer.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/tests/Operator.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/tests/Operator.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/tests/SettingsLaunchPerformance.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/tests/SettingsLaunchPerformance.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/TetherSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/TetherSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/TetherSettings$TetherChangeReceiver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/TetherSettings$TetherChangeReceiver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/TrustedCredentialsSettings$AliasOperation.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/TrustedCredentialsSettings$AliasOperation.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/TrustedCredentialsSettings$CertHolder.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/TrustedCredentialsSettings$CertHolder.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/TrustedCredentialsSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/TrustedCredentialsSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/TrustedCredentialsSettings$Tab.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/TrustedCredentialsSettings$Tab.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/TrustedCredentialsSettings$TrustedCertificateAdapter$AliasLoader.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/TrustedCredentialsSettings$TrustedCertificateAdapter$AliasLoader.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/TrustedCredentialsSettings$TrustedCertificateAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/TrustedCredentialsSettings$TrustedCertificateAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/TrustedCredentialsSettings$ViewHolder.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/TrustedCredentialsSettings$ViewHolder.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/tts/TextToSpeechSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/tts/TextToSpeechSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/tts/TtsEnginePreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/tts/TtsEnginePreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/tts/TtsEnginePreference$RadioButtonGroupState.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/tts/TtsEnginePreference$RadioButtonGroupState.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/tts/TtsEngineSettingsFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/tts/TtsEngineSettingsFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/UsageStats$AppNameComparator.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/UsageStats$AppNameComparator.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/UsageStats$AppViewHolder.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/UsageStats$AppViewHolder.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/UsageStats.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/UsageStats.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/UsageStats$LaunchCountComparator.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/UsageStats$LaunchCountComparator.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/UsageStats$UsageStatsAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/UsageStats$UsageStatsAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/UsageStats$UsageTimeComparator.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/UsageStats$UsageTimeComparator.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/UserDictionarySettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/UserDictionarySettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/UserDictionarySettings$MyAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/UserDictionarySettings$MyAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/users/AppRestrictionsFragment$AppLabelComparator.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/users/AppRestrictionsFragment$AppLabelComparator.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/users/AppRestrictionsFragment$AppLoadingTask.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/users/AppRestrictionsFragment$AppLoadingTask.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/users/AppRestrictionsFragment$AppRestrictionsPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/users/AppRestrictionsFragment$AppRestrictionsPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/users/AppRestrictionsFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/users/AppRestrictionsFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/users/AppRestrictionsFragment$RestrictionsResultReceiver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/users/AppRestrictionsFragment$RestrictionsResultReceiver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/users/AppRestrictionsFragment$SelectableAppInfo.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/users/AppRestrictionsFragment$SelectableAppInfo.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/users/CircleFramedDrawable.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/users/CircleFramedDrawable.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/users/ProfileUpdateReceiver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/users/ProfileUpdateReceiver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/users/RestrictedProfileSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/users/RestrictedProfileSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/users/RestrictedProfileSettings$EditUserPhotoController$AdapterItem.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/users/RestrictedProfileSettings$EditUserPhotoController$AdapterItem.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/users/RestrictedProfileSettings$EditUserPhotoController.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/users/RestrictedProfileSettings$EditUserPhotoController.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/users/RestrictionUtils.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/users/RestrictionUtils.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/users/UserPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/users/UserPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/users/UserSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/users/UserSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/users/UserUtils.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/users/UserUtils.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/Utils.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/Utils.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/VoiceInputOutputSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/VoiceInputOutputSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/vpn2/VpnDialog.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/vpn2/VpnDialog.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/vpn2/VpnSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/vpn2/VpnSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/vpn2/VpnSettings$LockdownConfigFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/vpn2/VpnSettings$LockdownConfigFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/vpn2/VpnSettings$LockdownConfigFragment$TitleAdapter.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/vpn2/VpnSettings$LockdownConfigFragment$TitleAdapter.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/vpn2/VpnSettings$VpnPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/vpn2/VpnSettings$VpnPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/WallpaperTypeSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/WallpaperTypeSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/WarnedListPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/WarnedListPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wfd/WifiDisplaySettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wfd/WifiDisplaySettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wfd/WifiDisplaySettings$RoutePreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wfd/WifiDisplaySettings$RoutePreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wfd/WifiDisplaySettings$UnpairedWifiDisplayPreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wfd/WifiDisplaySettings$UnpairedWifiDisplayPreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wfd/WifiDisplaySettings$WifiDisplayRoutePreference.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wfd/WifiDisplaySettings$WifiDisplayRoutePreference.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/widget/AnimatedImageView.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/widget/AnimatedImageView.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/widget/ChartAxis.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/widget/ChartAxis.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/widget/ChartDataUsageView.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/widget/ChartDataUsageView.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/widget/ChartDataUsageView$DataAxis.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/widget/ChartDataUsageView$DataAxis.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/widget/ChartDataUsageView$DataUsageChartListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/widget/ChartDataUsageView$DataUsageChartListener.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/widget/ChartDataUsageView$TimeAxis.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/widget/ChartDataUsageView$TimeAxis.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/widget/ChartGridView.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/widget/ChartGridView.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/widget/ChartNetworkSeriesView.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/widget/ChartNetworkSeriesView.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/widget/ChartSweepView.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/widget/ChartSweepView.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/widget/ChartSweepView$OnSweepListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/widget/ChartSweepView$OnSweepListener.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/widget/ChartView.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/widget/ChartView.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/widget/InvertedChartAxis.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/widget/InvertedChartAxis.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/widget/PieChartView.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/widget/PieChartView.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/widget/PieChartView$Slice.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/widget/PieChartView$Slice.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/widget/SettingsAppWidgetProvider$BluetoothStateTracker.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/widget/SettingsAppWidgetProvider$BluetoothStateTracker.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/widget/SettingsAppWidgetProvider.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/widget/SettingsAppWidgetProvider.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/widget/SettingsAppWidgetProvider$LocationStateTracker.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/widget/SettingsAppWidgetProvider$LocationStateTracker.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/widget/SettingsAppWidgetProvider$SettingsObserver.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/widget/SettingsAppWidgetProvider$SettingsObserver.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/widget/SettingsAppWidgetProvider$StateTracker.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/widget/SettingsAppWidgetProvider$StateTracker.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/widget/SettingsAppWidgetProvider$SyncStateTracker.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/widget/SettingsAppWidgetProvider$SyncStateTracker.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/widget/SettingsAppWidgetProvider$WifiStateTracker.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/widget/SettingsAppWidgetProvider$WifiStateTracker.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/AccessPointCategoryForSetupWizardXL.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/AccessPointCategoryForSetupWizardXL.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/AccessPoint.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/AccessPoint.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/AccessPoint$PskType.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/AccessPoint$PskType.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/AdvancedWifiSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/AdvancedWifiSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/p2p/WifiP2pPeer.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/p2p/WifiP2pPeer.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/p2p/WifiP2pPersistentGroup.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/p2p/WifiP2pPersistentGroup.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/p2p/WifiP2pSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/p2p/WifiP2pSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/Summary.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/Summary.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WifiApDialog.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WifiApDialog.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WifiApEnabler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WifiApEnabler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WifiAPITest.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WifiAPITest.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WifiConfigController.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WifiConfigController.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WifiConfigInfo.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WifiConfigInfo.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WifiConfigUiBase.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WifiConfigUiBase.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WifiConfigUiForSetupWizardXL.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WifiConfigUiForSetupWizardXL.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WifiConfigUiForSetupWizardXL$FocusRunnable.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WifiConfigUiForSetupWizardXL$FocusRunnable.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WifiDialog.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WifiDialog.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WifiEnabler.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WifiEnabler.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WifiInfo.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WifiInfo.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WifiPickerActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WifiPickerActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WifiScanModeActivity$AlertDialogFragment.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WifiScanModeActivity$AlertDialogFragment.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WifiScanModeActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WifiScanModeActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WifiSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WifiSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WifiSettingsForSetupWizardXL.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WifiSettingsForSetupWizardXL.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WifiSettings$Multimap.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WifiSettings$Multimap.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WifiSettings$ProportionalOuterFrame.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WifiSettings$ProportionalOuterFrame.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WifiSettings$Scanner.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WifiSettings$Scanner.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WifiSetupActivity.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WifiSetupActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WifiStatusTest.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WifiStatusTest.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WpsDialog.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WpsDialog.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/wifi/WpsDialog$DialogState.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/wifi/WpsDialog$DialogState.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/WirelessSettings.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/WirelessSettings.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ZonePicker.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ZonePicker.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ZonePicker$MyComparator.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ZonePicker$MyComparator.class differ
Binary files Original_4.4.4_r1/packages/apps/Settings/bin/com/android/settings/ZonePicker$ZoneSelectionListener.class and AndroidSource/packages/apps/Settings/bin/com/android/settings/ZonePicker$ZoneSelectionListener.class differ
diff -urN Original_4.4.4_r1/packages/apps/Settings/.classpath AndroidSource/packages/apps/Settings/.classpath
--- Original_4.4.4_r1/packages/apps/Settings/.classpath	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/Settings/.classpath	2016-02-15 13:32:52.000000000 +0900
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="tests/src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="src" path="/AndroidSource"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff -urN Original_4.4.4_r1/packages/apps/Settings/.git/HEAD AndroidSource/packages/apps/Settings/.git/HEAD
--- Original_4.4.4_r1/packages/apps/Settings/.git/HEAD	2016-01-29 15:12:43.003488000 +0900
+++ AndroidSource/packages/apps/Settings/.git/HEAD	1970-01-01 09:00:00.000000000 +0900
@@ -1 +0,0 @@
-dd9d9015b82bd94527c4a906e1db9ff395c86113
Binary files Original_4.4.4_r1/packages/apps/Settings/.git/index and AndroidSource/packages/apps/Settings/.git/index differ
diff -urN Original_4.4.4_r1/packages/apps/Settings/.gitignore AndroidSource/packages/apps/Settings/.gitignore
--- Original_4.4.4_r1/packages/apps/Settings/.gitignore	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/Settings/.gitignore	2016-02-15 18:34:09.000000000 +0900
@@ -0,0 +1 @@
+/bin/
diff -urN Original_4.4.4_r1/packages/apps/Settings/.project AndroidSource/packages/apps/Settings/.project
--- Original_4.4.4_r1/packages/apps/Settings/.project	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/Settings/.project	2016-02-15 13:10:41.000000000 +0900
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>Settings</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff -urN Original_4.4.4_r1/packages/apps/Settings/res/layout/collaboroid_dialog_row.xml AndroidSource/packages/apps/Settings/res/layout/collaboroid_dialog_row.xml
--- Original_4.4.4_r1/packages/apps/Settings/res/layout/collaboroid_dialog_row.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/Settings/res/layout/collaboroid_dialog_row.xml	2016-06-21 18:39:22.000000000 +0900
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2010 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.
+-->
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        style="@style/collaboroid_item" >
+    <!-- <TextView
+            style="@style/collaboroid_item_label"
+            android:id="@+id/name"
+            android:textAlignment="viewStart" /> -->
+	<TextView
+            style="@style/collaboroid_item_label"
+            android:id="@+id/name" 
+            android:layout_alignParentLeft="true"/>
+
+<!--     <CheckBox
+            style="@style/collaboroid_item_checkbox"
+            android:id="@+id/checkbox_allow" 
+            android:layout_alignParentRight="true"
+            android:layout_marginLeft="10dp" />  -->
+    
+    <CheckBox
+            style="@style/collaboroid_item_checkbox"
+            android:id="@+id/checkbox_ask" 
+            android:layout_alignParentRight="true"
+            android:layout_marginLeft="10dp" />
+</RelativeLayout>
diff -urN Original_4.4.4_r1/packages/apps/Settings/res/layout/collaboroid_dialog.xml AndroidSource/packages/apps/Settings/res/layout/collaboroid_dialog.xml
--- Original_4.4.4_r1/packages/apps/Settings/res/layout/collaboroid_dialog.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/Settings/res/layout/collaboroid_dialog.xml	2016-06-24 12:33:29.000000000 +0900
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2010 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.
+-->
+
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+         android:layout_width="wrap_content"
+         android:layout_height="wrap_content">
+
+    <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:paddingBottom="8dip">
+
+        <RelativeLayout
+	            android:layout_width="match_parent"
+	            android:layout_height="wrap_content"
+	            android:orientation="horizontal"
+	            android:paddingBottom="8dip">
+	            
+	        <TextView
+			        style="@style/collaboroid_item_label"
+			        android:text="@string/collaboroid_dialog_resource"
+			        android:layout_alignParentLeft="true" 
+			        android:layout_marginLeft="10dp" />
+	        
+	        <TextView
+			        style="@style/collaboroid_item_label"
+			        android:text="@string/collaboroid_dialog_request" 
+			        android:id="@+id/ask" 
+			        android:layout_alignParentRight="true" 
+			        android:layout_marginRight="5dp" />
+	        
+	<!--         <TextView
+			        style="@style/collaboroid_item_label"
+			        android:text="@string/collaboroid_dialog_ask" 
+			        android:layout_toLeftOf="@id/allow" /> -->
+	        
+	    </RelativeLayout>
+	    
+        <LinearLayout android:id="@+id/info"
+        	style="@style/wifi_section" />
+        	        
+    </LinearLayout>
+</ScrollView>
diff -urN Original_4.4.4_r1/packages/apps/Settings/res/values/strings.xml AndroidSource/packages/apps/Settings/res/values/strings.xml
--- Original_4.4.4_r1/packages/apps/Settings/res/values/strings.xml	2016-01-29 15:12:43.167488000 +0900
+++ AndroidSource/packages/apps/Settings/res/values/strings.xml	2016-06-24 12:32:56.000000000 +0900
@@ -1384,7 +1384,27 @@
     <string name="wifi_setup_wps">Automatic setup (WPS)</string>
     <!-- Message informing that wifi is required during setup [CHAR LIMIT=NONE] -->
     <string name="wifi_required_info_text">To complete setup, your tablet needs access to Wi\u2011Fi. After setup, you can switch between mobile data and Wi\u2011Fi.</string>
+    
+    <!-- CollaboRoid Settings --> <skip />
+    <!-- Used in the 1st-level settings screen to go to the 2nd-level settings screen  [CHAR LIMIT=20]-->
+    <string name="collaboroid_settings">CollaboRoid</string>
+    <string name="collaboroid_settings_title">CollaboRoid</string>
+    <!-- Title of the Wi-fi settings screen -->
+    <string name="collaboroid_settings_category">CollaboRoid settings</string>
+    <string name="collaboroid_empty_list">No Remote Device...</string>
+    
+    <string name="collaboroid_menu_refresh">Refresh</string>
+    <string name="collaboroid_menu_start">Start Collaboration</string>
+    
+    <string name="collaboroid_dialog_resource">Resource</string>
+    <string name="collaboroid_dialog_ask">Ask</string>
+    <string name="collaboroid_dialog_request">Request</string>
+    <string name="collaboroid_dialog_allow">Allow</string>
+    
+    <string name="collaboroid_submit">Submit</string>
+    <string name="collaboroid_cancel">Cancel</string>
 
+    
     <!-- Dialog for Access Points --> <skip />
     <!-- Label to show/hide advanced options -->
     <string name="wifi_show_advanced">Show advanced options</string>
diff -urN Original_4.4.4_r1/packages/apps/Settings/res/values/styles.xml AndroidSource/packages/apps/Settings/res/values/styles.xml
--- Original_4.4.4_r1/packages/apps/Settings/res/values/styles.xml	2016-01-29 15:12:43.167488000 +0900
+++ AndroidSource/packages/apps/Settings/res/values/styles.xml	2016-01-18 14:39:37.000000000 +0900
@@ -248,4 +248,27 @@
     <style name="ApnPreference">
         <item name="android:layout">@layout/apn_preference_layout</item>
     </style>
+    
+    <!-- CollaboRoid -->
+    <style name="collaboroid_item">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:layout_marginTop">8dip</item>
+        <item name="android:layout_marginStart">16dip</item>
+        <item name="android:layout_marginEnd">16dip</item>
+        <item name="android:orientation">horizontal</item>
+        <item name="android:gravity">start</item>
+    </style>    
+    
+    <style name="collaboroid_item_label">
+        <item name="android:layout_width">wrap_content</item>
+        <item name="android:layout_height">wrap_content</item>
+        <item name="android:textSize">18sp</item>
+        <item name="android:textAlignment">viewStart</item>
+    </style>
+    
+    <style name="collaboroid_item_checkbox">
+        <item name="android:layout_width">wrap_content</item>
+        <item name="android:layout_height">wrap_content</item>
+    </style>
 </resources>
diff -urN Original_4.4.4_r1/packages/apps/Settings/res/xml/collaboroid_settings.xml AndroidSource/packages/apps/Settings/res/xml/collaboroid_settings.xml
--- Original_4.4.4_r1/packages/apps/Settings/res/xml/collaboroid_settings.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/Settings/res/xml/collaboroid_settings.xml	2016-01-05 18:44:40.000000000 +0900
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2010 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.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+        android:title="@string/collaboroid_settings_category">
+
+</PreferenceScreen>
diff -urN Original_4.4.4_r1/packages/apps/Settings/res/xml/settings_headers.xml AndroidSource/packages/apps/Settings/res/xml/settings_headers.xml
--- Original_4.4.4_r1/packages/apps/Settings/res/xml/settings_headers.xml	2016-01-29 15:12:43.171488000 +0900
+++ AndroidSource/packages/apps/Settings/res/xml/settings_headers.xml	2016-01-05 19:32:36.000000000 +0900
@@ -28,6 +28,13 @@
         android:fragment="com.android.settings.wifi.WifiSettings"
         android:title="@string/wifi_settings_title"
         android:icon="@drawable/ic_settings_wireless" />
+    
+    <!-- Collaboration -->
+    <header
+        android:id="@+id/collaboroid_settings"
+        android:fragment="com.android.settings.collaboroid.CollaboRoidSettings"
+        android:title="@string/collaboroid_settings_title"
+        android:icon="@drawable/ic_settings_wireless" />
 
     <!-- Bluetooth -->
     <header
diff -urN Original_4.4.4_r1/packages/apps/Settings/src/com/android/settings/collaboroid/CollaboRoidConfigUiBase.java AndroidSource/packages/apps/Settings/src/com/android/settings/collaboroid/CollaboRoidConfigUiBase.java
--- Original_4.4.4_r1/packages/apps/Settings/src/com/android/settings/collaboroid/CollaboRoidConfigUiBase.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/Settings/src/com/android/settings/collaboroid/CollaboRoidConfigUiBase.java	2016-01-06 10:20:03.000000000 +0900
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2010 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.android.settings.collaboroid;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.widget.Button;
+
+/**
+ * Foundation interface glues between Activities and UIs like
+ * {@link WifiDialog} or {@link WifiConfigUiForSetupWizardXL}.
+ */
+public interface CollaboRoidConfigUiBase {
+    public Context getContext();
+    public LayoutInflater getLayoutInflater();
+    public boolean isEdit();
+
+    public void setTitle(int id);
+    public void setTitle(CharSequence title);
+
+    public void setSubmitButton(CharSequence text);
+    public void setForgetButton(CharSequence text);
+    public void setCancelButton(CharSequence text);
+    public Button getSubmitButton();
+    public Button getForgetButton();
+    public Button getCancelButton();
+}
\ No newline at end of file
diff -urN Original_4.4.4_r1/packages/apps/Settings/src/com/android/settings/collaboroid/CollaboRoidDialog.java AndroidSource/packages/apps/Settings/src/com/android/settings/collaboroid/CollaboRoidDialog.java
--- Original_4.4.4_r1/packages/apps/Settings/src/com/android/settings/collaboroid/CollaboRoidDialog.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/Settings/src/com/android/settings/collaboroid/CollaboRoidDialog.java	2016-06-23 18:53:02.000000000 +0900
@@ -0,0 +1,218 @@
+/*
+ * Copyright (C) 2010 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.android.settings.collaboroid;
+
+import java.util.HashMap;
+
+import com.android.settings.R;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.service.devicemanager.Device;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.CompoundButton.OnCheckedChangeListener;
+import android.widget.TextView;
+
+class CollaboRoidDialog extends AlertDialog implements CollaboRoidConfigUiBase {
+	private static final String TAG = "CollaboRoidDialog";
+	
+    static final int BUTTON_SUBMIT = DialogInterface.BUTTON_POSITIVE;
+    static final int BUTTON_FORGET = DialogInterface.BUTTON_NEUTRAL;
+
+    private final boolean mEdit;
+    private final DialogInterface.OnClickListener mListener;
+    private final RemoteDevice mRemoteDevice;
+    
+    private HashMap<String, Boolean> askedResources = new HashMap<String, Boolean>();
+    private HashMap<String, Boolean> allowedResources = new HashMap<String, Boolean>();
+    
+    private CheckBox[] resourceCheckBoxes = new CheckBox[Device.RESOURCE_TYPE_SIZE];
+    private int[][] resources = new int[2][Device.RESOURCE_TYPE_SIZE];
+
+    private View mView;
+    //private WifiConfigController mController;
+
+    public CollaboRoidDialog(Context context, DialogInterface.OnClickListener listener,
+            RemoteDevice remoteDevice, boolean edit) {
+        super(context);
+        mEdit = edit;
+        mListener = listener;
+        mRemoteDevice = remoteDevice;
+    }
+    
+    public CollaboRoidDialog(Context context, DialogInterface.OnClickListener listener,
+            RemoteDevice remoteDevice) {
+        super(context);
+        mEdit = false;
+        mListener = listener;
+        mRemoteDevice = remoteDevice;
+    }
+
+    /*@Override
+    public WifiConfigController getController() {
+        return mController;
+    }*/
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) 
+    {
+        //mView = getLayoutInflater().inflate(R.layout.collaboroid_dialog, null);
+    	mView = getLayoutInflater().inflate(R.layout.collaboroid_dialog, null);
+        setView(mView);
+        setInverseBackgroundForced(true);
+        //mController = new WifiConfigController(this, mView, mRemoteDevice, mEdit);
+        super.onCreate(savedInstanceState);
+        
+        ViewGroup group = (ViewGroup) mView.findViewById(R.id.info);
+        
+        Log.d(TAG, mRemoteDevice.name + "  -  " + mRemoteDevice.description);
+        
+        for(int resource : mRemoteDevice.resources)
+        	addRow(group, resource, mRemoteDevice.askedResources[resource]==1, mRemoteDevice.allowedResources[resource]==1);
+    }
+    
+    private void addRow(ViewGroup group, int resource, Boolean isAsked, Boolean isAllowed) 
+    {
+        View row = this.getLayoutInflater().inflate(R.layout.collaboroid_dialog_row, group, false);
+        
+        ((TextView) row.findViewById(R.id.name)).setText(Device.ResourceNames[resource]);
+        
+    	CheckBox cb = (CheckBox) row.findViewById(R.id.checkbox_ask); 
+    	cb.setChecked(isAsked);
+    	cb.setTag(resource);
+    	cb.setOnCheckedChangeListener(new OnCheckedChangeListener()
+		{
+			@Override
+			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
+			{
+				// TODO Auto-generated method stub
+				String msg = buttonView.getText().toString();
+				
+				askedResources.put(msg, isChecked);
+				
+				resources[0][Integer.parseInt(buttonView.getTag().toString())] = isChecked?1:0;
+				
+				Log.d(TAG, buttonView.getTag() + " - " + isChecked);
+			}
+		});
+    	resourceCheckBoxes[resource] = cb;
+    	
+    	/*CheckBox cb2 = (CheckBox) row.findViewById(R.id.checkbox_allow); 
+    	cb2.setChecked(isAllowed);
+    	cb2.setTag(resource);
+    	cb2.setOnCheckedChangeListener(new OnCheckedChangeListener()
+		{
+			@Override
+			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
+			{
+				// TODO Auto-generated method stub
+				
+				String msg = buttonView.getText().toString();
+				
+				allowedResources.put(msg, isChecked);
+				
+				resources[1][Integer.parseInt(buttonView.getTag().toString())] = isChecked?1:0;
+				
+				Log.d(TAG, buttonView.getTag() + " - " + isChecked);
+			}
+		});*/
+    	
+    	group.addView(row);
+    	
+    	askedResources.put(Device.ResourceNames[resource], true);
+        //allowedResources.put(Device.ResourceNames[resource], true);
+    }
+    
+    public int[] getAskedResources()
+    {
+    	for(int i=0; i<Device.RESOURCE_TYPE_SIZE; i++)
+    		resources[0][i] = resourceCheckBoxes[i].isChecked()? 1:0;
+    	
+    	return resources[0];
+    }
+    
+    public int[] getAllowedResources()
+    {
+    	return resources[1];
+    }
+    
+        
+    public int getIntFromString(String resource)
+    {
+    	int id = -1;
+    	
+    	if(resource.equalsIgnoreCase("touch"))
+    		id = Device.RESOURCE_TYPE_TOUCH;
+    	else if(resource.equalsIgnoreCase("key"))
+    		id = Device.RESOURCE_TYPE_KEY;
+    	else if(resource.equalsIgnoreCase("location"))
+    		id = Device.RESOURCE_TYPE_LOCATION;
+    	else if(resource.equalsIgnoreCase("sensor"))
+    		id = Device.RESOURCE_TYPE_SENSOR;
+    	else if(resource.equalsIgnoreCase("vibrator"))
+    		id = Device.RESOURCE_TYPE_VIBRATOR;
+    	else if(resource.equalsIgnoreCase("video"))
+    		id = Device.RESOURCE_TYPE_VIDEO;
+    	else if(resource.equalsIgnoreCase("audio"))
+    		id = Device.RESOURCE_TYPE_AUDIO;
+    	
+    	
+    	return id;
+    }
+
+    @Override
+    public boolean isEdit() {
+        return mEdit;
+    }
+
+    @Override
+    public Button getSubmitButton() {
+        return getButton(BUTTON_SUBMIT);
+    }
+
+    @Override
+    public Button getForgetButton() {
+        return getButton(BUTTON_FORGET);
+    }
+
+    @Override
+    public Button getCancelButton() {
+        return getButton(BUTTON_NEGATIVE);
+    }
+
+    @Override
+    public void setSubmitButton(CharSequence text) {
+        setButton(BUTTON_SUBMIT, text, mListener);
+    }
+
+    @Override
+    public void setForgetButton(CharSequence text) {
+        setButton(BUTTON_FORGET, text, mListener);
+    }
+
+    @Override
+    public void setCancelButton(CharSequence text) {
+        setButton(BUTTON_NEGATIVE, text, mListener);
+    }
+}
diff -urN Original_4.4.4_r1/packages/apps/Settings/src/com/android/settings/collaboroid/CollaboRoidEnabler.java AndroidSource/packages/apps/Settings/src/com/android/settings/collaboroid/CollaboRoidEnabler.java
--- Original_4.4.4_r1/packages/apps/Settings/src/com/android/settings/collaboroid/CollaboRoidEnabler.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/Settings/src/com/android/settings/collaboroid/CollaboRoidEnabler.java	2016-06-23 16:39:31.000000000 +0900
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2010 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.android.settings.collaboroid;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.wifi.WifiManager;
+import android.provider.Settings;
+import android.service.collaboroid.CollaboRoidManager;
+import android.util.Log;
+import android.widget.CompoundButton;
+import android.widget.Switch;
+
+public class CollaboRoidEnabler implements CompoundButton.OnCheckedChangeListener  {
+	private static final String TAG = "CollaboRoidEnabler";
+	
+	private final Context mContext;
+    private Switch mSwitch;
+    //private AtomicBoolean mConnected = new AtomicBoolean(false);
+
+    private final IntentFilter mIntentFilter;
+    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+		@Override
+		public void onReceive(Context context, Intent intent) {
+			// TODO Auto-generated method stub
+			String action = intent.getAction();
+			
+			if(CollaboRoidManager.COLLABOROID_STATE_CHANGED_ACTION.equals(action))
+			{
+				handleStateChanged(intent.getIntExtra(CollaboRoidManager.EXTRA_COLLABOROID_STATE, 
+						CollaboRoidManager.COLLABOROID_STATE_UNKNOWN));
+			}
+		}
+	};
+    
+    public CollaboRoidEnabler(Context context, Switch switch_) {
+        mContext = context;
+        mSwitch = switch_;
+        
+        mIntentFilter = new IntentFilter(CollaboRoidManager.COLLABOROID_STATE_CHANGED_ACTION);
+    }
+
+    public void resume() {
+        // Wi-Fi state is sticky, so just let the receiver update UI
+        mContext.registerReceiver(mReceiver, mIntentFilter);
+    	mSwitch.setOnCheckedChangeListener(this);
+    }
+
+    public void pause() {
+    	mContext.unregisterReceiver(mReceiver);
+        mSwitch.setOnCheckedChangeListener(null);
+    }
+
+    public void setSwitch(Switch switch_) {
+        if (mSwitch == switch_) return;
+        mSwitch.setOnCheckedChangeListener(null);
+        mSwitch = switch_;
+        mSwitch.setOnCheckedChangeListener(this);
+
+        boolean isEnabled = false;
+        if(Settings.Global.getInt(mContext.getContentResolver(), "collaboroid_on",3) == 1)
+        	isEnabled = true;
+    	else
+    		isEnabled = false;
+        
+        Log.d(TAG, isEnabled + "");
+        mSwitch.setChecked(isEnabled);
+    }
+
+    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+    	
+    	CollaboRoidManager mCollaboRoidManager = (CollaboRoidManager) mContext.getSystemService(Context.COLLABOROID);
+    	Log.d(TAG, isChecked+"");
+		mCollaboRoidManager.setCollaboRoidEnabled(isChecked);
+		
+/*		if(isChecked)
+			updateRemoteDevices();
+		else
+			getPreferenceScreen().removeAll();*/
+    }
+
+    private void handleStateChanged(int state) {
+        switch (state) {
+            case CollaboRoidManager.COLLABOROID_STATE_ENABLING:
+                mSwitch.setEnabled(false);
+                break;
+            case CollaboRoidManager.COLLABOROID_STATE_ENABLED:
+                setSwitchChecked(true);
+                mSwitch.setEnabled(true);
+                break;
+            case CollaboRoidManager.COLLABOROID_STATE_DISABLING:
+                mSwitch.setEnabled(false);
+                break;
+            case CollaboRoidManager.COLLABOROID_STATE_DISABLED:
+                setSwitchChecked(false);
+                mSwitch.setEnabled(true);
+                break;
+            default:
+                setSwitchChecked(false);
+                mSwitch.setEnabled(true);
+                break;
+        }
+    }
+
+    private void setSwitchChecked(boolean checked) {
+        if (checked != mSwitch.isChecked()) {
+            mSwitch.setChecked(checked);
+        }
+    }
+}
diff -urN Original_4.4.4_r1/packages/apps/Settings/src/com/android/settings/collaboroid/CollaboRoidSettings.java AndroidSource/packages/apps/Settings/src/com/android/settings/collaboroid/CollaboRoidSettings.java
--- Original_4.4.4_r1/packages/apps/Settings/src/com/android/settings/collaboroid/CollaboRoidSettings.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/Settings/src/com/android/settings/collaboroid/CollaboRoidSettings.java	2016-06-22 20:46:06.000000000 +0900
@@ -0,0 +1,527 @@
+/*
+ * Copyright (C) 2010 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.android.settings.collaboroid;
+
+import static android.os.UserManager.DISALLOW_CONFIG_WIFI;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import android.app.ActionBar;
+import android.app.Activity;
+import android.app.Dialog;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.res.Resources;
+import android.content.res.TypedArray;
+import android.os.Bundle;
+import android.preference.CheckBoxPreference;
+import android.preference.Preference;
+import android.preference.PreferenceActivity;
+import android.preference.PreferenceScreen;
+import android.provider.Settings;
+import android.service.collaboroid.CollaboRoidManager;
+import android.service.devicemanager.Device;
+import android.service.devicemanager.DeviceManager;
+import android.service.remote.RemoteServiceManager;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.ContextMenu;
+import android.view.ContextMenu.ContextMenuInfo;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.CompoundButton;
+import android.widget.CompoundButton.OnCheckedChangeListener;
+import android.widget.RelativeLayout;
+import android.widget.Switch;
+import android.widget.TextView;
+
+import com.android.settings.R;
+import com.android.settings.RestrictedSettingsFragment;
+
+
+/**
+ * Two types of UI are provided here.
+ *
+ * The first is for "usual Settings", appearing as any other Setup fragment.
+ *
+ * The second is for Setup Wizard, with a simplified interface that hides the action bar
+ * and menus.
+ */
+public class CollaboRoidSettings extends RestrictedSettingsFragment
+        implements DialogInterface.OnClickListener  {
+   
+	private static final String TAG = "CollaboRoidSettings";
+	
+	private static final int REMOTE_DEVICE_DIALOG_ID = 1;
+	/*private static final int WPS_PBC_DIALOG_ID = 2;
+	private static final int WPS_PIN_DIALOG_ID = 3;
+	private static final int WIFI_SKIPPED_DIALOG_ID = 4;
+	private static final int WIFI_AND_MOBILE_SKIPPED_DIALOG_ID = 5;*/
+	
+	private static final int MENU_REFRESH_ID = 1;
+	private static final int MENU_START_ID = 2;
+	
+	private final IntentFilter mFilter;
+	private final BroadcastReceiver mReceiver;
+	
+	private TextView mEmptyView;
+	
+	private CollaboRoidEnabler mCollaboRoidEnabler;
+	
+	private RemoteDevice mSelectedRemoteDevice;
+	private CollaboRoidDialog mDialog;
+	
+	// Save the dialog details
+	//private boolean mDlgEdit;
+	private RemoteDevice mDlgRemoteDevice;
+	private Bundle mRemoteDeviceSavedState;
+	
+	private DeviceManager mDeviceManager;
+	private RemoteServiceManager mRemoteManager;
+	
+	private Switch actionBarSwitch;
+	
+	private final ArrayList<RemoteDevice> selectedRemoteDevices = new ArrayList<RemoteDevice>();
+	
+	
+	
+    public CollaboRoidSettings() {
+    	 super(DISALLOW_CONFIG_WIFI);
+    	 mFilter = new IntentFilter();
+    	 mFilter.addAction(CollaboRoidManager.COLLABOROID_STATE_CHANGED_ACTION);
+    	 
+    	 mReceiver = new BroadcastReceiver() {
+			@Override
+			public void onReceive(Context context, Intent intent) {
+				// TODO Auto-generated method stub
+				if(intent.getIntExtra(CollaboRoidManager.EXTRA_COLLABOROID_STATE, CollaboRoidManager.COLLABOROID_STATE_UNKNOWN)
+						== CollaboRoidManager.COLLABOROID_STATE_DISABLED)
+					setOffMessage();
+			}
+		};
+    }
+
+    @Override
+    public void onCreate(Bundle icicle) {
+        // Set this flag early, as it's needed by getHelpResource(), which is called by super
+     
+    	Log.d(TAG, "onCreate");
+        super.onCreate(icicle);
+    }
+
+    @Override
+    public View onCreateView(final LayoutInflater inflater, ViewGroup container,
+            Bundle savedInstanceState) {
+    	
+    	Log.d(TAG, "onCreateView");
+    	
+    	return super.onCreateView(inflater, container, savedInstanceState);
+        
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        final Activity activity = getActivity();
+        mDeviceManager = (DeviceManager) getSystemService(Context.DEVICE_MANAGEMENT_SERVICE);
+        mRemoteManager = (RemoteServiceManager) getSystemService(Context.REMOTE_SERVICE);
+        
+        //final Intent intent = activity.getIntent();
+        addPreferencesFromResource(R.xml.collaboroid_settings);
+        
+        actionBarSwitch = new Switch(activity);
+        
+        if (activity instanceof PreferenceActivity) {
+            PreferenceActivity preferenceActivity = (PreferenceActivity) activity;
+            if (preferenceActivity.onIsHidingHeaders() || !preferenceActivity.onIsMultiPane()) {
+                final int padding = activity.getResources().getDimensionPixelSize(
+                        R.dimen.action_bar_switch_padding);
+                actionBarSwitch.setPaddingRelative(0, 0, padding, 0);
+                activity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
+                        ActionBar.DISPLAY_SHOW_CUSTOM);
+                activity.getActionBar().setCustomView(actionBarSwitch, new ActionBar.LayoutParams(
+                        ActionBar.LayoutParams.WRAP_CONTENT,
+                        ActionBar.LayoutParams.WRAP_CONTENT,
+                        Gravity.CENTER_VERTICAL | Gravity.END));
+            }
+        }
+        
+        mCollaboRoidEnabler = new CollaboRoidEnabler(activity, actionBarSwitch);
+        
+        mEmptyView = (TextView) getView().findViewById(android.R.id.empty);
+        getListView().setEmptyView(mEmptyView);
+        
+        registerForContextMenu(getListView());
+        setHasOptionsMenu(true);
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        if(mCollaboRoidEnabler != null)
+        {
+        	mCollaboRoidEnabler.resume();
+        }
+        getActivity().registerReceiver(mReceiver, mFilter);
+        updateRemoteDevices();
+    }
+
+    @Override
+    public void onPause() {
+    	super.onPause();
+    	if(mCollaboRoidEnabler != null)
+        {
+        	mCollaboRoidEnabler.pause();
+        }
+    	getActivity().unregisterReceiver(mReceiver);
+    }
+
+    @Override
+    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+    	TypedArray ta = getActivity().getTheme().obtainStyledAttributes(
+                new int[] {R.attr.ic_menu_add, R.attr.ic_wps});
+    	
+		menu.add(Menu.NONE, MENU_REFRESH_ID, 0, R.string.collaboroid_menu_refresh)
+				//.setIcon(ta.getDrawable(1))
+				.setEnabled(true)
+				.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+		menu.add(Menu.NONE, MENU_START_ID, 0, R.string.collaboroid_menu_start)
+				//.setIcon(ta.getDrawable(0))
+				.setEnabled(true)
+				.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
+		/*menu.add(Menu.NONE, 2, 0, R.string.wifi_menu_scan)
+				// .setIcon(R.drawable.ic_menu_scan_network)
+				.setEnabled(true)
+				.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);*/
+		ta.recycle();
+        
+        super.onCreateOptionsMenu(menu, inflater);
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+
+      
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        // If the user is not allowed to configure wifi, do not handle menu selections.
+    //    if (isRestrictedAndNotPinProtected()) return false;
+
+    	Log.d(TAG, "onOptionItemSelected: " + item.getItemId());
+    	if(item.getItemId() == MENU_REFRESH_ID)
+    	{
+    		updateRemoteDevices();
+    		mRemoteManager.testOperation();
+    	}
+    	else if(item.getItemId() == MENU_START_ID)
+    	{
+    		//mDeviceManager.constructCluster(remoteDevicesToDevices(selectedRemoteDevices));
+    		mDeviceManager.askResources(remoteDevicesToDevices(selectedRemoteDevices));
+    		mRemoteManager.startServer();
+    	}
+        
+        return super.onOptionsItemSelected(item);
+    }
+    
+    public List<Device> remoteDevicesToDevices(List<RemoteDevice> remoteDevices)
+    {
+    	List<Device> devices = new ArrayList<Device>();
+    	
+    	for(RemoteDevice rd : remoteDevices)
+    		devices.add(rd.getDevice());
+    	
+    	return devices;
+    }
+
+    @Override
+    public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo info) {
+        
+    }
+
+    @Override
+    public boolean onContextItemSelected(MenuItem item) {
+    	Log.d(TAG, "onContextItemSelected: " + item.getItemId());
+    	
+        return super.onContextItemSelected(item);
+    }
+
+    @Override
+    public boolean onPreferenceTreeClick(PreferenceScreen screen, Preference preference) {
+    	
+    	//here!!
+    	if (preference instanceof RemoteDevice)
+		{
+    		if(((CheckBoxPreference)preference).isChecked())
+    		{
+    			selectedRemoteDevices.add((RemoteDevice)preference);
+    			mSelectedRemoteDevice = (RemoteDevice) preference;
+    			showDialog(mSelectedRemoteDevice);
+    		}
+    		else
+    			selectedRemoteDevices.remove(preference);
+		}
+    	else
+			return super.onPreferenceTreeClick(screen, preference);
+	
+		return true;
+    }
+    
+    private void showDialog(RemoteDevice remoteDevice)
+	{
+		if (mDialog != null)
+		{
+			//removeDialog(REMOTE_DEVICE_DIALOG_ID);
+			mDialog = null;
+		}
+
+		// Save the access point and edit mode
+		mDlgRemoteDevice = remoteDevice;
+		//mDlgEdit = edit;
+
+		showDialog(REMOTE_DEVICE_DIALOG_ID);
+	}
+
+   
+    @Override
+    public Dialog onCreateDialog(int dialogId) {
+    	
+        
+    	switch (dialogId)
+		{
+		case REMOTE_DEVICE_DIALOG_ID:
+			RemoteDevice rd = mDlgRemoteDevice; // For manual launch
+			Log.d(TAG, "onCreateDialog: " + rd.name);
+			
+			// null exception !!!!!!!!!!!!!!!!!!!!!!!!
+			
+			/*if (rd == null)
+			{ // For re-launch from saved state
+				if (mAccessPointSavedState != null)
+				{
+					ap = new AccessPoint(getActivity(), mAccessPointSavedState);
+					// For repeated orientation changes
+					mDlgRemoteDevice = ap;
+					// Reset the saved access point data
+					mAccessPointSavedState = null;
+				}
+			}*/
+			// If it's still null, fine, it's for Add Network
+			//mSelectedAccessPoint = ap;
+			
+			mDialog = new CollaboRoidDialog(getActivity(), this, rd);
+			mDialog.setSubmitButton(getActivity().getString(R.string.collaboroid_submit));
+			mDialog.setCancelButton(getActivity().getString(R.string.collaboroid_cancel));
+			mDialog.setTitle(rd.name);
+			return mDialog;
+		}
+    	
+        return super.onCreateDialog(dialogId);
+    }
+
+
+    @Override
+    public void onClick(DialogInterface dialogInterface, int button) {
+        /*if (button == WifiDialog.BUTTON_FORGET && mSelectedAccessPoint != null) {
+            forget();
+        } else if (button == WifiDialog.BUTTON_SUBMIT) {
+            if (mDialog != null) {
+                submit(mDialog.getController());
+            }
+        }*/
+    	
+    	Log.d(TAG, "onClick: " + button);
+    	if (button == CollaboRoidDialog.BUTTON_SUBMIT)
+		{
+			if (mDialog != null)
+			{
+				submit(mDialog);
+			}
+		}
+    }
+
+    void submit(CollaboRoidDialog dialog)
+    {
+    	mSelectedRemoteDevice.setAllowedResources(dialog.getAllowedResources());
+    	mSelectedRemoteDevice.setAskedResources(dialog.getAskedResources());
+    	
+    	/*int[] resources = dialog.getAllowedResources();
+    	for(int i=0; i<7; i++)
+    		Log.d(TAG, "allow: " + resources[i]);
+    	
+    	int[] resources2 = dialog.getAskedResources();
+    	for(int i=0; i<7; i++)
+    		Log.d(TAG, "ask: " + resources2[i]);
+    	
+    	Log.d(TAG, "TEST:" + resources2.toString());*/
+    	
+    	
+    }
+    
+    @Override
+    protected int getHelpResource() {
+        
+        return R.string.help_url_wifi;
+    }
+    
+    private void updateRemoteDevices()
+	{
+		// Safeguard from some delayed event handling
+		if (getActivity() == null)
+			return;
+		
+		final Collection<RemoteDevice> remoteDevices = findRemoteDevices();
+		getPreferenceScreen().removeAll();
+		
+		/*ArrayList<String> resources = new ArrayList<String>();
+    	resources.add("Touch");
+    	resources.add("Key");
+    	resources.add("Sensor");
+    	resources.add("Location");
+    	resources.add("Audio");
+    	resources.add("Video");
+		
+		RemoteDevice rd = new RemoteDevice(getActivity(), "JAKE", "21%", resources);
+		getPreferenceScreen().addPreference(rd);
+		
+		rd = new RemoteDevice(getActivity(), "SAM", "45%", resources);
+		getPreferenceScreen().addPreference(rd);*/
+		
+		/*if (remoteDevices.size() == 0)
+		{
+			addMessagePreference(R.string.collaboroid_empty_list);
+		}
+		else*/
+		
+		if(mDeviceManager.getNumofConfiguredDevices() > 0)
+		{
+			for (RemoteDevice remoteDevice : remoteDevices)
+			{
+				Device rd = mDeviceManager.getDevice(remoteDevice.name); 
+				if(rd != null)
+				{
+					remoteDevice.setAskedResources(rd.askedResources);
+					remoteDevice.setAllowedResources(rd.allowedResources);
+					remoteDevice.setChecked(true);
+				}
+				
+				getPreferenceScreen().addPreference(remoteDevice);
+			}
+		}
+		else
+			for (RemoteDevice remoteDevice : remoteDevices)
+			{
+				getPreferenceScreen().addPreference(remoteDevice);
+			}
+	}
+    
+    private void setOffMessage()
+    {
+    	if (mEmptyView != null) {
+			mEmptyView.setText(R.string.collaboroid_empty_list);
+		}
+		getPreferenceScreen().removeAll();
+	}
+	
+    
+    private void addMessagePreference(int messageId)
+	{
+		if (mEmptyView != null)
+			mEmptyView.setText(messageId);
+		getPreferenceScreen().removeAll();
+	}
+    
+    List<RemoteDevice> findRemoteDevices()
+    {
+    	List<Device> devices = mDeviceManager.getDeviceList(1);
+    	ArrayList<RemoteDevice> remoteDevices = new ArrayList<RemoteDevice>();
+    	
+    	// need to be modified
+    	ArrayList<Integer> resources = new ArrayList<Integer>();
+    	
+    	resources.add(Device.RESOURCE_TYPE_TOUCH);
+    	resources.add(Device.RESOURCE_TYPE_KEY);
+    	resources.add(Device.RESOURCE_TYPE_SENSOR);
+    	resources.add(Device.RESOURCE_TYPE_LOCATION);
+    	resources.add(Device.RESOURCE_TYPE_VIDEO);
+    	resources.add(Device.RESOURCE_TYPE_AUDIO);
+    	resources.add(Device.RESOURCE_TYPE_VIBRATOR);
+    	
+    	
+    	for(Device device : devices)
+    	{
+    		RemoteDevice remoteDevice = new RemoteDevice(getActivity(), device, resources);
+    		remoteDevices.add(remoteDevice);
+    		Log.d(TAG, device.toString());
+    	}
+    	
+    	return remoteDevices;
+    }
+
+    /**
+     * Used as the outer frame of all setup wizard pages that need to adjust their margins based
+     * on the total size of the available display. (e.g. side margins set to 10% of total width.)
+     */
+    public static class ProportionalOuterFrame extends RelativeLayout {
+        public ProportionalOuterFrame(Context context) {
+            super(context);
+        }
+        public ProportionalOuterFrame(Context context, AttributeSet attrs) {
+            super(context, attrs);
+        }
+        public ProportionalOuterFrame(Context context, AttributeSet attrs, int defStyle) {
+            super(context, attrs, defStyle);
+        }
+
+        /**
+         * Set our margins and title area height proportionally to the available display size
+         */
+        @Override
+        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+            int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
+            int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
+            final Resources resources = getContext().getResources();
+            float titleHeight = resources.getFraction(R.dimen.setup_title_height, 1, 1);
+            float sideMargin = resources.getFraction(R.dimen.setup_border_width, 1, 1);
+            int bottom = resources.getDimensionPixelSize(R.dimen.setup_margin_bottom);
+            setPaddingRelative(
+                    (int) (parentWidth * sideMargin),
+                    0,
+                    (int) (parentWidth * sideMargin),
+                    bottom);
+            View title = findViewById(R.id.title_area);
+            if (title != null) {
+                title.setMinimumHeight((int) (parentHeight * titleHeight));
+            }
+            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+        }
+    }
+
+}
diff -urN Original_4.4.4_r1/packages/apps/Settings/src/com/android/settings/collaboroid/RemoteDevice.java AndroidSource/packages/apps/Settings/src/com/android/settings/collaboroid/RemoteDevice.java
--- Original_4.4.4_r1/packages/apps/Settings/src/com/android/settings/collaboroid/RemoteDevice.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/Settings/src/com/android/settings/collaboroid/RemoteDevice.java	2016-06-20 21:00:58.000000000 +0900
@@ -0,0 +1,106 @@
+package com.android.settings.collaboroid;
+
+import java.util.ArrayList;
+
+import android.content.Context;
+import android.preference.CheckBoxPreference;
+import android.service.devicemanager.Device;
+
+public class RemoteDevice extends CheckBoxPreference
+{
+	Device device;
+	
+	String name;
+	String description;
+	
+	ArrayList<Integer> resources;
+	
+	int[] askedResources;
+	int[] allowedResources;
+	
+	public RemoteDevice(Context context)
+	{
+		super(context);
+		// TODO Auto-generated constructor stub
+		//setWidgetLayoutResource(R.layout.preference_widget_wifi_signal);
+		refresh();
+	}
+	
+	public RemoteDevice(Context context, String name, String des, ArrayList<Integer> resources)
+	{
+		super(context);
+		// TODO Auto-generated constructor stub
+		//setWidgetLayoutResource(R.layout.preference_widget_wifi_signal);
+		this.name = name;
+		description = des;
+		this.resources = resources;
+		askedResources = new int[Device.RESOURCE_TYPE_SIZE];
+		allowedResources = new int[Device.RESOURCE_TYPE_SIZE];
+		
+		refresh();
+	}
+	
+	public RemoteDevice(Context context, Device device, ArrayList<Integer> resources)
+	{
+		super(context);
+		// TODO Auto-generated constructor stub
+		//setWidgetLayoutResource(R.layout.preference_widget_wifi_signal);
+		this.device = device;
+		this.name = device.deviceName;
+		description = device.idleCpu;
+		this.resources = resources;
+		askedResources = new int[Device.RESOURCE_TYPE_SIZE];
+		allowedResources = new int[Device.RESOURCE_TYPE_SIZE];
+		
+		refresh();
+	}
+	
+	private void refresh() 
+	{
+		setTitle(name);
+		setSummary(description);
+	}
+	
+	public void setAllowedResources(int[] resources)
+	{
+		allowedResources = resources;
+		device.setAllowedResources(resources);
+	}
+	
+	public void setAskedResources(int[] resources)
+	{
+		askedResources = resources;
+		device.setAskedResources(resources);
+	}
+	
+	public int[] getAllowedResources()
+	{
+		return allowedResources;
+	}
+	
+	public int[] getAskedResources()
+	{
+		return askedResources;
+	}
+	
+	public String toString()
+	{
+		String str, allowed="", asked="";
+		
+		for(int resource : askedResources)
+			asked += (resource + " ");
+		
+		for(int resource : allowedResources)
+			allowed += (resource + " ");
+		
+		str = "name: " + name + " description: " + description + " resources: " + resources.toString() +  
+				"\nask: " + asked + "\nallowed: " + allowed;  
+		
+		return str;
+	}
+	
+	public Device getDevice()
+	{
+		return device;
+	}
+}
diff -urN Original_4.4.4_r1/packages/apps/Settings/src/com/android/settings/Settings.java AndroidSource/packages/apps/Settings/src/com/android/settings/Settings.java
--- Original_4.4.4_r1/packages/apps/Settings/src/com/android/settings/Settings.java	2016-01-29 15:12:43.179488000 +0900
+++ AndroidSource/packages/apps/Settings/src/com/android/settings/Settings.java	2016-01-13 12:21:58.000000000 +0900
@@ -71,6 +71,8 @@
 import com.android.settings.applications.ProcessStatsUi;
 import com.android.settings.bluetooth.BluetoothEnabler;
 import com.android.settings.bluetooth.BluetoothSettings;
+import com.android.settings.collaboroid.CollaboRoidEnabler;
+import com.android.settings.collaboroid.CollaboRoidSettings;
 import com.android.settings.deviceinfo.Memory;
 import com.android.settings.deviceinfo.UsbSettings;
 import com.android.settings.fuelgauge.PowerUsageSummary;
@@ -136,6 +138,7 @@
     private int[] SETTINGS_FOR_RESTRICTED = {
             R.id.wireless_section,
             R.id.wifi_settings,
+            R.id.collaboroid_settings,
             R.id.bluetooth_settings,
             R.id.data_usage_settings,
             R.id.wireless_settings,
@@ -309,6 +312,7 @@
     private static final String[] ENTRY_FRAGMENTS = {
         WirelessSettings.class.getName(),
         WifiSettings.class.getName(),
+        CollaboRoidSettings.class.getName(),
         AdvancedWifiSettings.class.getName(),
         BluetoothSettings.class.getName(),
         TetherSettings.class.getName(),
@@ -505,6 +509,7 @@
         // uiOptions for fragments also defined as activities in manifest.
         if (WifiSettings.class.getName().equals(fragmentName) ||
                 WifiP2pSettings.class.getName().equals(fragmentName) ||
+                CollaboRoidSettings.class.getName().equals(fragmentName) ||
                 BluetoothSettings.class.getName().equals(fragmentName) ||
                 DreamSettings.class.getName().equals(fragmentName) ||
                 LocationSettings.class.getName().equals(fragmentName) ||
@@ -779,6 +784,7 @@
         private static final int HEADER_TYPE_COUNT = HEADER_TYPE_BUTTON + 1;
 
         private final WifiEnabler mWifiEnabler;
+        private final CollaboRoidEnabler mCollaboRoidEnabler;
         private final BluetoothEnabler mBluetoothEnabler;
         private AuthenticatorHelper mAuthHelper;
         private DevicePolicyManager mDevicePolicyManager;
@@ -797,7 +803,7 @@
         static int getHeaderType(Header header) {
             if (header.fragment == null && header.intent == null) {
                 return HEADER_TYPE_CATEGORY;
-            } else if (header.id == R.id.wifi_settings || header.id == R.id.bluetooth_settings) {
+            } else if (header.id == R.id.wifi_settings || header.id == R.id.collaboroid_settings || header.id == R.id.bluetooth_settings) {
                 return HEADER_TYPE_SWITCH;
             } else if (header.id == R.id.security_settings) {
                 return HEADER_TYPE_BUTTON;
@@ -842,6 +848,7 @@
             // Temp Switches provided as placeholder until the adapter replaces these with actual
             // Switches inflated from their layouts. Must be done before adapter is set in super
             mWifiEnabler = new WifiEnabler(context, new Switch(context));
+            mCollaboRoidEnabler = new CollaboRoidEnabler(context, new Switch(context));
             mBluetoothEnabler = new BluetoothEnabler(context, new Switch(context));
             mDevicePolicyManager = dpm;
         }
@@ -912,7 +919,12 @@
                     // Would need a different treatment if the main menu had more switches
                     if (header.id == R.id.wifi_settings) {
                         mWifiEnabler.setSwitch(holder.switch_);
-                    } else {
+                    }
+                    else if(header.id == R.id.collaboroid_settings)
+                    {
+                    	mCollaboRoidEnabler.setSwitch(holder.switch_);
+                    }
+                    else {
                         mBluetoothEnabler.setSwitch(holder.switch_);
                     }
                     updateCommonHeaderView(header, holder);
@@ -986,11 +998,13 @@
 
         public void resume() {
             mWifiEnabler.resume();
+            mCollaboRoidEnabler.resume();
             mBluetoothEnabler.resume();
         }
 
         public void pause() {
             mWifiEnabler.pause();
+            mCollaboRoidEnabler.pause();
             mBluetoothEnabler.pause();
         }
     }
diff -urN Original_4.4.4_r1/packages/apps/Settings/src/com/android/settings/wifi/WifiSettings.java AndroidSource/packages/apps/Settings/src/com/android/settings/wifi/WifiSettings.java
--- Original_4.4.4_r1/packages/apps/Settings/src/com/android/settings/wifi/WifiSettings.java	2016-01-29 15:12:43.191488000 +0900
+++ AndroidSource/packages/apps/Settings/src/com/android/settings/wifi/WifiSettings.java	2016-01-12 13:46:51.000000000 +0900
@@ -83,1047 +83,1300 @@
 
 /**
  * Two types of UI are provided here.
- *
+ * 
  * The first is for "usual Settings", appearing as any other Setup fragment.
- *
- * The second is for Setup Wizard, with a simplified interface that hides the action bar
- * and menus.
+ * 
+ * The second is for Setup Wizard, with a simplified interface that hides the
+ * action bar and menus.
  */
-public class WifiSettings extends RestrictedSettingsFragment
-        implements DialogInterface.OnClickListener  {
-    private static final String TAG = "WifiSettings";
-    private static final int MENU_ID_WPS_PBC = Menu.FIRST;
-    private static final int MENU_ID_WPS_PIN = Menu.FIRST + 1;
-    private static final int MENU_ID_P2P = Menu.FIRST + 2;
-    private static final int MENU_ID_ADD_NETWORK = Menu.FIRST + 3;
-    private static final int MENU_ID_ADVANCED = Menu.FIRST + 4;
-    private static final int MENU_ID_SCAN = Menu.FIRST + 5;
-    private static final int MENU_ID_CONNECT = Menu.FIRST + 6;
-    private static final int MENU_ID_FORGET = Menu.FIRST + 7;
-    private static final int MENU_ID_MODIFY = Menu.FIRST + 8;
-
-    private static final int WIFI_DIALOG_ID = 1;
-    private static final int WPS_PBC_DIALOG_ID = 2;
-    private static final int WPS_PIN_DIALOG_ID = 3;
-    private static final int WIFI_SKIPPED_DIALOG_ID = 4;
-    private static final int WIFI_AND_MOBILE_SKIPPED_DIALOG_ID = 5;
-
-    // Combo scans can take 5-6s to complete - set to 10s.
-    private static final int WIFI_RESCAN_INTERVAL_MS = 10 * 1000;
-
-    // Instance state keys
-    private static final String SAVE_DIALOG_EDIT_MODE = "edit_mode";
-    private static final String SAVE_DIALOG_ACCESS_POINT_STATE = "wifi_ap_state";
-
-    // Activity result when pressing the Skip button
-    private static final int RESULT_SKIP = Activity.RESULT_FIRST_USER;
-
-    private final IntentFilter mFilter;
-    private final BroadcastReceiver mReceiver;
-    private final Scanner mScanner;
-
-    private WifiManager mWifiManager;
-    private WifiManager.ActionListener mConnectListener;
-    private WifiManager.ActionListener mSaveListener;
-    private WifiManager.ActionListener mForgetListener;
-    private boolean mP2pSupported;
-
-    private WifiEnabler mWifiEnabler;
-    // An access point being editted is stored here.
-    private AccessPoint mSelectedAccessPoint;
-
-    private DetailedState mLastState;
-    private WifiInfo mLastInfo;
-
-    private final AtomicBoolean mConnected = new AtomicBoolean(false);
-
-    private WifiDialog mDialog;
-
-    private TextView mEmptyView;
-
-    /* Used in Wifi Setup context */
-
-    // this boolean extra specifies whether to disable the Next button when not connected
-    private static final String EXTRA_ENABLE_NEXT_ON_CONNECT = "wifi_enable_next_on_connect";
-
-    // this boolean extra specifies whether to auto finish when connection is established
-    private static final String EXTRA_AUTO_FINISH_ON_CONNECT = "wifi_auto_finish_on_connect";
-
-    // this boolean extra shows a custom button that we can control
-    protected static final String EXTRA_SHOW_CUSTOM_BUTTON = "wifi_show_custom_button";
-
-    // show a text regarding data charges when wifi connection is required during setup wizard
-    protected static final String EXTRA_SHOW_WIFI_REQUIRED_INFO = "wifi_show_wifi_required_info";
-
-    // this boolean extra is set if we are being invoked by the Setup Wizard
-    private static final String EXTRA_IS_FIRST_RUN = "firstRun";
-
-    // should Next button only be enabled when we have a connection?
-    private boolean mEnableNextOnConnection;
-
-    // should activity finish once we have a connection?
-    private boolean mAutoFinishOnConnection;
-
-    // Save the dialog details
-    private boolean mDlgEdit;
-    private AccessPoint mDlgAccessPoint;
-    private Bundle mAccessPointSavedState;
-
-    // the action bar uses a different set of controls for Setup Wizard
-    private boolean mSetupWizardMode;
-
-    /* End of "used in Wifi Setup context" */
-
-    public WifiSettings() {
-        super(DISALLOW_CONFIG_WIFI);
-        mFilter = new IntentFilter();
-        mFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
-        mFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
-        mFilter.addAction(WifiManager.NETWORK_IDS_CHANGED_ACTION);
-        mFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
-        mFilter.addAction(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION);
-        mFilter.addAction(WifiManager.LINK_CONFIGURATION_CHANGED_ACTION);
-        mFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
-        mFilter.addAction(WifiManager.RSSI_CHANGED_ACTION);
-
-        mReceiver = new BroadcastReceiver() {
-            @Override
-            public void onReceive(Context context, Intent intent) {
-                handleEvent(context, intent);
-            }
-        };
-
-        mScanner = new Scanner();
-    }
-
-    @Override
-    public void onCreate(Bundle icicle) {
-        // Set this flag early, as it's needed by getHelpResource(), which is called by super
-        mSetupWizardMode = getActivity().getIntent().getBooleanExtra(EXTRA_IS_FIRST_RUN, false);
-
-        super.onCreate(icicle);
-    }
-
-    @Override
-    public View onCreateView(final LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState) {
-        if (mSetupWizardMode) {
-            View view = inflater.inflate(R.layout.setup_preference, container, false);
-            View other = view.findViewById(R.id.other_network);
-            other.setOnClickListener(new OnClickListener() {
-                @Override
-                public void onClick(View v) {
-                    if (mWifiManager.isWifiEnabled()) {
-                        onAddNetworkPressed();
-                    }
-                }
-            });
-            final ImageButton b = (ImageButton) view.findViewById(R.id.more);
-            if (b != null) {
-                b.setOnClickListener(new OnClickListener() {
-                    @Override
-                    public void onClick(View v) {
-                        if (mWifiManager.isWifiEnabled()) {
-                            PopupMenu pm = new PopupMenu(inflater.getContext(), b);
-                            pm.inflate(R.menu.wifi_setup);
-                            pm.setOnMenuItemClickListener(new OnMenuItemClickListener() {
-                                @Override
-                                public boolean onMenuItemClick(MenuItem item) {
-                                    if (R.id.wifi_wps == item.getItemId()) {
-                                        showDialog(WPS_PBC_DIALOG_ID);
-                                        return true;
-                                    }
-                                    return false;
-                                }
-                            });
-                            pm.show();
-                        }
-                    }
-                });
-            }
-
-            Intent intent = getActivity().getIntent();
-            if (intent.getBooleanExtra(EXTRA_SHOW_CUSTOM_BUTTON, false)) {
-                view.findViewById(R.id.button_bar).setVisibility(View.VISIBLE);
-                view.findViewById(R.id.back_button).setVisibility(View.INVISIBLE);
-                view.findViewById(R.id.skip_button).setVisibility(View.INVISIBLE);
-                view.findViewById(R.id.next_button).setVisibility(View.INVISIBLE);
-
-                Button customButton = (Button) view.findViewById(R.id.custom_button);
-                customButton.setVisibility(View.VISIBLE);
-                customButton.setOnClickListener(new OnClickListener() {
-                    @Override
-                    public void onClick(View v) {
-                        boolean isConnected = false;
-                        Activity activity = getActivity();
-                        final ConnectivityManager connectivity = (ConnectivityManager)
-                                activity.getSystemService(Context.CONNECTIVITY_SERVICE);
-                        if (connectivity != null) {
-                            final NetworkInfo info = connectivity.getActiveNetworkInfo();
-                            isConnected = (info != null) && info.isConnected();
-                        }
-                        if (isConnected) {
-                            // Warn of possible data charges
-                            showDialog(WIFI_SKIPPED_DIALOG_ID);
-                        } else {
-                            // Warn of lack of updates
-                            showDialog(WIFI_AND_MOBILE_SKIPPED_DIALOG_ID);
-                        }
-                    }
-                });
-            }
-
-            if (intent.getBooleanExtra(EXTRA_SHOW_WIFI_REQUIRED_INFO, false)) {
-                view.findViewById(R.id.wifi_required_info).setVisibility(View.VISIBLE);
-            }
-
-            return view;
-        } else {
-            return super.onCreateView(inflater, container, savedInstanceState);
-        }
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-
-        mP2pSupported = getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI_DIRECT);
-        mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
-
-        mConnectListener = new WifiManager.ActionListener() {
-                                   @Override
-                                   public void onSuccess() {
-                                   }
-                                   @Override
-                                   public void onFailure(int reason) {
-                                       Activity activity = getActivity();
-                                       if (activity != null) {
-                                           Toast.makeText(activity,
-                                                R.string.wifi_failed_connect_message,
-                                                Toast.LENGTH_SHORT).show();
-                                       }
-                                   }
-                               };
-
-        mSaveListener = new WifiManager.ActionListener() {
-                                @Override
-                                public void onSuccess() {
-                                }
-                                @Override
-                                public void onFailure(int reason) {
-                                    Activity activity = getActivity();
-                                    if (activity != null) {
-                                        Toast.makeText(activity,
-                                            R.string.wifi_failed_save_message,
-                                            Toast.LENGTH_SHORT).show();
-                                    }
-                                }
-                            };
-
-        mForgetListener = new WifiManager.ActionListener() {
-                                   @Override
-                                   public void onSuccess() {
-                                   }
-                                   @Override
-                                   public void onFailure(int reason) {
-                                       Activity activity = getActivity();
-                                       if (activity != null) {
-                                           Toast.makeText(activity,
-                                               R.string.wifi_failed_forget_message,
-                                               Toast.LENGTH_SHORT).show();
-                                       }
-                                   }
-                               };
-
-        if (savedInstanceState != null
-                && savedInstanceState.containsKey(SAVE_DIALOG_ACCESS_POINT_STATE)) {
-            mDlgEdit = savedInstanceState.getBoolean(SAVE_DIALOG_EDIT_MODE);
-            mAccessPointSavedState = savedInstanceState.getBundle(SAVE_DIALOG_ACCESS_POINT_STATE);
-        }
-
-        final Activity activity = getActivity();
-        final Intent intent = activity.getIntent();
-
-        // first if we're supposed to finish once we have a connection
-        mAutoFinishOnConnection = intent.getBooleanExtra(EXTRA_AUTO_FINISH_ON_CONNECT, false);
-
-        if (mAutoFinishOnConnection) {
-            // Hide the next button
-            if (hasNextButton()) {
-                getNextButton().setVisibility(View.GONE);
-            }
-
-            final ConnectivityManager connectivity = (ConnectivityManager)
-                    activity.getSystemService(Context.CONNECTIVITY_SERVICE);
-            if (connectivity != null
-                    && connectivity.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) {
-                activity.setResult(Activity.RESULT_OK);
-                activity.finish();
-                return;
-            }
-        }
-
-        // if we're supposed to enable/disable the Next button based on our current connection
-        // state, start it off in the right state
-        mEnableNextOnConnection = intent.getBooleanExtra(EXTRA_ENABLE_NEXT_ON_CONNECT, false);
-
-        if (mEnableNextOnConnection) {
-            if (hasNextButton()) {
-                final ConnectivityManager connectivity = (ConnectivityManager)
-                        activity.getSystemService(Context.CONNECTIVITY_SERVICE);
-                if (connectivity != null) {
-                    NetworkInfo info = connectivity.getNetworkInfo(
-                            ConnectivityManager.TYPE_WIFI);
-                    changeNextButtonState(info.isConnected());
-                }
-            }
-        }
-
-        addPreferencesFromResource(R.xml.wifi_settings);
-
-        if (mSetupWizardMode) {
-            getView().setSystemUiVisibility(
-//                    View.STATUS_BAR_DISABLE_BACK |
-                    View.STATUS_BAR_DISABLE_HOME |
-                    View.STATUS_BAR_DISABLE_RECENT |
-                    View.STATUS_BAR_DISABLE_NOTIFICATION_ALERTS |
-                    View.STATUS_BAR_DISABLE_CLOCK);
-        }
-
-        // On/off switch is hidden for Setup Wizard
-        if (!mSetupWizardMode) {
-            Switch actionBarSwitch = new Switch(activity);
-
-            if (activity instanceof PreferenceActivity) {
-                PreferenceActivity preferenceActivity = (PreferenceActivity) activity;
-                if (preferenceActivity.onIsHidingHeaders() || !preferenceActivity.onIsMultiPane()) {
-                    final int padding = activity.getResources().getDimensionPixelSize(
-                            R.dimen.action_bar_switch_padding);
-                    actionBarSwitch.setPaddingRelative(0, 0, padding, 0);
-                    activity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
-                            ActionBar.DISPLAY_SHOW_CUSTOM);
-                    activity.getActionBar().setCustomView(actionBarSwitch, new ActionBar.LayoutParams(
-                            ActionBar.LayoutParams.WRAP_CONTENT,
-                            ActionBar.LayoutParams.WRAP_CONTENT,
-                            Gravity.CENTER_VERTICAL | Gravity.END));
-                }
-            }
-
-            mWifiEnabler = new WifiEnabler(activity, actionBarSwitch);
-        }
-
-        mEmptyView = (TextView) getView().findViewById(android.R.id.empty);
-        getListView().setEmptyView(mEmptyView);
-
-        if (!mSetupWizardMode) {
-            registerForContextMenu(getListView());
-        }
-        setHasOptionsMenu(true);
-    }
-
-    @Override
-    public void onResume() {
-        super.onResume();
-        if (mWifiEnabler != null) {
-            mWifiEnabler.resume();
-        }
-
-        getActivity().registerReceiver(mReceiver, mFilter);
-        updateAccessPoints();
-    }
-
-    @Override
-    public void onPause() {
-        super.onPause();
-        if (mWifiEnabler != null) {
-            mWifiEnabler.pause();
-        }
-        getActivity().unregisterReceiver(mReceiver);
-        mScanner.pause();
-    }
-
-    @Override
-    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
-        // If the user is not allowed to configure wifi, do not show the menu.
-        if (isRestrictedAndNotPinProtected()) return;
-
-        final boolean wifiIsEnabled = mWifiManager.isWifiEnabled();
-        TypedArray ta = getActivity().getTheme().obtainStyledAttributes(
-                new int[] {R.attr.ic_menu_add, R.attr.ic_wps});
-        if (mSetupWizardMode) {
-            menu.add(Menu.NONE, MENU_ID_WPS_PBC, 0, R.string.wifi_menu_wps_pbc)
-                    .setIcon(ta.getDrawable(1))
-                    .setEnabled(wifiIsEnabled)
-                    .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
-            menu.add(Menu.NONE, MENU_ID_ADD_NETWORK, 0, R.string.wifi_add_network)
-                    .setEnabled(wifiIsEnabled)
-                    .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
-        } else {
-            menu.add(Menu.NONE, MENU_ID_WPS_PBC, 0, R.string.wifi_menu_wps_pbc)
-                    .setIcon(ta.getDrawable(1))
-                    .setEnabled(wifiIsEnabled)
-                    .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
-            menu.add(Menu.NONE, MENU_ID_ADD_NETWORK, 0, R.string.wifi_add_network)
-                    .setIcon(ta.getDrawable(0))
-                    .setEnabled(wifiIsEnabled)
-                    .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
-            menu.add(Menu.NONE, MENU_ID_SCAN, 0, R.string.wifi_menu_scan)
-                    //.setIcon(R.drawable.ic_menu_scan_network)
-                    .setEnabled(wifiIsEnabled)
-                    .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
-            menu.add(Menu.NONE, MENU_ID_WPS_PIN, 0, R.string.wifi_menu_wps_pin)
-                    .setEnabled(wifiIsEnabled)
-                    .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
-            if (mP2pSupported) {
-                menu.add(Menu.NONE, MENU_ID_P2P, 0, R.string.wifi_menu_p2p)
-                        .setEnabled(wifiIsEnabled)
-                        .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
-            }
-            menu.add(Menu.NONE, MENU_ID_ADVANCED, 0, R.string.wifi_menu_advanced)
-                    //.setIcon(android.R.drawable.ic_menu_manage)
-                    .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
-        }
-        ta.recycle();
-        super.onCreateOptionsMenu(menu, inflater);
-    }
-
-    @Override
-    public void onSaveInstanceState(Bundle outState) {
-        super.onSaveInstanceState(outState);
-
-        // If the dialog is showing, save its state.
-        if (mDialog != null && mDialog.isShowing()) {
-            outState.putBoolean(SAVE_DIALOG_EDIT_MODE, mDlgEdit);
-            if (mDlgAccessPoint != null) {
-                mAccessPointSavedState = new Bundle();
-                mDlgAccessPoint.saveWifiState(mAccessPointSavedState);
-                outState.putBundle(SAVE_DIALOG_ACCESS_POINT_STATE, mAccessPointSavedState);
-            }
-        }
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        // If the user is not allowed to configure wifi, do not handle menu selections.
-        if (isRestrictedAndNotPinProtected()) return false;
-
-        switch (item.getItemId()) {
-            case MENU_ID_WPS_PBC:
-                showDialog(WPS_PBC_DIALOG_ID);
-                return true;
-            case MENU_ID_P2P:
-                if (getActivity() instanceof PreferenceActivity) {
-                    ((PreferenceActivity) getActivity()).startPreferencePanel(
-                            WifiP2pSettings.class.getCanonicalName(),
-                            null,
-                            R.string.wifi_p2p_settings_title, null,
-                            this, 0);
-                } else {
-                    startFragment(this, WifiP2pSettings.class.getCanonicalName(), -1, null);
-                }
-                return true;
-            case MENU_ID_WPS_PIN:
-                showDialog(WPS_PIN_DIALOG_ID);
-                return true;
-            case MENU_ID_SCAN:
-                if (mWifiManager.isWifiEnabled()) {
-                    mScanner.forceScan();
-                }
-                return true;
-            case MENU_ID_ADD_NETWORK:
-                if (mWifiManager.isWifiEnabled()) {
-                    onAddNetworkPressed();
-                }
-                return true;
-            case MENU_ID_ADVANCED:
-                if (getActivity() instanceof PreferenceActivity) {
-                    ((PreferenceActivity) getActivity()).startPreferencePanel(
-                            AdvancedWifiSettings.class.getCanonicalName(),
-                            null,
-                            R.string.wifi_advanced_titlebar, null,
-                            this, 0);
-                } else {
-                    startFragment(this, AdvancedWifiSettings.class.getCanonicalName(), -1, null);
-                }
-                return true;
-        }
-        return super.onOptionsItemSelected(item);
-    }
-
-    @Override
-    public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo info) {
-        if (info instanceof AdapterContextMenuInfo) {
-            Preference preference = (Preference) getListView().getItemAtPosition(
-                    ((AdapterContextMenuInfo) info).position);
-
-            if (preference instanceof AccessPoint) {
-                mSelectedAccessPoint = (AccessPoint) preference;
-                menu.setHeaderTitle(mSelectedAccessPoint.ssid);
-                if (mSelectedAccessPoint.getLevel() != -1
-                        && mSelectedAccessPoint.getState() == null) {
-                    menu.add(Menu.NONE, MENU_ID_CONNECT, 0, R.string.wifi_menu_connect);
-                }
-                if (mSelectedAccessPoint.networkId != INVALID_NETWORK_ID) {
-                    menu.add(Menu.NONE, MENU_ID_FORGET, 0, R.string.wifi_menu_forget);
-                    menu.add(Menu.NONE, MENU_ID_MODIFY, 0, R.string.wifi_menu_modify);
-                }
-            }
-        }
-    }
-
-    @Override
-    public boolean onContextItemSelected(MenuItem item) {
-        if (mSelectedAccessPoint == null) {
-            return super.onContextItemSelected(item);
-        }
-        switch (item.getItemId()) {
-            case MENU_ID_CONNECT: {
-                if (mSelectedAccessPoint.networkId != INVALID_NETWORK_ID) {
-                    mWifiManager.connect(mSelectedAccessPoint.networkId,
-                            mConnectListener);
-                } else if (mSelectedAccessPoint.security == AccessPoint.SECURITY_NONE) {
-                    /** Bypass dialog for unsecured networks */
-                    mSelectedAccessPoint.generateOpenNetworkConfig();
-                    mWifiManager.connect(mSelectedAccessPoint.getConfig(),
-                            mConnectListener);
-                } else {
-                    showDialog(mSelectedAccessPoint, true);
-                }
-                return true;
-            }
-            case MENU_ID_FORGET: {
-                mWifiManager.forget(mSelectedAccessPoint.networkId, mForgetListener);
-                return true;
-            }
-            case MENU_ID_MODIFY: {
-                showDialog(mSelectedAccessPoint, true);
-                return true;
-            }
-        }
-        return super.onContextItemSelected(item);
-    }
-
-    @Override
-    public boolean onPreferenceTreeClick(PreferenceScreen screen, Preference preference) {
-        if (preference instanceof AccessPoint) {
-            mSelectedAccessPoint = (AccessPoint) preference;
-            /** Bypass dialog for unsecured, unsaved networks */
-            if (mSelectedAccessPoint.security == AccessPoint.SECURITY_NONE &&
-                    mSelectedAccessPoint.networkId == INVALID_NETWORK_ID) {
-                mSelectedAccessPoint.generateOpenNetworkConfig();
-                mWifiManager.connect(mSelectedAccessPoint.getConfig(), mConnectListener);
-            } else {
-                showDialog(mSelectedAccessPoint, false);
-            }
-        } else {
-            return super.onPreferenceTreeClick(screen, preference);
-        }
-        return true;
-    }
-
-    private void showDialog(AccessPoint accessPoint, boolean edit) {
-        if (mDialog != null) {
-            removeDialog(WIFI_DIALOG_ID);
-            mDialog = null;
-        }
-
-        // Save the access point and edit mode
-        mDlgAccessPoint = accessPoint;
-        mDlgEdit = edit;
-
-        showDialog(WIFI_DIALOG_ID);
-    }
-
-    @Override
-    public Dialog onCreateDialog(int dialogId) {
-        switch (dialogId) {
-            case WIFI_DIALOG_ID:
-                AccessPoint ap = mDlgAccessPoint; // For manual launch
-                if (ap == null) { // For re-launch from saved state
-                    if (mAccessPointSavedState != null) {
-                        ap = new AccessPoint(getActivity(), mAccessPointSavedState);
-                        // For repeated orientation changes
-                        mDlgAccessPoint = ap;
-                        // Reset the saved access point data
-                        mAccessPointSavedState = null;
-                    }
-                }
-                // If it's still null, fine, it's for Add Network
-                mSelectedAccessPoint = ap;
-                mDialog = new WifiDialog(getActivity(), this, ap, mDlgEdit);
-                return mDialog;
-            case WPS_PBC_DIALOG_ID:
-                return new WpsDialog(getActivity(), WpsInfo.PBC);
-            case WPS_PIN_DIALOG_ID:
-                return new WpsDialog(getActivity(), WpsInfo.DISPLAY);
-            case WIFI_SKIPPED_DIALOG_ID:
-                return new AlertDialog.Builder(getActivity())
-                            .setMessage(R.string.wifi_skipped_message)
-                            .setCancelable(false)
-                            .setNegativeButton(R.string.wifi_skip_anyway,
-                                    new DialogInterface.OnClickListener() {
-                                @Override
-                                public void onClick(DialogInterface dialog, int id) {
-                                    getActivity().setResult(RESULT_SKIP);
-                                    getActivity().finish();
-                                }
-                            })
-                            .setPositiveButton(R.string.wifi_dont_skip,
-                                    new DialogInterface.OnClickListener() {
-                                @Override
-                                public void onClick(DialogInterface dialog, int id) {
-                                }
-                            })
-                            .create();
-            case WIFI_AND_MOBILE_SKIPPED_DIALOG_ID:
-                return new AlertDialog.Builder(getActivity())
-                            .setMessage(R.string.wifi_and_mobile_skipped_message)
-                            .setCancelable(false)
-                            .setNegativeButton(R.string.wifi_skip_anyway,
-                                    new DialogInterface.OnClickListener() {
-                                @Override
-                                public void onClick(DialogInterface dialog, int id) {
-                                    getActivity().setResult(RESULT_SKIP);
-                                    getActivity().finish();
-                                }
-                            })
-                            .setPositiveButton(R.string.wifi_dont_skip,
-                                    new DialogInterface.OnClickListener() {
-                                @Override
-                                public void onClick(DialogInterface dialog, int id) {
-                                }
-                            })
-                            .create();
-
-        }
-        return super.onCreateDialog(dialogId);
-    }
-
-    /**
-     * Shows the latest access points available with supplimental information like
-     * the strength of network and the security for it.
-     */
-    private void updateAccessPoints() {
-        // Safeguard from some delayed event handling
-        if (getActivity() == null) return;
-
-        if (isRestrictedAndNotPinProtected()) {
-            addMessagePreference(R.string.wifi_empty_list_user_restricted);
-            return;
-        }
-        final int wifiState = mWifiManager.getWifiState();
-
-        switch (wifiState) {
-            case WifiManager.WIFI_STATE_ENABLED:
-                // AccessPoints are automatically sorted with TreeSet.
-                final Collection<AccessPoint> accessPoints = constructAccessPoints();
-                getPreferenceScreen().removeAll();
-                if(accessPoints.size() == 0) {
-                    addMessagePreference(R.string.wifi_empty_list_wifi_on);
-                }
-                for (AccessPoint accessPoint : accessPoints) {
-                    getPreferenceScreen().addPreference(accessPoint);
-                }
-                break;
-
-            case WifiManager.WIFI_STATE_ENABLING:
-                getPreferenceScreen().removeAll();
-                break;
-
-            case WifiManager.WIFI_STATE_DISABLING:
-                addMessagePreference(R.string.wifi_stopping);
-                break;
-
-            case WifiManager.WIFI_STATE_DISABLED:
-                setOffMessage();
-                break;
-        }
-    }
-
-    private void setOffMessage() {
-        if (mEmptyView != null) {
-            mEmptyView.setText(R.string.wifi_empty_list_wifi_off);
-            if (Settings.Global.getInt(getActivity().getContentResolver(),
-                    Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 1) {
-                mEmptyView.append("\n\n");
-                int resId;
-                if (Settings.Secure.isLocationProviderEnabled(getActivity().getContentResolver(),
-                        LocationManager.NETWORK_PROVIDER)) {
-                    resId = R.string.wifi_scan_notify_text_location_on;
-                } else {
-                    resId = R.string.wifi_scan_notify_text_location_off;
-                }
-                CharSequence charSeq = getText(resId);
-                mEmptyView.append(charSeq);
-            }
-        }
-        getPreferenceScreen().removeAll();
-    }
-
-    private void addMessagePreference(int messageId) {
-        if (mEmptyView != null) mEmptyView.setText(messageId);
-        getPreferenceScreen().removeAll();
-    }
-
-    /** Returns sorted list of access points */
-    private List<AccessPoint> constructAccessPoints() {
-        ArrayList<AccessPoint> accessPoints = new ArrayList<AccessPoint>();
-        /** Lookup table to more quickly update AccessPoints by only considering objects with the
-         * correct SSID.  Maps SSID -> List of AccessPoints with the given SSID.  */
-        Multimap<String, AccessPoint> apMap = new Multimap<String, AccessPoint>();
-
-        final List<WifiConfiguration> configs = mWifiManager.getConfiguredNetworks();
-        if (configs != null) {
-            for (WifiConfiguration config : configs) {
-                AccessPoint accessPoint = new AccessPoint(getActivity(), config);
-                accessPoint.update(mLastInfo, mLastState);
-                accessPoints.add(accessPoint);
-                apMap.put(accessPoint.ssid, accessPoint);
-            }
-        }
-
-        final List<ScanResult> results = mWifiManager.getScanResults();
-        if (results != null) {
-            for (ScanResult result : results) {
-                // Ignore hidden and ad-hoc networks.
-                if (result.SSID == null || result.SSID.length() == 0 ||
-                        result.capabilities.contains("[IBSS]")) {
-                    continue;
-                }
-
-                boolean found = false;
-                for (AccessPoint accessPoint : apMap.getAll(result.SSID)) {
-                    if (accessPoint.update(result))
-                        found = true;
-                }
-                if (!found) {
-                    AccessPoint accessPoint = new AccessPoint(getActivity(), result);
-                    accessPoints.add(accessPoint);
-                    apMap.put(accessPoint.ssid, accessPoint);
-                }
-            }
-        }
-
-        // Pre-sort accessPoints to speed preference insertion
-        Collections.sort(accessPoints);
-        return accessPoints;
-    }
-
-    /** A restricted multimap for use in constructAccessPoints */
-    private class Multimap<K,V> {
-        private final HashMap<K,List<V>> store = new HashMap<K,List<V>>();
-        /** retrieve a non-null list of values with key K */
-        List<V> getAll(K key) {
-            List<V> values = store.get(key);
-            return values != null ? values : Collections.<V>emptyList();
-        }
-
-        void put(K key, V val) {
-            List<V> curVals = store.get(key);
-            if (curVals == null) {
-                curVals = new ArrayList<V>(3);
-                store.put(key, curVals);
-            }
-            curVals.add(val);
-        }
-    }
-
-    private void handleEvent(Context context, Intent intent) {
-        String action = intent.getAction();
-        if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) {
-            updateWifiState(intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
-                    WifiManager.WIFI_STATE_UNKNOWN));
-        } else if (WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.equals(action) ||
-                WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION.equals(action) ||
-                WifiManager.LINK_CONFIGURATION_CHANGED_ACTION.equals(action)) {
-                updateAccessPoints();
-        } else if (WifiManager.SUPPLICANT_STATE_CHANGED_ACTION.equals(action)) {
-            //Ignore supplicant state changes when network is connected
-            //TODO: we should deprecate SUPPLICANT_STATE_CHANGED_ACTION and
-            //introduce a broadcast that combines the supplicant and network
-            //network state change events so the apps dont have to worry about
-            //ignoring supplicant state change when network is connected
-            //to get more fine grained information.
-            SupplicantState state = (SupplicantState) intent.getParcelableExtra(
-                    WifiManager.EXTRA_NEW_STATE);
-            if (!mConnected.get() && SupplicantState.isHandshakeState(state)) {
-                updateConnectionState(WifiInfo.getDetailedStateOf(state));
-             } else {
-                 // During a connect, we may have the supplicant
-                 // state change affect the detailed network state.
-                 // Make sure a lost connection is updated as well.
-                 updateConnectionState(null);
-             }
-        } else if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)) {
-            NetworkInfo info = (NetworkInfo) intent.getParcelableExtra(
-                    WifiManager.EXTRA_NETWORK_INFO);
-            mConnected.set(info.isConnected());
-            changeNextButtonState(info.isConnected());
-            updateAccessPoints();
-            updateConnectionState(info.getDetailedState());
-            if (mAutoFinishOnConnection && info.isConnected()) {
-                Activity activity = getActivity();
-                if (activity != null) {
-                    activity.setResult(Activity.RESULT_OK);
-                    activity.finish();
-                }
-                return;
-            }
-        } else if (WifiManager.RSSI_CHANGED_ACTION.equals(action)) {
-            updateConnectionState(null);
-        }
-    }
-
-    private void updateConnectionState(DetailedState state) {
-        /* sticky broadcasts can call this when wifi is disabled */
-        if (!mWifiManager.isWifiEnabled()) {
-            mScanner.pause();
-            return;
-        }
-
-        if (state == DetailedState.OBTAINING_IPADDR) {
-            mScanner.pause();
-        } else {
-            mScanner.resume();
-        }
-
-        mLastInfo = mWifiManager.getConnectionInfo();
-        if (state != null) {
-            mLastState = state;
-        }
-
-        for (int i = getPreferenceScreen().getPreferenceCount() - 1; i >= 0; --i) {
-            // Maybe there's a WifiConfigPreference
-            Preference preference = getPreferenceScreen().getPreference(i);
-            if (preference instanceof AccessPoint) {
-                final AccessPoint accessPoint = (AccessPoint) preference;
-                accessPoint.update(mLastInfo, mLastState);
-            }
-        }
-    }
-
-    private void updateWifiState(int state) {
-        Activity activity = getActivity();
-        if (activity != null) {
-            activity.invalidateOptionsMenu();
-        }
-
-        switch (state) {
-            case WifiManager.WIFI_STATE_ENABLED:
-                mScanner.resume();
-                return; // not break, to avoid the call to pause() below
-
-            case WifiManager.WIFI_STATE_ENABLING:
-                addMessagePreference(R.string.wifi_starting);
-                break;
-
-            case WifiManager.WIFI_STATE_DISABLED:
-                setOffMessage();
-                break;
-        }
-
-        mLastInfo = null;
-        mLastState = null;
-        mScanner.pause();
-    }
-
-    private class Scanner extends Handler {
-        private int mRetry = 0;
-
-        void resume() {
-            if (!hasMessages(0)) {
-                sendEmptyMessage(0);
-            }
-        }
-
-        void forceScan() {
-            removeMessages(0);
-            sendEmptyMessage(0);
-        }
-
-        void pause() {
-            mRetry = 0;
-            removeMessages(0);
-        }
-
-        @Override
-        public void handleMessage(Message message) {
-            if (mWifiManager.startScan()) {
-                mRetry = 0;
-            } else if (++mRetry >= 3) {
-                mRetry = 0;
-                Activity activity = getActivity();
-                if (activity != null) {
-                    Toast.makeText(activity, R.string.wifi_fail_to_scan,
-                            Toast.LENGTH_LONG).show();
-                }
-                return;
-            }
-            sendEmptyMessageDelayed(0, WIFI_RESCAN_INTERVAL_MS);
-        }
-    }
-
-    /**
-     * Renames/replaces "Next" button when appropriate. "Next" button usually exists in
-     * Wifi setup screens, not in usual wifi settings screen.
-     *
-     * @param connected true when the device is connected to a wifi network.
-     */
-    private void changeNextButtonState(boolean connected) {
-        if (mEnableNextOnConnection && hasNextButton()) {
-            getNextButton().setEnabled(connected);
-        }
-    }
-
-    @Override
-    public void onClick(DialogInterface dialogInterface, int button) {
-        if (button == WifiDialog.BUTTON_FORGET && mSelectedAccessPoint != null) {
-            forget();
-        } else if (button == WifiDialog.BUTTON_SUBMIT) {
-            if (mDialog != null) {
-                submit(mDialog.getController());
-            }
-        }
-    }
-
-    /* package */ void submit(WifiConfigController configController) {
-
-        final WifiConfiguration config = configController.getConfig();
-
-        if (config == null) {
-            if (mSelectedAccessPoint != null
-                    && mSelectedAccessPoint.networkId != INVALID_NETWORK_ID) {
-                mWifiManager.connect(mSelectedAccessPoint.networkId,
-                        mConnectListener);
-            }
-        } else if (config.networkId != INVALID_NETWORK_ID) {
-            if (mSelectedAccessPoint != null) {
-                mWifiManager.save(config, mSaveListener);
-            }
-        } else {
-            if (configController.isEdit()) {
-                mWifiManager.save(config, mSaveListener);
-            } else {
-                mWifiManager.connect(config, mConnectListener);
-            }
-        }
-
-        if (mWifiManager.isWifiEnabled()) {
-            mScanner.resume();
-        }
-        updateAccessPoints();
-    }
-
-    /* package */ void forget() {
-        if (mSelectedAccessPoint.networkId == INVALID_NETWORK_ID) {
-            // Should not happen, but a monkey seems to triger it
-            Log.e(TAG, "Failed to forget invalid network " + mSelectedAccessPoint.getConfig());
-            return;
-        }
-
-        mWifiManager.forget(mSelectedAccessPoint.networkId, mForgetListener);
-
-        if (mWifiManager.isWifiEnabled()) {
-            mScanner.resume();
-        }
-        updateAccessPoints();
-
-        // We need to rename/replace "Next" button in wifi setup context.
-        changeNextButtonState(false);
-    }
-
-    /**
-     * Refreshes acccess points and ask Wifi module to scan networks again.
-     */
-    /* package */ void refreshAccessPoints() {
-        if (mWifiManager.isWifiEnabled()) {
-            mScanner.resume();
-        }
-
-        getPreferenceScreen().removeAll();
-    }
-
-    /**
-     * Called when "add network" button is pressed.
-     */
-    /* package */ void onAddNetworkPressed() {
-        // No exact access point is selected.
-        mSelectedAccessPoint = null;
-        showDialog(null, true);
-    }
-
-    /* package */ int getAccessPointsCount() {
-        final boolean wifiIsEnabled = mWifiManager.isWifiEnabled();
-        if (wifiIsEnabled) {
-            return getPreferenceScreen().getPreferenceCount();
-        } else {
-            return 0;
-        }
-    }
-
-    /**
-     * Requests wifi module to pause wifi scan. May be ignored when the module is disabled.
-     */
-    /* package */ void pauseWifiScan() {
-        if (mWifiManager.isWifiEnabled()) {
-            mScanner.pause();
-        }
-    }
-
-    /**
-     * Requests wifi module to resume wifi scan. May be ignored when the module is disabled.
-     */
-    /* package */ void resumeWifiScan() {
-        if (mWifiManager.isWifiEnabled()) {
-            mScanner.resume();
-        }
-    }
-
-    @Override
-    protected int getHelpResource() {
-        if (mSetupWizardMode) {
-            return 0;
-        }
-        return R.string.help_url_wifi;
-    }
-
-    /**
-     * Used as the outer frame of all setup wizard pages that need to adjust their margins based
-     * on the total size of the available display. (e.g. side margins set to 10% of total width.)
-     */
-    public static class ProportionalOuterFrame extends RelativeLayout {
-        public ProportionalOuterFrame(Context context) {
-            super(context);
-        }
-        public ProportionalOuterFrame(Context context, AttributeSet attrs) {
-            super(context, attrs);
-        }
-        public ProportionalOuterFrame(Context context, AttributeSet attrs, int defStyle) {
-            super(context, attrs, defStyle);
-        }
-
-        /**
-         * Set our margins and title area height proportionally to the available display size
-         */
-        @Override
-        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-            int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
-            int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
-            final Resources resources = getContext().getResources();
-            float titleHeight = resources.getFraction(R.dimen.setup_title_height, 1, 1);
-            float sideMargin = resources.getFraction(R.dimen.setup_border_width, 1, 1);
-            int bottom = resources.getDimensionPixelSize(R.dimen.setup_margin_bottom);
-            setPaddingRelative(
-                    (int) (parentWidth * sideMargin),
-                    0,
-                    (int) (parentWidth * sideMargin),
-                    bottom);
-            View title = findViewById(R.id.title_area);
-            if (title != null) {
-                title.setMinimumHeight((int) (parentHeight * titleHeight));
-            }
-            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-        }
-    }
+public class WifiSettings extends RestrictedSettingsFragment implements
+		DialogInterface.OnClickListener
+{
+	private static final String TAG = "WifiSettings";
+	private static final int MENU_ID_WPS_PBC = Menu.FIRST;
+	private static final int MENU_ID_WPS_PIN = Menu.FIRST + 1;
+	private static final int MENU_ID_P2P = Menu.FIRST + 2;
+	private static final int MENU_ID_ADD_NETWORK = Menu.FIRST + 3;
+	private static final int MENU_ID_ADVANCED = Menu.FIRST + 4;
+	private static final int MENU_ID_SCAN = Menu.FIRST + 5;
+	private static final int MENU_ID_CONNECT = Menu.FIRST + 6;
+	private static final int MENU_ID_FORGET = Menu.FIRST + 7;
+	private static final int MENU_ID_MODIFY = Menu.FIRST + 8;
+
+	private static final int WIFI_DIALOG_ID = 1;
+	private static final int WPS_PBC_DIALOG_ID = 2;
+	private static final int WPS_PIN_DIALOG_ID = 3;
+	private static final int WIFI_SKIPPED_DIALOG_ID = 4;
+	private static final int WIFI_AND_MOBILE_SKIPPED_DIALOG_ID = 5;
+
+	// Combo scans can take 5-6s to complete - set to 10s.
+	private static final int WIFI_RESCAN_INTERVAL_MS = 10 * 1000;
+
+	// Instance state keys
+	private static final String SAVE_DIALOG_EDIT_MODE = "edit_mode";
+	private static final String SAVE_DIALOG_ACCESS_POINT_STATE = "wifi_ap_state";
+
+	// Activity result when pressing the Skip button
+	private static final int RESULT_SKIP = Activity.RESULT_FIRST_USER;
+
+	private final IntentFilter mFilter;
+	private final BroadcastReceiver mReceiver;
+	private final Scanner mScanner;
+
+	private WifiManager mWifiManager;
+	private WifiManager.ActionListener mConnectListener;
+	private WifiManager.ActionListener mSaveListener;
+	private WifiManager.ActionListener mForgetListener;
+	private boolean mP2pSupported;
+
+	private WifiEnabler mWifiEnabler;
+	// An access point being editted is stored here.
+	private AccessPoint mSelectedAccessPoint;
+
+	private DetailedState mLastState;
+	private WifiInfo mLastInfo;
+
+	private final AtomicBoolean mConnected = new AtomicBoolean(false);
+
+	private WifiDialog mDialog;
+
+	private TextView mEmptyView;
+
+	/* Used in Wifi Setup context */
+
+	// this boolean extra specifies whether to disable the Next button when not
+	// connected
+	private static final String EXTRA_ENABLE_NEXT_ON_CONNECT = "wifi_enable_next_on_connect";
+
+	// this boolean extra specifies whether to auto finish when connection is
+	// established
+	private static final String EXTRA_AUTO_FINISH_ON_CONNECT = "wifi_auto_finish_on_connect";
+
+	// this boolean extra shows a custom button that we can control
+	protected static final String EXTRA_SHOW_CUSTOM_BUTTON = "wifi_show_custom_button";
+
+	// show a text regarding data charges when wifi connection is required
+	// during setup wizard
+	protected static final String EXTRA_SHOW_WIFI_REQUIRED_INFO = "wifi_show_wifi_required_info";
+
+	// this boolean extra is set if we are being invoked by the Setup Wizard
+	private static final String EXTRA_IS_FIRST_RUN = "firstRun";
+
+	// should Next button only be enabled when we have a connection?
+	private boolean mEnableNextOnConnection;
+
+	// should activity finish once we have a connection?
+	private boolean mAutoFinishOnConnection;
+
+	// Save the dialog details
+	private boolean mDlgEdit;
+	private AccessPoint mDlgAccessPoint;
+	private Bundle mAccessPointSavedState;
+
+	// the action bar uses a different set of controls for Setup Wizard
+	private boolean mSetupWizardMode;
+
+	/* End of "used in Wifi Setup context" */
+
+	public WifiSettings()
+	{
+		super(DISALLOW_CONFIG_WIFI);
+		mFilter = new IntentFilter();
+		mFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
+		mFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
+		mFilter.addAction(WifiManager.NETWORK_IDS_CHANGED_ACTION);
+		mFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
+		mFilter.addAction(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION);
+		mFilter.addAction(WifiManager.LINK_CONFIGURATION_CHANGED_ACTION);
+		mFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
+		mFilter.addAction(WifiManager.RSSI_CHANGED_ACTION);
+
+		mReceiver = new BroadcastReceiver()
+		{
+			@Override
+			public void onReceive(Context context, Intent intent)
+			{
+				handleEvent(context, intent);
+			}
+		};
+
+		mScanner = new Scanner();
+	}
+
+	@Override
+	public void onCreate(Bundle icicle)
+	{
+		// Set this flag early, as it's needed by getHelpResource(), which is
+		// called by super
+		mSetupWizardMode = getActivity().getIntent().getBooleanExtra(
+				EXTRA_IS_FIRST_RUN, false);
+
+		super.onCreate(icicle);
+	}
+
+	@Override
+	public View onCreateView(final LayoutInflater inflater,
+			ViewGroup container, Bundle savedInstanceState)
+	{
+		if (mSetupWizardMode)
+		{
+			View view = inflater.inflate(R.layout.setup_preference, container,
+					false);
+			View other = view.findViewById(R.id.other_network);
+			other.setOnClickListener(new OnClickListener()
+			{
+				@Override
+				public void onClick(View v)
+				{
+					if (mWifiManager.isWifiEnabled())
+					{
+						onAddNetworkPressed();
+					}
+				}
+			});
+			final ImageButton b = (ImageButton) view.findViewById(R.id.more);
+			if (b != null)
+			{
+				b.setOnClickListener(new OnClickListener()
+				{
+					@Override
+					public void onClick(View v)
+					{
+						if (mWifiManager.isWifiEnabled())
+						{
+							PopupMenu pm = new PopupMenu(inflater.getContext(),
+									b);
+							pm.inflate(R.menu.wifi_setup);
+							pm.setOnMenuItemClickListener(new OnMenuItemClickListener()
+							{
+								@Override
+								public boolean onMenuItemClick(MenuItem item)
+								{
+									if (R.id.wifi_wps == item.getItemId())
+									{
+										Log.d(TAG, "imagebutton: " + item.getItemId());		
+										showDialog(WPS_PBC_DIALOG_ID);
+										return true;
+									}
+									return false;
+								}
+							});
+							pm.show();
+						}
+					}
+				});
+			}
+
+			Intent intent = getActivity().getIntent();
+			if (intent.getBooleanExtra(EXTRA_SHOW_CUSTOM_BUTTON, false))
+			{
+				view.findViewById(R.id.button_bar).setVisibility(View.VISIBLE);
+				view.findViewById(R.id.back_button).setVisibility(
+						View.INVISIBLE);
+				view.findViewById(R.id.skip_button).setVisibility(
+						View.INVISIBLE);
+				view.findViewById(R.id.next_button).setVisibility(
+						View.INVISIBLE);
+
+				Button customButton = (Button) view
+						.findViewById(R.id.custom_button);
+				customButton.setVisibility(View.VISIBLE);
+				customButton.setOnClickListener(new OnClickListener()
+				{
+					@Override
+					public void onClick(View v)
+					{
+						boolean isConnected = false;
+						Activity activity = getActivity();
+						final ConnectivityManager connectivity = (ConnectivityManager) activity
+								.getSystemService(Context.CONNECTIVITY_SERVICE);
+						if (connectivity != null)
+						{
+							final NetworkInfo info = connectivity
+									.getActiveNetworkInfo();
+							isConnected = (info != null) && info.isConnected();
+						}
+						if (isConnected)
+						{
+							// Warn of possible data charges
+							showDialog(WIFI_SKIPPED_DIALOG_ID);
+						} else
+						{
+							// Warn of lack of updates
+							showDialog(WIFI_AND_MOBILE_SKIPPED_DIALOG_ID);
+						}
+					}
+				});
+			}
+
+			if (intent.getBooleanExtra(EXTRA_SHOW_WIFI_REQUIRED_INFO, false))
+			{
+				view.findViewById(R.id.wifi_required_info).setVisibility(
+						View.VISIBLE);
+			}
+
+			return view;
+		} else
+		{
+			return super.onCreateView(inflater, container, savedInstanceState);
+		}
+	}
+
+	@Override
+	public void onActivityCreated(Bundle savedInstanceState)
+	{
+		super.onActivityCreated(savedInstanceState);
+
+		mP2pSupported = getPackageManager().hasSystemFeature(
+				PackageManager.FEATURE_WIFI_DIRECT);
+		mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
+
+		mConnectListener = new WifiManager.ActionListener()
+		{
+			@Override
+			public void onSuccess()
+			{
+			}
+
+			@Override
+			public void onFailure(int reason)
+			{
+				Activity activity = getActivity();
+				if (activity != null)
+				{
+					Toast.makeText(activity,
+							R.string.wifi_failed_connect_message,
+							Toast.LENGTH_SHORT).show();
+				}
+			}
+		};
+
+		mSaveListener = new WifiManager.ActionListener()
+		{
+			@Override
+			public void onSuccess()
+			{
+			}
+
+			@Override
+			public void onFailure(int reason)
+			{
+				Activity activity = getActivity();
+				if (activity != null)
+				{
+					Toast.makeText(activity, R.string.wifi_failed_save_message,
+							Toast.LENGTH_SHORT).show();
+				}
+			}
+		};
+
+		mForgetListener = new WifiManager.ActionListener()
+		{
+			@Override
+			public void onSuccess()
+			{
+			}
+
+			@Override
+			public void onFailure(int reason)
+			{
+				Activity activity = getActivity();
+				if (activity != null)
+				{
+					Toast.makeText(activity,
+							R.string.wifi_failed_forget_message,
+							Toast.LENGTH_SHORT).show();
+				}
+			}
+		};
+
+		if (savedInstanceState != null
+				&& savedInstanceState
+						.containsKey(SAVE_DIALOG_ACCESS_POINT_STATE))
+		{
+			mDlgEdit = savedInstanceState.getBoolean(SAVE_DIALOG_EDIT_MODE);
+			mAccessPointSavedState = savedInstanceState
+					.getBundle(SAVE_DIALOG_ACCESS_POINT_STATE);
+		}
+
+		final Activity activity = getActivity();
+		final Intent intent = activity.getIntent();
+
+		// first if we're supposed to finish once we have a connection
+		mAutoFinishOnConnection = intent.getBooleanExtra(
+				EXTRA_AUTO_FINISH_ON_CONNECT, false);
+
+		if (mAutoFinishOnConnection)
+		{
+			// Hide the next button
+			if (hasNextButton())
+			{
+				getNextButton().setVisibility(View.GONE);
+			}
+
+			final ConnectivityManager connectivity = (ConnectivityManager) activity
+					.getSystemService(Context.CONNECTIVITY_SERVICE);
+			if (connectivity != null
+					&& connectivity.getNetworkInfo(
+							ConnectivityManager.TYPE_WIFI).isConnected())
+			{
+				activity.setResult(Activity.RESULT_OK);
+				activity.finish();
+				return;
+			}
+		}
+
+		// if we're supposed to enable/disable the Next button based on our
+		// current connection
+		// state, start it off in the right state
+		mEnableNextOnConnection = intent.getBooleanExtra(
+				EXTRA_ENABLE_NEXT_ON_CONNECT, false);
+
+		if (mEnableNextOnConnection)
+		{
+			if (hasNextButton())
+			{
+				final ConnectivityManager connectivity = (ConnectivityManager) activity
+						.getSystemService(Context.CONNECTIVITY_SERVICE);
+				if (connectivity != null)
+				{
+					NetworkInfo info = connectivity
+							.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
+					changeNextButtonState(info.isConnected());
+				}
+			}
+		}
+
+		addPreferencesFromResource(R.xml.wifi_settings);
+
+		if (mSetupWizardMode)
+		{
+			getView().setSystemUiVisibility(
+			// View.STATUS_BAR_DISABLE_BACK |
+					View.STATUS_BAR_DISABLE_HOME
+							| View.STATUS_BAR_DISABLE_RECENT
+							| View.STATUS_BAR_DISABLE_NOTIFICATION_ALERTS
+							| View.STATUS_BAR_DISABLE_CLOCK);
+		}
+
+		// On/off switch is hidden for Setup Wizard
+		if (!mSetupWizardMode)
+		{
+			Switch actionBarSwitch = new Switch(activity);
+
+			if (activity instanceof PreferenceActivity)
+			{
+				PreferenceActivity preferenceActivity = (PreferenceActivity) activity;
+				if (preferenceActivity.onIsHidingHeaders()
+						|| !preferenceActivity.onIsMultiPane())
+				{
+					final int padding = activity.getResources()
+							.getDimensionPixelSize(
+									R.dimen.action_bar_switch_padding);
+					actionBarSwitch.setPaddingRelative(0, 0, padding, 0);
+					activity.getActionBar().setDisplayOptions(
+							ActionBar.DISPLAY_SHOW_CUSTOM,
+							ActionBar.DISPLAY_SHOW_CUSTOM);
+					activity.getActionBar().setCustomView(
+							actionBarSwitch,
+							new ActionBar.LayoutParams(
+									ActionBar.LayoutParams.WRAP_CONTENT,
+									ActionBar.LayoutParams.WRAP_CONTENT,
+									Gravity.CENTER_VERTICAL | Gravity.END));
+				}
+			}
+
+			mWifiEnabler = new WifiEnabler(activity, actionBarSwitch);
+		}
+
+		mEmptyView = (TextView) getView().findViewById(android.R.id.empty);
+		getListView().setEmptyView(mEmptyView);
+
+		if (!mSetupWizardMode)
+		{
+			registerForContextMenu(getListView());
+		}
+		setHasOptionsMenu(true);
+	}
+
+	@Override
+	public void onResume()
+	{
+		super.onResume();
+		if (mWifiEnabler != null)
+		{
+			mWifiEnabler.resume();
+		}
+
+		getActivity().registerReceiver(mReceiver, mFilter);
+		updateAccessPoints();
+	}
+
+	@Override
+	public void onPause()
+	{
+		super.onPause();
+		if (mWifiEnabler != null)
+		{
+			mWifiEnabler.pause();
+		}
+		getActivity().unregisterReceiver(mReceiver);
+		mScanner.pause();
+	}
+
+	@Override
+	public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
+	{
+		// If the user is not allowed to configure wifi, do not show the menu.
+		if (isRestrictedAndNotPinProtected())
+			return;
+
+		final boolean wifiIsEnabled = mWifiManager.isWifiEnabled();
+		TypedArray ta = getActivity().getTheme().obtainStyledAttributes(
+				new int[] { R.attr.ic_menu_add, R.attr.ic_wps });
+		if (mSetupWizardMode)
+		{
+			menu.add(Menu.NONE, MENU_ID_WPS_PBC, 0, R.string.wifi_menu_wps_pbc)
+					.setIcon(ta.getDrawable(1)).setEnabled(wifiIsEnabled)
+					.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
+			menu.add(Menu.NONE, MENU_ID_ADD_NETWORK, 0,
+					R.string.wifi_add_network).setEnabled(wifiIsEnabled)
+					.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
+		} else
+		{
+			menu.add(Menu.NONE, MENU_ID_WPS_PBC, 0, R.string.wifi_menu_wps_pbc)
+					.setIcon(ta.getDrawable(1)).setEnabled(wifiIsEnabled)
+					.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+			menu.add(Menu.NONE, MENU_ID_ADD_NETWORK, 0,
+					R.string.wifi_add_network).setIcon(ta.getDrawable(0))
+					.setEnabled(wifiIsEnabled)
+					.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+			menu.add(Menu.NONE, MENU_ID_SCAN, 0, R.string.wifi_menu_scan)
+					// .setIcon(R.drawable.ic_menu_scan_network)
+					.setEnabled(wifiIsEnabled)
+					.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
+			menu.add(Menu.NONE, MENU_ID_WPS_PIN, 0, R.string.wifi_menu_wps_pin)
+					.setEnabled(wifiIsEnabled)
+					.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
+			if (mP2pSupported)
+			{
+				menu.add(Menu.NONE, MENU_ID_P2P, 0, R.string.wifi_menu_p2p)
+						.setEnabled(wifiIsEnabled)
+						.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
+			}
+			menu.add(Menu.NONE, MENU_ID_ADVANCED, 0,
+					R.string.wifi_menu_advanced)
+			// .setIcon(android.R.drawable.ic_menu_manage)
+					.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
+		}
+		ta.recycle();
+		super.onCreateOptionsMenu(menu, inflater);
+	}
+
+	@Override
+	public void onSaveInstanceState(Bundle outState)
+	{
+		super.onSaveInstanceState(outState);
+
+		// If the dialog is showing, save its state.
+		if (mDialog != null && mDialog.isShowing())
+		{
+			outState.putBoolean(SAVE_DIALOG_EDIT_MODE, mDlgEdit);
+			if (mDlgAccessPoint != null)
+			{
+				mAccessPointSavedState = new Bundle();
+				mDlgAccessPoint.saveWifiState(mAccessPointSavedState);
+				outState.putBundle(SAVE_DIALOG_ACCESS_POINT_STATE,
+						mAccessPointSavedState);
+			}
+		}
+	}
+
+	@Override
+	public boolean onOptionsItemSelected(MenuItem item)
+	{
+		// If the user is not allowed to configure wifi, do not handle menu
+		// selections.
+		if (isRestrictedAndNotPinProtected())
+			return false;
+		Log.d(TAG, "onOptionItemSelected" + item.getItemId());
+		switch (item.getItemId())
+		{
+		case MENU_ID_WPS_PBC:
+			showDialog(WPS_PBC_DIALOG_ID);
+			return true;
+		case MENU_ID_P2P:
+			if (getActivity() instanceof PreferenceActivity)
+			{
+				((PreferenceActivity) getActivity()).startPreferencePanel(
+						WifiP2pSettings.class.getCanonicalName(), null,
+						R.string.wifi_p2p_settings_title, null, this, 0);
+			} else
+			{
+				startFragment(this, WifiP2pSettings.class.getCanonicalName(),
+						-1, null);
+			}
+			return true;
+		case MENU_ID_WPS_PIN:
+			showDialog(WPS_PIN_DIALOG_ID);
+			return true;
+		case MENU_ID_SCAN:
+			if (mWifiManager.isWifiEnabled())
+			{
+				mScanner.forceScan();
+			}
+			return true;
+		case MENU_ID_ADD_NETWORK:
+			if (mWifiManager.isWifiEnabled())
+			{
+				onAddNetworkPressed();
+			}
+			return true;
+		case MENU_ID_ADVANCED:
+			if (getActivity() instanceof PreferenceActivity)
+			{
+				((PreferenceActivity) getActivity()).startPreferencePanel(
+						AdvancedWifiSettings.class.getCanonicalName(), null,
+						R.string.wifi_advanced_titlebar, null, this, 0);
+			} else
+			{
+				startFragment(this,
+						AdvancedWifiSettings.class.getCanonicalName(), -1, null);
+			}
+			return true;
+		}
+		return super.onOptionsItemSelected(item);
+	}
+
+	@Override
+	public void onCreateContextMenu(ContextMenu menu, View view,
+			ContextMenuInfo info)
+	{
+		if (info instanceof AdapterContextMenuInfo)
+		{
+			Preference preference = (Preference) getListView()
+					.getItemAtPosition(((AdapterContextMenuInfo) info).position);
+
+			if (preference instanceof AccessPoint)
+			{
+				mSelectedAccessPoint = (AccessPoint) preference;
+				menu.setHeaderTitle(mSelectedAccessPoint.ssid);
+				menu.setHeaderTitle("TEST");
+				if (mSelectedAccessPoint.getLevel() != -1
+						&& mSelectedAccessPoint.getState() == null)
+				{
+					menu.add(Menu.NONE, MENU_ID_CONNECT, 0,
+							R.string.wifi_menu_connect);
+				}
+				if (mSelectedAccessPoint.networkId != INVALID_NETWORK_ID)
+				{
+					menu.add(Menu.NONE, MENU_ID_FORGET, 0,
+							R.string.wifi_menu_forget);
+					menu.add(Menu.NONE, MENU_ID_MODIFY, 0,
+							R.string.wifi_menu_modify);
+				}
+			}
+		}
+	}
+
+	@Override
+	public boolean onContextItemSelected(MenuItem item)
+	{
+		if (mSelectedAccessPoint == null)
+		{
+			return super.onContextItemSelected(item);
+		}
+		Log.d(TAG, "onContextItemSelected" + item.getItemId());
+		switch (item.getItemId())
+		{
+		case MENU_ID_CONNECT:
+		{
+			if (mSelectedAccessPoint.networkId != INVALID_NETWORK_ID)
+			{
+				mWifiManager.connect(mSelectedAccessPoint.networkId,
+						mConnectListener);
+			} else if (mSelectedAccessPoint.security == AccessPoint.SECURITY_NONE)
+			{
+				/** Bypass dialog for unsecured networks */
+				mSelectedAccessPoint.generateOpenNetworkConfig();
+				mWifiManager.connect(mSelectedAccessPoint.getConfig(),
+						mConnectListener);
+			} else
+			{
+				showDialog(mSelectedAccessPoint, true);
+			}
+			return true;
+		}
+		case MENU_ID_FORGET:
+		{
+			mWifiManager
+					.forget(mSelectedAccessPoint.networkId, mForgetListener);
+			return true;
+		}
+		case MENU_ID_MODIFY:
+		{
+			showDialog(mSelectedAccessPoint, true);
+			return true;
+		}
+		}
+		return super.onContextItemSelected(item);
+	}
+
+	@Override
+	public boolean onPreferenceTreeClick(PreferenceScreen screen,
+			Preference preference)
+	{
+		if (preference instanceof AccessPoint)
+		{
+			mSelectedAccessPoint = (AccessPoint) preference;
+			Log.d(TAG, mSelectedAccessPoint.ssid);
+			/** Bypass dialog for unsecured, unsaved networks */
+			if (mSelectedAccessPoint.security == AccessPoint.SECURITY_NONE
+					&& mSelectedAccessPoint.networkId == INVALID_NETWORK_ID)
+			{
+				mSelectedAccessPoint.generateOpenNetworkConfig();
+				mWifiManager.connect(mSelectedAccessPoint.getConfig(),
+						mConnectListener);
+			} else
+			{
+				showDialog(mSelectedAccessPoint, false);
+			}
+		} else
+		{
+			return super.onPreferenceTreeClick(screen, preference);
+		}
+		return true;
+	}
+
+	private void showDialog(AccessPoint accessPoint, boolean edit)
+	{
+		if (mDialog != null)
+		{
+			removeDialog(WIFI_DIALOG_ID);
+			mDialog = null;
+		}
+
+		// Save the access point and edit mode
+		mDlgAccessPoint = accessPoint;
+		mDlgEdit = edit;
+
+		showDialog(WIFI_DIALOG_ID);
+	}
+
+	@Override
+	public Dialog onCreateDialog(int dialogId)
+	{
+		Log.d(TAG, "onCreateDialog" + dialogId);
+		switch (dialogId)
+		{
+		case WIFI_DIALOG_ID:
+			AccessPoint ap = mDlgAccessPoint; // For manual launch
+			if (ap == null)
+			{ // For re-launch from saved state
+				if (mAccessPointSavedState != null)
+				{
+					ap = new AccessPoint(getActivity(), mAccessPointSavedState);
+					// For repeated orientation changes
+					mDlgAccessPoint = ap;
+					// Reset the saved access point data
+					mAccessPointSavedState = null;
+				}
+			}
+			// If it's still null, fine, it's for Add Network
+			mSelectedAccessPoint = ap;
+			mDialog = new WifiDialog(getActivity(), this, ap, mDlgEdit);
+			return mDialog;
+		case WPS_PBC_DIALOG_ID:
+			return new WpsDialog(getActivity(), WpsInfo.PBC);
+		case WPS_PIN_DIALOG_ID:
+			return new WpsDialog(getActivity(), WpsInfo.DISPLAY);
+		case WIFI_SKIPPED_DIALOG_ID:
+			return new AlertDialog.Builder(getActivity())
+					.setMessage(R.string.wifi_skipped_message)
+					.setCancelable(false)
+					.setNegativeButton(R.string.wifi_skip_anyway,
+							new DialogInterface.OnClickListener()
+							{
+								@Override
+								public void onClick(DialogInterface dialog,
+										int id)
+								{
+									getActivity().setResult(RESULT_SKIP);
+									getActivity().finish();
+								}
+							})
+					.setPositiveButton(R.string.wifi_dont_skip,
+							new DialogInterface.OnClickListener()
+							{
+								@Override
+								public void onClick(DialogInterface dialog,
+										int id)
+								{
+								}
+							}).create();
+		case WIFI_AND_MOBILE_SKIPPED_DIALOG_ID:
+			return new AlertDialog.Builder(getActivity())
+					.setMessage(R.string.wifi_and_mobile_skipped_message)
+					.setCancelable(false)
+					.setNegativeButton(R.string.wifi_skip_anyway,
+							new DialogInterface.OnClickListener()
+							{
+								@Override
+								public void onClick(DialogInterface dialog,
+										int id)
+								{
+									getActivity().setResult(RESULT_SKIP);
+									getActivity().finish();
+								}
+							})
+					.setPositiveButton(R.string.wifi_dont_skip,
+							new DialogInterface.OnClickListener()
+							{
+								@Override
+								public void onClick(DialogInterface dialog,
+										int id)
+								{
+								}
+							}).create();
+
+		}
+		return super.onCreateDialog(dialogId);
+	}
+
+	/**
+	 * Shows the latest access points available with supplimental information
+	 * like the strength of network and the security for it.
+	 */
+	private void updateAccessPoints()
+	{
+		// Safeguard from some delayed event handling
+		if (getActivity() == null)
+			return;
+
+		if (isRestrictedAndNotPinProtected())
+		{
+			addMessagePreference(R.string.wifi_empty_list_user_restricted);
+			return;
+		}
+		final int wifiState = mWifiManager.getWifiState();
+
+		switch (wifiState)
+		{
+		case WifiManager.WIFI_STATE_ENABLED:
+			// AccessPoints are automatically sorted with TreeSet.
+			final Collection<AccessPoint> accessPoints = constructAccessPoints();
+			getPreferenceScreen().removeAll();
+			if (accessPoints.size() == 0)
+			{
+				addMessagePreference(R.string.wifi_empty_list_wifi_on);
+			}
+			for (AccessPoint accessPoint : accessPoints)
+			{
+				getPreferenceScreen().addPreference(accessPoint);
+			}
+			break;
+
+		case WifiManager.WIFI_STATE_ENABLING:
+			getPreferenceScreen().removeAll();
+			break;
+
+		case WifiManager.WIFI_STATE_DISABLING:
+			addMessagePreference(R.string.wifi_stopping);
+			break;
+
+		case WifiManager.WIFI_STATE_DISABLED:
+			setOffMessage();
+			break;
+		}
+	}
+
+	private void setOffMessage()
+	{
+		if (mEmptyView != null)
+		{
+			mEmptyView.setText(R.string.wifi_empty_list_wifi_off);
+			if (Settings.Global.getInt(getActivity().getContentResolver(),
+					Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 1)
+			{
+				mEmptyView.append("\n\n");
+				int resId;
+				if (Settings.Secure
+						.isLocationProviderEnabled(getActivity()
+								.getContentResolver(),
+								LocationManager.NETWORK_PROVIDER))
+				{
+					resId = R.string.wifi_scan_notify_text_location_on;
+				} else
+				{
+					resId = R.string.wifi_scan_notify_text_location_off;
+				}
+				CharSequence charSeq = getText(resId);
+				mEmptyView.append(charSeq);
+			}
+		}
+		getPreferenceScreen().removeAll();
+	}
+
+	private void addMessagePreference(int messageId)
+	{
+		if (mEmptyView != null)
+			mEmptyView.setText(messageId);
+		getPreferenceScreen().removeAll();
+	}
+
+	/** Returns sorted list of access points */
+	private List<AccessPoint> constructAccessPoints()
+	{
+		ArrayList<AccessPoint> accessPoints = new ArrayList<AccessPoint>();
+		/**
+		 * Lookup table to more quickly update AccessPoints by only considering
+		 * objects with the correct SSID. Maps SSID -> List of AccessPoints with
+		 * the given SSID.
+		 */
+		Multimap<String, AccessPoint> apMap = new Multimap<String, AccessPoint>();
+
+		final List<WifiConfiguration> configs = mWifiManager
+				.getConfiguredNetworks();
+		if (configs != null)
+		{
+			for (WifiConfiguration config : configs)
+			{
+				AccessPoint accessPoint = new AccessPoint(getActivity(), config);
+				accessPoint.update(mLastInfo, mLastState);
+				accessPoints.add(accessPoint);
+				apMap.put(accessPoint.ssid, accessPoint);
+			}
+		}
+
+		final List<ScanResult> results = mWifiManager.getScanResults();
+		if (results != null)
+		{
+			for (ScanResult result : results)
+			{
+				// Ignore hidden and ad-hoc networks.
+				if (result.SSID == null || result.SSID.length() == 0
+						|| result.capabilities.contains("[IBSS]"))
+				{
+					continue;
+				}
+
+				boolean found = false;
+				for (AccessPoint accessPoint : apMap.getAll(result.SSID))
+				{
+					if (accessPoint.update(result))
+						found = true;
+				}
+				if (!found)
+				{
+					AccessPoint accessPoint = new AccessPoint(getActivity(),
+							result);
+					accessPoints.add(accessPoint);
+					apMap.put(accessPoint.ssid, accessPoint);
+				}
+			}
+		}
+
+		// Pre-sort accessPoints to speed preference insertion
+		Collections.sort(accessPoints);
+		return accessPoints;
+	}
+
+	/** A restricted multimap for use in constructAccessPoints */
+	private class Multimap<K, V>
+	{
+		private final HashMap<K, List<V>> store = new HashMap<K, List<V>>();
+
+		/** retrieve a non-null list of values with key K */
+		List<V> getAll(K key)
+		{
+			List<V> values = store.get(key);
+			return values != null ? values : Collections.<V> emptyList();
+		}
+
+		void put(K key, V val)
+		{
+			List<V> curVals = store.get(key);
+			if (curVals == null)
+			{
+				curVals = new ArrayList<V>(3);
+				store.put(key, curVals);
+			}
+			curVals.add(val);
+		}
+	}
+
+	private void handleEvent(Context context, Intent intent)
+	{
+		String action = intent.getAction();
+		if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action))
+		{
+			updateWifiState(intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
+					WifiManager.WIFI_STATE_UNKNOWN));
+		} else if (WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.equals(action)
+				|| WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION
+						.equals(action)
+				|| WifiManager.LINK_CONFIGURATION_CHANGED_ACTION.equals(action))
+		{
+			updateAccessPoints();
+		} else if (WifiManager.SUPPLICANT_STATE_CHANGED_ACTION.equals(action))
+		{
+			// Ignore supplicant state changes when network is connected
+			// TODO: we should deprecate SUPPLICANT_STATE_CHANGED_ACTION and
+			// introduce a broadcast that combines the supplicant and network
+			// network state change events so the apps dont have to worry about
+			// ignoring supplicant state change when network is connected
+			// to get more fine grained information.
+			SupplicantState state = (SupplicantState) intent
+					.getParcelableExtra(WifiManager.EXTRA_NEW_STATE);
+			if (!mConnected.get() && SupplicantState.isHandshakeState(state))
+			{
+				updateConnectionState(WifiInfo.getDetailedStateOf(state));
+			} else
+			{
+				// During a connect, we may have the supplicant
+				// state change affect the detailed network state.
+				// Make sure a lost connection is updated as well.
+				updateConnectionState(null);
+			}
+		} else if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action))
+		{
+			NetworkInfo info = (NetworkInfo) intent
+					.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
+			mConnected.set(info.isConnected());
+			changeNextButtonState(info.isConnected());
+			updateAccessPoints();
+			updateConnectionState(info.getDetailedState());
+			if (mAutoFinishOnConnection && info.isConnected())
+			{
+				Activity activity = getActivity();
+				if (activity != null)
+				{
+					activity.setResult(Activity.RESULT_OK);
+					activity.finish();
+				}
+				return;
+			}
+		} else if (WifiManager.RSSI_CHANGED_ACTION.equals(action))
+		{
+			updateConnectionState(null);
+		}
+	}
+
+	private void updateConnectionState(DetailedState state)
+	{
+		/* sticky broadcasts can call this when wifi is disabled */
+		if (!mWifiManager.isWifiEnabled())
+		{
+			mScanner.pause();
+			return;
+		}
+
+		if (state == DetailedState.OBTAINING_IPADDR)
+		{
+			mScanner.pause();
+		} else
+		{
+			mScanner.resume();
+		}
+
+		mLastInfo = mWifiManager.getConnectionInfo();
+		if (state != null)
+		{
+			mLastState = state;
+		}
+
+		for (int i = getPreferenceScreen().getPreferenceCount() - 1; i >= 0; --i)
+		{
+			// Maybe there's a WifiConfigPreference
+			Preference preference = getPreferenceScreen().getPreference(i);
+			if (preference instanceof AccessPoint)
+			{
+				final AccessPoint accessPoint = (AccessPoint) preference;
+				accessPoint.update(mLastInfo, mLastState);
+			}
+		}
+	}
+
+	private void updateWifiState(int state)
+	{
+		Activity activity = getActivity();
+		if (activity != null)
+		{
+			activity.invalidateOptionsMenu();
+		}
+
+		switch (state)
+		{
+		case WifiManager.WIFI_STATE_ENABLED:
+			mScanner.resume();
+			return; // not break, to avoid the call to pause() below
+
+		case WifiManager.WIFI_STATE_ENABLING:
+			addMessagePreference(R.string.wifi_starting);
+			break;
+
+		case WifiManager.WIFI_STATE_DISABLED:
+			setOffMessage();
+			break;
+		}
+
+		mLastInfo = null;
+		mLastState = null;
+		mScanner.pause();
+	}
+
+	private class Scanner extends Handler
+	{
+		private int mRetry = 0;
+
+		void resume()
+		{
+			if (!hasMessages(0))
+			{
+				sendEmptyMessage(0);
+			}
+		}
+
+		void forceScan()
+		{
+			removeMessages(0);
+			sendEmptyMessage(0);
+		}
+
+		void pause()
+		{
+			mRetry = 0;
+			removeMessages(0);
+		}
+
+		@Override
+		public void handleMessage(Message message)
+		{
+			if (mWifiManager.startScan())
+			{
+				mRetry = 0;
+			} else if (++mRetry >= 3)
+			{
+				mRetry = 0;
+				Activity activity = getActivity();
+				if (activity != null)
+				{
+					Toast.makeText(activity, R.string.wifi_fail_to_scan,
+							Toast.LENGTH_LONG).show();
+				}
+				return;
+			}
+			sendEmptyMessageDelayed(0, WIFI_RESCAN_INTERVAL_MS);
+		}
+	}
+
+	/**
+	 * Renames/replaces "Next" button when appropriate. "Next" button usually
+	 * exists in Wifi setup screens, not in usual wifi settings screen.
+	 * 
+	 * @param connected
+	 *            true when the device is connected to a wifi network.
+	 */
+	private void changeNextButtonState(boolean connected)
+	{
+		if (mEnableNextOnConnection && hasNextButton())
+		{
+			getNextButton().setEnabled(connected);
+		}
+	}
+
+	@Override
+	public void onClick(DialogInterface dialogInterface, int button)
+	{
+		Log.d(TAG, "onClick : " + button);
+		if (button == WifiDialog.BUTTON_FORGET && mSelectedAccessPoint != null)
+		{
+			forget();
+		} else if (button == WifiDialog.BUTTON_SUBMIT)
+		{
+			if (mDialog != null)
+			{
+				submit(mDialog.getController());
+			}
+		}
+	}
+
+	/* package */void submit(WifiConfigController configController)
+	{
+
+		final WifiConfiguration config = configController.getConfig();
+
+		if (config == null)
+		{
+			if (mSelectedAccessPoint != null
+					&& mSelectedAccessPoint.networkId != INVALID_NETWORK_ID)
+			{
+				mWifiManager.connect(mSelectedAccessPoint.networkId,
+						mConnectListener);
+			}
+		} else if (config.networkId != INVALID_NETWORK_ID)
+		{
+			if (mSelectedAccessPoint != null)
+			{
+				mWifiManager.save(config, mSaveListener);
+			}
+		} else
+		{
+			if (configController.isEdit())
+			{
+				mWifiManager.save(config, mSaveListener);
+			} else
+			{
+				mWifiManager.connect(config, mConnectListener);
+			}
+		}
+
+		if (mWifiManager.isWifiEnabled())
+		{
+			mScanner.resume();
+		}
+		updateAccessPoints();
+	}
+
+	/* package */void forget()
+	{
+		if (mSelectedAccessPoint.networkId == INVALID_NETWORK_ID)
+		{
+			// Should not happen, but a monkey seems to triger it
+			Log.e(TAG, "Failed to forget invalid network "
+					+ mSelectedAccessPoint.getConfig());
+			return;
+		}
+
+		mWifiManager.forget(mSelectedAccessPoint.networkId, mForgetListener);
+
+		if (mWifiManager.isWifiEnabled())
+		{
+			mScanner.resume();
+		}
+		updateAccessPoints();
+
+		// We need to rename/replace "Next" button in wifi setup context.
+		changeNextButtonState(false);
+	}
+
+	/**
+	 * Refreshes acccess points and ask Wifi module to scan networks again.
+	 */
+	/* package */void refreshAccessPoints()
+	{
+		if (mWifiManager.isWifiEnabled())
+		{
+			mScanner.resume();
+		}
+
+		getPreferenceScreen().removeAll();
+	}
+
+	/**
+	 * Called when "add network" button is pressed.
+	 */
+	/* package */void onAddNetworkPressed()
+	{
+		// No exact access point is selected.
+		mSelectedAccessPoint = null;
+		showDialog(null, true);
+	}
+
+	/* package */int getAccessPointsCount()
+	{
+		final boolean wifiIsEnabled = mWifiManager.isWifiEnabled();
+		if (wifiIsEnabled)
+		{
+			return getPreferenceScreen().getPreferenceCount();
+		} else
+		{
+			return 0;
+		}
+	}
+
+	/**
+	 * Requests wifi module to pause wifi scan. May be ignored when the module
+	 * is disabled.
+	 */
+	/* package */void pauseWifiScan()
+	{
+		if (mWifiManager.isWifiEnabled())
+		{
+			mScanner.pause();
+		}
+	}
+
+	/**
+	 * Requests wifi module to resume wifi scan. May be ignored when the module
+	 * is disabled.
+	 */
+	/* package */void resumeWifiScan()
+	{
+		if (mWifiManager.isWifiEnabled())
+		{
+			mScanner.resume();
+		}
+	}
+
+	@Override
+	protected int getHelpResource()
+	{
+		if (mSetupWizardMode)
+		{
+			return 0;
+		}
+		return R.string.help_url_wifi;
+	}
+
+	/**
+	 * Used as the outer frame of all setup wizard pages that need to adjust
+	 * their margins based on the total size of the available display. (e.g.
+	 * side margins set to 10% of total width.)
+	 */
+	public static class ProportionalOuterFrame extends RelativeLayout
+	{
+		public ProportionalOuterFrame(Context context)
+		{
+			super(context);
+		}
+
+		public ProportionalOuterFrame(Context context, AttributeSet attrs)
+		{
+			super(context, attrs);
+		}
+
+		public ProportionalOuterFrame(Context context, AttributeSet attrs,
+				int defStyle)
+		{
+			super(context, attrs, defStyle);
+		}
+
+		/**
+		 * Set our margins and title area height proportionally to the available
+		 * display size
+		 */
+		@Override
+		protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
+		{
+			int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
+			int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
+			final Resources resources = getContext().getResources();
+			float titleHeight = resources.getFraction(
+					R.dimen.setup_title_height, 1, 1);
+			float sideMargin = resources.getFraction(
+					R.dimen.setup_border_width, 1, 1);
+			int bottom = resources
+					.getDimensionPixelSize(R.dimen.setup_margin_bottom);
+			setPaddingRelative((int) (parentWidth * sideMargin), 0,
+					(int) (parentWidth * sideMargin), bottom);
+			View title = findViewById(R.id.title_area);
+			if (title != null)
+			{
+				title.setMinimumHeight((int) (parentHeight * titleHeight));
+			}
+			super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+		}
+	}
 
 }
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/AndroidManifest.xml AndroidSource/packages/apps/SurfaceProvider/AndroidManifest.xml
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/AndroidManifest.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/AndroidManifest.xml	2016-01-22 20:41:44.000000000 +0900
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.surfaceprovider"
+    android:versionCode="1"
+    android:versionName="1.0" >
+    
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.WAKE_LOCK"/>
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+
+    <uses-sdk
+        android:minSdkVersion="19"
+        android:targetSdkVersion="19" />
+
+    <application
+        android:allowBackup="true"
+        android:icon="@drawable/ic_launcher"
+        android:label="@string/app_name"
+        android:theme="@style/AppTheme" >
+        <activity
+            android:name="com.remote.surfaceprovider.SurfaceProvider"
+            android:label="@string/app_name" 
+            android:configChanges="orientation|screenSize|keyboardHidden"
+            android:screenOrientation="landscape">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.VIDEO_STREAMING" />
+            </intent-filter>
+        </activity>
+    </application>
+
+</manifest>
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/Android.mk AndroidSource/packages/apps/SurfaceProvider/Android.mk
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/Android.mk	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/Android.mk	2015-10-27 11:41:12.000000000 +0900
@@ -0,0 +1,18 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := SurfaceProvider 
+LOCAL_CERTIFICATE := platform
+LOCAL_PRIVILEGED_MODULE := true
+
+include $(BUILD_PACKAGE)
+
+include $(call all-makefiles-under, $(LOCAL_PATH))
+
+
+
+
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/Android.mk~ AndroidSource/packages/apps/SurfaceProvider/Android.mk~
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/Android.mk~	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/Android.mk~	2015-10-27 11:41:12.000000000 +0900
@@ -0,0 +1,18 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := TestApp 
+LOCAL_CERTIFICATE := platform
+LOCAL_PRIVILEGED_MODULE := true
+
+include $(BUILD_PACKAGE)
+
+include $(call all-makefiles-under, $(LOCAL_PATH))
+
+
+
+
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/AndroidManifest.xml AndroidSource/packages/apps/SurfaceProvider/bin/AndroidManifest.xml
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/AndroidManifest.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/bin/AndroidManifest.xml	2015-10-27 11:41:12.000000000 +0900
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.surfaceprovider"
+    android:versionCode="1"
+    android:versionName="1.0" >
+    
+    <uses-permission android:name="android.permission.INTERNET" />
+
+    <uses-sdk
+        android:minSdkVersion="19"
+        android:targetSdkVersion="19" />
+
+    <application
+        android:allowBackup="true"
+        android:icon="@drawable/ic_launcher"
+        android:label="@string/app_name"
+        android:theme="@style/AppTheme" >
+        <activity
+            android:name="com.remote.surfaceprovider.SurfaceProvider"
+            android:label="@string/app_name" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+
+</manifest>
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/classes/com/example/surfaceprovider/BuildConfig.class and AndroidSource/packages/apps/SurfaceProvider/bin/classes/com/example/surfaceprovider/BuildConfig.class differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/classes/com/example/surfaceprovider/R$attr.class and AndroidSource/packages/apps/SurfaceProvider/bin/classes/com/example/surfaceprovider/R$attr.class differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/classes/com/example/surfaceprovider/R.class and AndroidSource/packages/apps/SurfaceProvider/bin/classes/com/example/surfaceprovider/R.class differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/classes/com/example/surfaceprovider/R$dimen.class and AndroidSource/packages/apps/SurfaceProvider/bin/classes/com/example/surfaceprovider/R$dimen.class differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/classes/com/example/surfaceprovider/R$drawable.class and AndroidSource/packages/apps/SurfaceProvider/bin/classes/com/example/surfaceprovider/R$drawable.class differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/classes/com/example/surfaceprovider/R$id.class and AndroidSource/packages/apps/SurfaceProvider/bin/classes/com/example/surfaceprovider/R$id.class differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/classes/com/example/surfaceprovider/R$layout.class and AndroidSource/packages/apps/SurfaceProvider/bin/classes/com/example/surfaceprovider/R$layout.class differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/classes/com/example/surfaceprovider/R$menu.class and AndroidSource/packages/apps/SurfaceProvider/bin/classes/com/example/surfaceprovider/R$menu.class differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/classes/com/example/surfaceprovider/R$string.class and AndroidSource/packages/apps/SurfaceProvider/bin/classes/com/example/surfaceprovider/R$string.class differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/classes/com/example/surfaceprovider/R$style.class and AndroidSource/packages/apps/SurfaceProvider/bin/classes/com/example/surfaceprovider/R$style.class differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/classes/com/remote/surfaceprovider/SurfaceProvider.class and AndroidSource/packages/apps/SurfaceProvider/bin/classes/com/remote/surfaceprovider/SurfaceProvider.class differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/classes/com/remote/surfaceprovider/SurfaceProvider$mVideoPlayer.class and AndroidSource/packages/apps/SurfaceProvider/bin/classes/com/remote/surfaceprovider/SurfaceProvider$mVideoPlayer.class differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/classes/com/remote/surfaceprovider/vData.class and AndroidSource/packages/apps/SurfaceProvider/bin/classes/com/remote/surfaceprovider/vData.class differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/classes.dex and AndroidSource/packages/apps/SurfaceProvider/bin/classes.dex differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/dexedLibs/android-support-v4-e4e268e2fdaef81c9e05705fd1efab0a.jar and AndroidSource/packages/apps/SurfaceProvider/bin/dexedLibs/android-support-v4-e4e268e2fdaef81c9e05705fd1efab0a.jar differ
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/jarlist.cache AndroidSource/packages/apps/SurfaceProvider/bin/jarlist.cache
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/jarlist.cache	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/bin/jarlist.cache	2015-10-27 11:41:12.000000000 +0900
@@ -0,0 +1,3 @@
+# cache for current jar dependency. DO NOT EDIT.
+# format is <lastModified> <length> <SHA-1> <path>
+# Encoding is UTF-8
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/res/crunch/drawable-hdpi/ic_launcher.png and AndroidSource/packages/apps/SurfaceProvider/bin/res/crunch/drawable-hdpi/ic_launcher.png differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/res/crunch/drawable-mdpi/ic_launcher.png and AndroidSource/packages/apps/SurfaceProvider/bin/res/crunch/drawable-mdpi/ic_launcher.png differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/res/crunch/drawable-xhdpi/ic_launcher.png and AndroidSource/packages/apps/SurfaceProvider/bin/res/crunch/drawable-xhdpi/ic_launcher.png differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/res/crunch/drawable-xxhdpi/ic_launcher.png and AndroidSource/packages/apps/SurfaceProvider/bin/res/crunch/drawable-xxhdpi/ic_launcher.png differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/resources.ap_ and AndroidSource/packages/apps/SurfaceProvider/bin/resources.ap_ differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/bin/SurfaceProvider.apk and AndroidSource/packages/apps/SurfaceProvider/bin/SurfaceProvider.apk differ
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/.classpath AndroidSource/packages/apps/SurfaceProvider/.classpath
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/.classpath	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/.classpath	2015-10-27 11:41:12.000000000 +0900
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="gen"/>
+	<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
+	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
+	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
+	<classpathentry kind="output" path="bin/classes"/>
+</classpath>
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/gen/com/example/surfaceprovider/BuildConfig.java AndroidSource/packages/apps/SurfaceProvider/gen/com/example/surfaceprovider/BuildConfig.java
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/gen/com/example/surfaceprovider/BuildConfig.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/gen/com/example/surfaceprovider/BuildConfig.java	2015-10-27 11:41:12.000000000 +0900
@@ -0,0 +1,6 @@
+/** Automatically generated file. DO NOT MODIFY */
+package com.example.surfaceprovider;
+
+public final class BuildConfig {
+    public final static boolean DEBUG = true;
+}
\ No newline at end of file
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/gen/com/example/surfaceprovider/R.java AndroidSource/packages/apps/SurfaceProvider/gen/com/example/surfaceprovider/R.java
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/gen/com/example/surfaceprovider/R.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/gen/com/example/surfaceprovider/R.java	2015-10-27 11:41:12.000000000 +0900
@@ -0,0 +1,69 @@
+/* AUTO-GENERATED FILE.  DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * aapt tool from the resource data it found.  It
+ * should not be modified by hand.
+ */
+
+package com.example.surfaceprovider;
+
+public final class R {
+    public static final class attr {
+    }
+    public static final class dimen {
+        /**  Default screen margins, per the Android Design guidelines. 
+
+         Example customization of dimensions originally defined in res/values/dimens.xml
+         (such as screen margins) for screens with more than 820dp of available width. This
+         would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively).
+    
+         */
+        public static final int activity_horizontal_margin=0x7f040000;
+        public static final int activity_vertical_margin=0x7f040001;
+    }
+    public static final class drawable {
+        public static final int ic_launcher=0x7f020000;
+    }
+    public static final class id {
+        public static final int action_settings=0x7f080000;
+    }
+    public static final class layout {
+        public static final int activity_surface_giver=0x7f030000;
+    }
+    public static final class menu {
+        public static final int surface_giver=0x7f070000;
+    }
+    public static final class string {
+        public static final int action_settings=0x7f050002;
+        public static final int app_name=0x7f050000;
+        public static final int hello_world=0x7f050001;
+    }
+    public static final class style {
+        /** 
+        Base application theme, dependent on API level. This theme is replaced
+        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
+    
+
+            Theme customizations available in newer API levels can go in
+            res/values-vXX/styles.xml, while customizations related to
+            backward-compatibility can go here.
+        
+
+        Base application theme for API 11+. This theme completely replaces
+        AppBaseTheme from res/values/styles.xml on API 11+ devices.
+    
+ API 11 theme customizations can go here. 
+
+        Base application theme for API 14+. This theme completely replaces
+        AppBaseTheme from BOTH res/values/styles.xml and
+        res/values-v11/styles.xml on API 14+ devices.
+    
+ API 14 theme customizations can go here. 
+         */
+        public static final int AppBaseTheme=0x7f060000;
+        /**  Application theme. 
+ All customizations that are NOT specific to a particular API-level can go here. 
+         */
+        public static final int AppTheme=0x7f060001;
+    }
+}
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/ic_launcher-web.png and AndroidSource/packages/apps/SurfaceProvider/ic_launcher-web.png differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/libs/android-support-v4.jar and AndroidSource/packages/apps/SurfaceProvider/libs/android-support-v4.jar differ
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/proguard-project.txt AndroidSource/packages/apps/SurfaceProvider/proguard-project.txt
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/proguard-project.txt	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/proguard-project.txt	2015-10-27 11:41:12.000000000 +0900
@@ -0,0 +1,20 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/.project AndroidSource/packages/apps/SurfaceProvider/.project
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/.project	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/.project	2015-10-27 11:41:12.000000000 +0900
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>SurfaceProvider</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.ApkBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/project.properties AndroidSource/packages/apps/SurfaceProvider/project.properties
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/project.properties	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/project.properties	2015-10-27 11:41:12.000000000 +0900
@@ -0,0 +1,14 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-19
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/res/drawable-hdpi/ic_launcher.png and AndroidSource/packages/apps/SurfaceProvider/res/drawable-hdpi/ic_launcher.png differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/res/drawable-mdpi/ic_launcher.png and AndroidSource/packages/apps/SurfaceProvider/res/drawable-mdpi/ic_launcher.png differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/res/drawable-xhdpi/ic_launcher.png and AndroidSource/packages/apps/SurfaceProvider/res/drawable-xhdpi/ic_launcher.png differ
Binary files Original_4.4.4_r1/packages/apps/SurfaceProvider/res/drawable-xxhdpi/ic_launcher.png and AndroidSource/packages/apps/SurfaceProvider/res/drawable-xxhdpi/ic_launcher.png differ
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/res/layout/activity_surface_giver.xml AndroidSource/packages/apps/SurfaceProvider/res/layout/activity_surface_giver.xml
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/res/layout/activity_surface_giver.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/res/layout/activity_surface_giver.xml	2015-11-24 23:38:42.000000000 +0900
@@ -0,0 +1,18 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    android:keepScreenOn="true"
+    tools:context="com.remote.surfaceprovider.SurfaceProvider" >
+
+    <SurfaceView
+        android:id="@+id/surfaceview"
+        android:layout_width="fill_parent"
+        android:layout_height="fill_parent"
+        android:layout_gravity="center" />
+
+</RelativeLayout>
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/res/layout/activity_surface_giver.xml~ AndroidSource/packages/apps/SurfaceProvider/res/layout/activity_surface_giver.xml~
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/res/layout/activity_surface_giver.xml~	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/res/layout/activity_surface_giver.xml~	2015-10-27 11:41:12.000000000 +0900
@@ -0,0 +1,16 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    tools:context="com.remote.surfaceprovider.SurfaceProvider" >
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/hello_world" />
+
+</RelativeLayout>
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/res/menu/surface_giver.xml AndroidSource/packages/apps/SurfaceProvider/res/menu/surface_giver.xml
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/res/menu/surface_giver.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/res/menu/surface_giver.xml	2015-10-27 11:41:12.000000000 +0900
@@ -0,0 +1,11 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:context="com.example.surfaceprovider.SurfaceGiver" >
+
+    <item
+        android:id="@+id/action_settings"
+        android:orderInCategory="100"
+        android:showAsAction="never"
+        android:title="@string/action_settings"/>
+
+</menu>
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/res/values/dimens.xml AndroidSource/packages/apps/SurfaceProvider/res/values/dimens.xml
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/res/values/dimens.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/res/values/dimens.xml	2015-10-27 11:41:12.000000000 +0900
@@ -0,0 +1,7 @@
+<resources>
+
+    <!-- Default screen margins, per the Android Design guidelines. -->
+    <dimen name="activity_horizontal_margin">16dp</dimen>
+    <dimen name="activity_vertical_margin">16dp</dimen>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/res/values/strings.xml AndroidSource/packages/apps/SurfaceProvider/res/values/strings.xml
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/res/values/strings.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/res/values/strings.xml	2015-10-27 11:41:12.000000000 +0900
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <string name="app_name">SurfaceProvider</string>
+    <string name="hello_world">Hello world!</string>
+    <string name="action_settings">Settings</string>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/res/values/styles.xml AndroidSource/packages/apps/SurfaceProvider/res/values/styles.xml
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/res/values/styles.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/res/values/styles.xml	2015-10-27 11:41:12.000000000 +0900
@@ -0,0 +1,20 @@
+<resources>
+
+    <!--
+        Base application theme, dependent on API level. This theme is replaced
+        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Light">
+        <!--
+            Theme customizations available in newer API levels can go in
+            res/values-vXX/styles.xml, while customizations related to
+            backward-compatibility can go here.
+        -->
+    </style>
+
+    <!-- Application theme. -->
+    <style name="AppTheme" parent="AppBaseTheme">
+        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
+    </style>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/res/values-v11/styles.xml AndroidSource/packages/apps/SurfaceProvider/res/values-v11/styles.xml
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/res/values-v11/styles.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/res/values-v11/styles.xml	2015-10-27 11:41:12.000000000 +0900
@@ -0,0 +1,11 @@
+<resources>
+
+    <!--
+        Base application theme for API 11+. This theme completely replaces
+        AppBaseTheme from res/values/styles.xml on API 11+ devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
+        <!-- API 11 theme customizations can go here. -->
+    </style>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/res/values-v14/styles.xml AndroidSource/packages/apps/SurfaceProvider/res/values-v14/styles.xml
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/res/values-v14/styles.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/res/values-v14/styles.xml	2015-10-27 11:41:12.000000000 +0900
@@ -0,0 +1,12 @@
+<resources>
+
+    <!--
+        Base application theme for API 14+. This theme completely replaces
+        AppBaseTheme from BOTH res/values/styles.xml and
+        res/values-v11/styles.xml on API 14+ devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
+        <!-- API 14 theme customizations can go here. -->
+    </style>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/res/values-w820dp/dimens.xml AndroidSource/packages/apps/SurfaceProvider/res/values-w820dp/dimens.xml
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/res/values-w820dp/dimens.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/res/values-w820dp/dimens.xml	2015-10-27 11:41:12.000000000 +0900
@@ -0,0 +1,10 @@
+<resources>
+
+    <!--
+         Example customization of dimensions originally defined in res/values/dimens.xml
+         (such as screen margins) for screens with more than 820dp of available width. This
+         would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively).
+    -->
+    <dimen name="activity_horizontal_margin">64dp</dimen>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/src/com/remote/surfaceprovider/SurfaceProvider.java AndroidSource/packages/apps/SurfaceProvider/src/com/remote/surfaceprovider/SurfaceProvider.java
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/src/com/remote/surfaceprovider/SurfaceProvider.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/src/com/remote/surfaceprovider/SurfaceProvider.java	2016-09-27 17:43:56.629147730 +0900
@@ -0,0 +1,1203 @@
+
+package com.remote.surfaceprovider;
+
+import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.OutputStream;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.net.UnknownHostException;
+import java.nio.ByteBuffer;
+
+import android.service.remote.IRemoteService;
+import android.service.remote.SdPackage;
+
+import com.example.surfaceprovider.R;
+
+import android.service.remote.vData;
+import android.app.Activity;
+import android.app.KeyguardManager;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.media.AudioFormat;
+import android.media.AudioManager;
+import android.media.AudioTrack;
+import android.media.MediaCodec;
+import android.media.MediaCodecInfo;
+import android.media.MediaFormat;
+import android.media.MediaCodec.BufferInfo;
+import android.net.Uri;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.os.Environment;
+import android.os.PowerManager;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.MotionEvent;
+import android.view.Surface;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
+import android.view.View;
+import android.view.View.OnTouchListener;
+import android.view.ViewGroup.LayoutParams;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.ImageView;
+
+public class SurfaceProvider extends Activity implements SurfaceHolder.Callback {
+    // private String serverIP = "192.168.0.26";
+    private String serverIP = "";
+    public int vport = 30000;
+    private String TAG = "SurfaceProvider";
+    SurfaceHolder mHolder;
+    SurfaceView surfaceView;
+    ImageView imageView;
+
+    public long aSync = 0, vSync = 0;
+    public String mode = "";
+
+    public class mVideoPlayerAsync extends AsyncTask<Object, Void, Void> {
+        private MediaFormat format;
+        private MediaCodec mDecoder;
+        private Surface surface;
+
+        @Override
+        protected Void doInBackground(Object... params) {
+            // TODO Auto-generated method stub
+            Socket socket = new Socket();
+            try {
+                System.setProperty("http.keepAlive", "false");
+                // ServerSocket ss = new ServerSocket(vport);
+                // ss.setReuseAddress(true);
+                // try {
+                // Thread.sleep(4000);
+                // } catch (InterruptedException e2) {
+                // // TODO Auto-generated catch block
+                // e2.printStackTrace();
+                // }
+                Log.d(TAG, serverIP + "  " + vport);
+
+                int a = 0;
+                // socket = new Socket(serverIP, vport);
+                while (!socket.isConnected()) {
+                    try {
+                        socket = new Socket(serverIP, vport);
+                        socket.setTcpNoDelay(true);
+                        socket.setKeepAlive(true);
+                        Log.d(TAG, ++a + "");
+                        if (a > 2000)
+                            break;
+                    } catch (Exception e) {
+                        try {
+                            Thread.sleep(10);
+                        } catch (InterruptedException e1) {
+                            // TODO Auto-generated catch block
+                            e1.printStackTrace();
+                        }
+
+                    }
+                }
+
+                // socket.setTcpNoDelay(true);
+                // socket.setReceiveBufferSize(5*1024*1024);
+                // socket = new Socket(serverIP, vport);
+                while (true) {
+                    // Socket socket = ss.accept();
+                    Log.d(TAG, "Video Client is ready to go, " + socket.getRemoteSocketAddress());
+                    InputStream is = socket.getInputStream();
+                    ObjectInputStream ois = new ObjectInputStream(is);
+
+                    // just a test
+                    String mime = ois.readUTF();
+                    int width, height;
+                    Log.d(TAG, "Server: " + mime + "ed"); // "Server: connected"
+                                                          // should be printed
+
+                    // get format data
+                    vData vdata = (vData) ois.readObject();
+                    mime = vdata.getMime();
+                    width = vdata.getWidth();
+                    height = vdata.getHeight();
+                    format = MediaFormat.createVideoFormat(mime, width, height);
+                    format.setByteBuffer("csd-0",
+                            ByteBuffer.wrap(vdata.get_csd0()));
+                    format.setByteBuffer("csd-1",
+                            ByteBuffer.wrap(vdata.get_csd1()));
+
+                    // hard coding for test
+                    // byte[] header_sps = { 0, 0, 0, 1, 0x67, 0x42, 0x0, 0x28,
+                    // 0xffffffe9, 0x1, 0x68, 0x7b, 0x20 };
+                    // byte[] header_pps = { 0, 0, 0, 1, 0x68, 0xffffffce, 0x1,
+                    // 0xe, 0x20 };
+                    // format.setByteBuffer("csd-0",
+                    // ByteBuffer.wrap(header_sps));
+                    // format.setByteBuffer("csd-1",
+                    // ByteBuffer.wrap(header_pps));
+                    // format.setInteger(MediaFormat.KEY_MAX_INPUT_SIZE, 47380);
+                    // format.setInteger(MediaFormat.KEY_DURATION, 5284377);
+                    Log.d(TAG, "server:  " + format.toString());
+
+                    // aspect..?
+                    // setSurfaceSize(width, height);
+
+                    // codec config and start
+                    mDecoder = MediaCodec.createDecoderByType(mime);
+                    mDecoder.configure(format, mHolder.getSurface(), null, 0);
+                    mDecoder.start();
+
+                    Log.d(TAG, "Video: server format setting done");
+
+                    // decoder start
+                    ByteBuffer[] inputBuffers = mDecoder.getInputBuffers();
+                    ByteBuffer[] outputBuffers = mDecoder.getOutputBuffers();
+                    BufferInfo info = new BufferInfo();
+                    boolean isEOS = false;
+                    long startMs = System.currentTimeMillis();
+
+                    while (!isEOS) {
+
+                        int inputIndex = 0;
+                        try {
+                            inputIndex = mDecoder.dequeueInputBuffer(-1);
+                        } catch (Exception e) {
+                            break;
+                        }
+                        if (inputIndex >= 0) {
+
+                            ByteBuffer buffer = inputBuffers[inputIndex];
+
+                            vdata = (vData) ois.readObject();
+                            int sampleSize = vdata.getSampleSize();
+                            buffer.clear();
+                            buffer.put(vdata.getSampleData());
+                            // int sampleSize = ois.readInt();
+                            byte[] tmp = null;
+                            if (sampleSize <= 0) {
+                                Log.d(TAG, "sampleSize is negative");
+                                continue;
+                            } else {
+                                tmp = new byte[sampleSize];
+                            }
+
+                            // Log.d(TAG, "got this much: " + tmp.length);
+
+                            long presentationTime = vdata.getPresentationTime();
+
+                            if (sampleSize < 0) {
+                                // We shouldn't stop the playback at this point,
+                                // just pass the EOS
+                                // flag to decoder, we will get it again from
+                                // the dequeueOutputBuffer
+                                Log.d("DecodeActivity",
+                                        "InputBuffer BUFFER_FLAG_END_OF_STREAM");
+                                mDecoder.queueInputBuffer(inputIndex, 0, 0, 0,
+                                        MediaCodec.BUFFER_FLAG_END_OF_STREAM);
+                                isEOS = true;
+                            }
+                            else {
+                                try {
+                                    mDecoder.queueInputBuffer(inputIndex, 0, sampleSize,
+                                            presentationTime, 0);
+                                    // mDecoder.queueInputBuffer(inputIndex, 0,
+                                    // sampleSize, vdata.getPresentationTime(),
+                                    // 0);
+                                    // mExtractor.advance();
+
+                                    // Log.d(TAG, "got this much: " +
+                                    // tmp.length);
+                                } catch (Exception e) {
+                                    break;
+                                }
+                            }
+                        }
+
+                        int outIndex = mDecoder
+                                .dequeueOutputBuffer(info, 4000);
+                        switch (outIndex) {
+                            case MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED:
+                                Log.d(TAG, "INFO_OUTPUT_BUFFERS_CHANGED");
+                                outputBuffers = mDecoder.getOutputBuffers();
+                                break;
+                            case MediaCodec.INFO_OUTPUT_FORMAT_CHANGED:
+                                Log.d(TAG, "New format " + mDecoder.getOutputFormat());
+                                Log.d("VideoLatency", "VideoLatency ");
+                                Log.d("VideoLatency", "VideoLatency ");
+                                break;
+                            case MediaCodec.INFO_TRY_AGAIN_LATER:
+                                Log.d(TAG, "dequeueOutputBuffer timed out!");
+                                break;
+                            default:
+                                ByteBuffer buffer = outputBuffers[outIndex];
+                                // Log.v(TAG,
+                                // "We can't use this buffer but render it due to the API limit, "
+                                // + buffer);
+
+                                // We use a very simple clock to keep the video
+                                // FPS,
+                                // or the video playback will be too fast
+//                                vSync = info.presentationTimeUs;
+                                while (info.presentationTimeUs / 1000 > System
+                                        .currentTimeMillis() - startMs) {
+                                    try {
+                                        Thread.sleep(10);
+                                    } catch (InterruptedException e) {
+                                        e.printStackTrace();
+                                        break;
+                                    }
+                                }
+                                
+                                
+                                
+                                try {
+                                    mDecoder.releaseOutputBuffer(outIndex, true);
+                                } catch (Exception e) {
+                                    ;
+                                }
+                                break;
+                        }
+                        // All decoded frames have been rendered, we can stop
+                        // playing now
+                        if ((info.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {
+                            Log.d(TAG, "OutputBuffer BUFFER_FLAG_END_OF_STREAM");
+                            break;
+                        }
+                    }
+
+                    mDecoder.stop();
+                    mDecoder.release();
+                    socket.close();
+                }
+
+            } catch (IOException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            } catch (ClassNotFoundException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+            return null;
+        }
+
+    }
+
+    public class mAudioPlayerAsync extends AsyncTask<Object, Void, Void> {
+
+        @Override
+        protected Void doInBackground(Object... params) {
+            // TODO Auto-generated method stub
+            // variables of format
+            String mime = "";
+            int sampleRate = 0, channels = 0, bitrate = 0;
+            long duration = 0;
+            MediaFormat format = null;
+
+            InputStream in = null;
+            ObjectInputStream ois = null;
+            OutputStream out = null;
+            ObjectOutputStream oos = null;
+            Socket socket = new Socket();
+
+            try {
+                int aport = vport + 1;
+                System.setProperty("http.keepAlive", "false");
+                Log.d(TAG, "audio" + serverIP + "  " + aport);
+
+                int a = 0;
+                // socket = new Socket(serverIP, vport);
+                while (!socket.isConnected()) {
+                    try {
+                        socket = new Socket(serverIP, aport);
+                        socket.setTcpNoDelay(true);
+                        socket.setKeepAlive(true);
+                        Log.d(TAG, ++a + "");
+                        if (a > 500)
+                            break;
+                    } catch (Exception e) {
+                        try {
+                            Thread.sleep(10);
+                        } catch (InterruptedException e1) {
+                            // TODO Auto-generated catch block
+                            e1.printStackTrace();
+                        }
+
+                    }
+                }
+
+                // socket.setTcpNoDelay(true);
+                // ServerSocket aServer = new ServerSocket(aport);
+                // Socket socket = aServer.accept();
+                Log.d(TAG, "Audio Client is ready to go, " + socket.getRemoteSocketAddress());
+                out = socket.getOutputStream();
+                oos = new ObjectOutputStream(out);
+                in = socket.getInputStream();
+                ois = new ObjectInputStream(in);
+
+                String test = ois.readUTF();
+                if (test.equalsIgnoreCase("hello")) {
+                    Log.d(TAG, "client and server is all clear");
+                }
+
+                // getting meta-information for format from server (from here)
+                SdPackage format_package = (SdPackage) ois.readObject();
+                mime = format_package.getMime();
+                sampleRate = format_package.getSampleRate();
+                channels = format_package.getChannels();
+                duration = format_package.getDuration();
+                bitrate = format_package.getBitrate();
+                format = MediaFormat.createAudioFormat(mime, sampleRate,
+                        channels);
+
+                format.setInteger(MediaFormat.KEY_AAC_PROFILE,
+                        MediaCodecInfo.CodecProfileLevel.AACObjectLC);
+                format.setByteBuffer("csd-0",
+                        ByteBuffer.wrap(format_package.get_csd0()));
+                format.setLong(MediaFormat.KEY_DURATION, duration);
+                format.setInteger(MediaFormat.KEY_BIT_RATE, bitrate);
+                // getting variables from server is finished
+
+                // checking if everything is okay
+                Log.d(TAG, "Audio Track info: mime:" + mime + " sampleRate:"
+                        + sampleRate + " channels:" + channels + " bitrate:"
+                        + bitrate + " duration:" + duration);
+                Log.d(TAG, "Audio Track: " + format.toString());
+                // codec setting
+                MediaCodec codec;
+                codec = MediaCodec.createDecoderByType(mime);
+                codec.configure(format, null, null, 0);
+                codec.start();
+
+                ByteBuffer[] codecInputBuffers = codec.getInputBuffers();
+                ByteBuffer[] codecOutputBuffers = codec.getOutputBuffers();
+
+                int channelConfiguration = 0;
+                if (channels == 1) {
+                    channelConfiguration = AudioFormat.CHANNEL_OUT_MONO;
+                } else {
+                    channelConfiguration = AudioFormat.CHANNEL_OUT_STEREO;
+                }
+
+                // audiotrack object
+                int minSize = AudioTrack.getMinBufferSize(sampleRate,
+                        channelConfiguration, AudioFormat.ENCODING_PCM_16BIT);
+                AudioTrack audioTrack;
+                audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
+                        sampleRate, channelConfiguration,
+                        AudioFormat.ENCODING_PCM_16BIT, minSize,
+                        AudioTrack.MODE_STREAM);
+                // feeding
+                audioTrack.play();
+
+                // decode start
+                final long TIMEOUT_US = 1000;
+                MediaCodec.BufferInfo info = new MediaCodec.BufferInfo();
+                boolean sawInputEOS = false;
+                boolean sawOutputEOS = false;
+                int noOutputCounter = 0;
+                int noOutputCounterLimit = 10;
+
+                boolean stop = false;
+                long presentationTimeUs = 0;
+
+                int sampleSize = 0;
+                SdPackage sdp = null;
+                long startMs = System.currentTimeMillis();
+                while (!sawOutputEOS && noOutputCounter < noOutputCounterLimit
+                        && !stop) {
+                    noOutputCounter++;
+                    // read a buffer before feeding it to the decoder
+                    if (!sawInputEOS) {
+                        int inputBufIndex = codec
+                                .dequeueInputBuffer(TIMEOUT_US);
+                        if (inputBufIndex >= 0) {
+                            ByteBuffer dstBuf = codecInputBuffers[inputBufIndex];
+                            try {
+
+                                if ((sdp = (SdPackage) ois.readObject()) != null) {
+
+                                    byte[] temp_bytearray = null;
+
+                                    sampleSize = sdp.getSampleSize();
+                                    temp_bytearray = new byte[sampleSize];
+                                    temp_bytearray = sdp.getSampleData();
+                                    // Log.i(TAG,
+                                    // Arrays.toString(temp_bytearray));
+                                    dstBuf.clear();
+                                    dstBuf.put(temp_bytearray);
+                                    presentationTimeUs = sdp.getPresentationTime();
+
+//                                    Log.i(TAG, sdp.toString());
+                                }
+                                else {
+                                    break;
+                                }
+
+                            } catch (IOException e) {
+                                // TODO Auto-generated catch block
+                                e.printStackTrace();
+                            } catch (ClassNotFoundException e) {
+                                // TODO Auto-generated catch block
+                                e.printStackTrace();
+                                break;
+                            }
+
+                            codec.queueInputBuffer(inputBufIndex, 0,
+                                    sampleSize, presentationTimeUs, 0);
+
+                            // Log.d(TAG, "client: queued to inputbuffer "
+                            // + inputBufIndex);
+                            // if (!sawInputEOS) //remote
+                            // extractor.advance(); //remote
+
+                        } else {
+                            Log.e(TAG, "client: inputBufIndex " + inputBufIndex);
+                        }
+                    } // !sawInputEOS
+
+                    // decode to PCM and push it to the AudioTrack player
+                    int res = codec.dequeueOutputBuffer(info, 1000);
+
+                    if (res >= 0) {
+                        if (info.size > 0)
+                            noOutputCounter = 0;
+
+                        int outputBufIndex = res;
+                        ByteBuffer buf = codecOutputBuffers[outputBufIndex];
+
+                        final byte[] chunk = new byte[info.size];
+                        buf.get(chunk);
+                        buf.clear();
+
+                        // sync
+                        // aSync = info.presentationTimeUs;
+                        // while(aSync - vSync >= 100){
+                        // try {
+                        // Thread.sleep(10);
+                        // } catch (InterruptedException e) {
+                        // // TODO Auto-generated catch block
+                        // e.printStackTrace();
+                        // }
+                        // }
+
+                        // while (info.presentationTimeUs / 1000 > System
+                        // .currentTimeMillis() - startMs) {
+                        // try {
+                        // Thread.sleep(10);
+                        // } catch (InterruptedException e) {
+                        // e.printStackTrace();
+                        // break;
+                        // }
+                        // }
+                        if (chunk.length > 0) {
+
+                            audioTrack.write(chunk, 0, chunk.length);
+
+                        }
+                        codec.releaseOutputBuffer(outputBufIndex, false);
+                        if ((info.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {
+                            Log.d(TAG, "saw output EOS.");
+                            sawOutputEOS = true;
+                        }
+                    } else if (res == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED) {
+                        Log.d(TAG,
+                                "oh! information of output buffer has been changed");
+                        codecOutputBuffers = codec.getOutputBuffers();
+                        Log.d(TAG, "output buffers have changed.");
+                    } else if (res == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
+                        Log.d(TAG, "oh! the output format changed!");
+                        MediaFormat oformat = codec.getOutputFormat();
+                        Log.d(TAG, "output format has changed to " + oformat);
+                    } else {
+                        Log.d(TAG, "dequeueOutputBuffer returned " + res);
+                    }
+
+                    // Log.d("TAG", String.valueOf(noOutputCounter));
+                }
+
+                Log.d(TAG, "stopping...");
+
+                if (codec != null) {
+                    codec.stop();
+                    codec.release();
+                    codec = null;
+                }
+                if (audioTrack != null) {
+                    audioTrack.flush();
+                    audioTrack.release();
+                    audioTrack = null;
+                }
+                // if(aServer != null){
+                // aServer.close();
+                // aServer = null;
+                // }
+                if (socket != null) {
+                    socket.close();
+                    socket = null;
+                }
+
+            } catch (UnknownHostException uhe) {
+                // TODO Auto-generated catch block
+                uhe.printStackTrace();
+            } catch (IOException ie) {
+                // TODO Auto-generated catch block
+                ie.printStackTrace();
+            } catch (ClassNotFoundException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+            return null;
+        }
+
+    }
+
+    private class mAudioPlayer extends Thread {
+
+        @Override
+        public void run() {
+            // TODO Auto-generated method stub
+
+            // variables of format
+            String mime = "";
+            int sampleRate = 0, channels = 0, bitrate = 0;
+            long duration = 0;
+            MediaFormat format = null;
+
+            InputStream in = null;
+            ObjectInputStream ois = null;
+            OutputStream out = null;
+            ObjectOutputStream oos = null;
+            Socket socket;
+            try {
+                while ((socket = new Socket(serverIP, vport + 1)).isConnected()) {
+                    break;
+                }
+
+                // ServerSocket aServer = new ServerSocket(aport);
+                // Socket socket = aServer.accept();
+
+                out = socket.getOutputStream();
+                oos = new ObjectOutputStream(out);
+                in = socket.getInputStream();
+                ois = new ObjectInputStream(in);
+
+                String test = ois.readUTF();
+                if (test.equalsIgnoreCase("hello")) {
+                    Log.d(TAG, "client and server is all clear");
+                }
+
+                // getting meta-information for format from server (from here)
+                SdPackage format_package = (SdPackage) ois.readObject();
+                mime = format_package.getMime();
+                sampleRate = format_package.getSampleRate();
+                channels = format_package.getChannels();
+                duration = format_package.getDuration();
+                bitrate = format_package.getBitrate();
+                format = MediaFormat.createAudioFormat(mime, sampleRate,
+                        channels);
+
+                format.setInteger(MediaFormat.KEY_AAC_PROFILE,
+                        MediaCodecInfo.CodecProfileLevel.AACObjectLC);
+                format.setByteBuffer("csd-0",
+                        ByteBuffer.wrap(format_package.get_csd0()));
+                format.setLong(MediaFormat.KEY_DURATION, duration);
+                format.setInteger(MediaFormat.KEY_BIT_RATE, bitrate);
+                // getting variables from server is finished
+
+                // checking if everything is okay
+                Log.d(TAG, "Audio Track info: mime:" + mime + " sampleRate:"
+                        + sampleRate + " channels:" + channels + " bitrate:"
+                        + bitrate + " duration:" + duration);
+                Log.d(TAG, "Audio Track: " + format.toString());
+                // codec setting
+                MediaCodec codec;
+                codec = MediaCodec.createDecoderByType(mime);
+                codec.configure(format, null, null, 0);
+                codec.start();
+
+                ByteBuffer[] codecInputBuffers = codec.getInputBuffers();
+                ByteBuffer[] codecOutputBuffers = codec.getOutputBuffers();
+
+                int channelConfiguration = 0;
+                if (channels == 1) {
+                    channelConfiguration = AudioFormat.CHANNEL_OUT_MONO;
+                } else {
+                    channelConfiguration = AudioFormat.CHANNEL_OUT_STEREO;
+                }
+
+                // audiotrack object
+                int minSize = AudioTrack.getMinBufferSize(sampleRate,
+                        channelConfiguration, AudioFormat.ENCODING_PCM_16BIT);
+                AudioTrack audioTrack;
+                audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
+                        sampleRate, channelConfiguration,
+                        AudioFormat.ENCODING_PCM_16BIT, minSize,
+                        AudioTrack.MODE_STREAM);
+                // feeding
+                audioTrack.play();
+
+                // decode start
+                final long TIMEOUT_US = 10000;
+                MediaCodec.BufferInfo info = new MediaCodec.BufferInfo();
+                boolean sawInputEOS = false;
+                boolean sawOutputEOS = false;
+                int noOutputCounter = 0;
+                int noOutputCounterLimit = 10;
+
+                boolean stop = false;
+                long presentationTimeUs = 0;
+
+                int sampleSize = 0;
+                SdPackage sdp = null;
+                long startMs = System.currentTimeMillis();
+                while (!sawOutputEOS && noOutputCounter < noOutputCounterLimit
+                        && !stop) {
+                    noOutputCounter++;
+                    // read a buffer before feeding it to the decoder
+                    if (!sawInputEOS) {
+                        int inputBufIndex = codec
+                                .dequeueInputBuffer(TIMEOUT_US);
+                        if (inputBufIndex >= 0) {
+                            ByteBuffer dstBuf = codecInputBuffers[inputBufIndex];
+                            try {
+
+                                if ((sdp = (SdPackage) ois.readObject()) != null) {
+
+                                    byte[] temp_bytearray = null;
+
+                                    sampleSize = sdp.getSampleSize();
+                                    temp_bytearray = new byte[sampleSize];
+                                    temp_bytearray = sdp.getSampleData();
+                                    // Log.i(TAG,
+                                    // Arrays.toString(temp_bytearray));
+                                    dstBuf.clear();
+                                    dstBuf.put(temp_bytearray);
+                                    presentationTimeUs = sdp.getPresentationTime();
+
+                                    Log.i(TAG, sdp.toString());
+                                }
+                                else {
+                                    break;
+                                }
+
+                            } catch (IOException e) {
+                                // TODO Auto-generated catch block
+                                e.printStackTrace();
+                            } catch (ClassNotFoundException e) {
+                                // TODO Auto-generated catch block
+                                e.printStackTrace();
+                                break;
+                            }
+
+                            codec.queueInputBuffer(inputBufIndex, 0,
+                                    sampleSize, presentationTimeUs, 0);
+
+                            // Log.d(TAG, "client: queued to inputbuffer "
+                            // + inputBufIndex);
+                            // if (!sawInputEOS) //remote
+                            // extractor.advance(); //remote
+
+                        } else {
+                            Log.e(TAG, "client: inputBufIndex " + inputBufIndex);
+                        }
+                    } // !sawInputEOS
+
+                    // for (int i = 0; i < codecOutputBuffers.length; i++) {
+                    // Log.d(TAG, String.valueOf(codecOutputBuffers[i]
+                    // .remaining()));
+                    // }
+
+                    // decode to PCM and push it to the AudioTrack player
+                    int res = codec.dequeueOutputBuffer(info, 5000);
+
+                    if (res >= 0) {
+                        if (info.size > 0)
+                            noOutputCounter = 0;
+
+                        int outputBufIndex = res;
+                        ByteBuffer buf = codecOutputBuffers[outputBufIndex];
+
+                        final byte[] chunk = new byte[info.size];
+                        buf.get(chunk);
+                        buf.clear();
+
+                        // //sync
+                        // aSync = presentationTimeUs;
+                        // while(aSync - vSync > 0){
+                        // continue;
+                        // }
+                        while (info.presentationTimeUs / 1000 > System
+                                .currentTimeMillis() - startMs) {
+                            try {
+                                sleep(50);
+                            } catch (InterruptedException e) {
+                                e.printStackTrace();
+                                break;
+                            }
+                        }
+                        if (chunk.length > 0) {
+
+                            audioTrack.write(chunk, 0, chunk.length);
+
+                        }
+                        codec.releaseOutputBuffer(outputBufIndex, false);
+                        if ((info.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {
+                            Log.d(TAG, "saw output EOS.");
+                            sawOutputEOS = true;
+                        }
+                    } else if (res == MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED) {
+                        Log.d(TAG,
+                                "oh! information of output buffer has been changed");
+                        codecOutputBuffers = codec.getOutputBuffers();
+                        Log.d(TAG, "output buffers have changed.");
+                    } else if (res == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
+                        Log.d(TAG, "oh! the output format changed!");
+                        MediaFormat oformat = codec.getOutputFormat();
+                        Log.d(TAG, "output format has changed to " + oformat);
+                    } else {
+                        Log.d(TAG, "dequeueOutputBuffer returned " + res);
+                    }
+
+                    // Log.d("TAG", String.valueOf(noOutputCounter));
+                }
+
+                Log.d(TAG, "stopping...");
+
+                if (codec != null) {
+                    codec.stop();
+                    codec.release();
+                    codec = null;
+                }
+                if (audioTrack != null) {
+                    audioTrack.flush();
+                    audioTrack.release();
+                    audioTrack = null;
+                }
+                // if(aServer != null){
+                // aServer.close();
+                // aServer = null;
+                // }
+                if (socket != null) {
+                    socket.close();
+                    socket = null;
+                }
+
+            } catch (UnknownHostException uhe) {
+                // TODO Auto-generated catch block
+                uhe.printStackTrace();
+            } catch (IOException ie) {
+                // TODO Auto-generated catch block
+                ie.printStackTrace();
+            } catch (ClassNotFoundException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+
+        }
+    }
+
+    private class mVideoPlayer extends Thread {
+        private MediaFormat format;
+        private MediaCodec mDecoder;
+        private Surface surface;
+
+        public mVideoPlayer(SurfaceHolder mHolder) {
+            // TODO Auto-generated constructor stub
+            surface = mHolder.getSurface();
+        }
+
+        @Override
+        public void run() {
+            Socket socket;
+            try {
+                System.setProperty("http.keepAlive", "false");
+                // ServerSocket ss = new ServerSocket(vport);
+                // ss.setReuseAddress(true);
+                while ((socket = new Socket(serverIP, vport)).isConnected()) {
+                    break;
+                }
+                socket.setTcpNoDelay(true);
+                // socket = new Socket(serverIP, vport);
+                while (true) {
+                    // Socket socket = ss.accept();
+                    Log.d(TAG, "Video Client is ready to go");
+                    InputStream is = socket.getInputStream();
+                    ObjectInputStream ois = new ObjectInputStream(is);
+
+                    // just a test
+                    String mime = ois.readUTF();
+                    int width, height;
+                    Log.d(TAG, "Server: " + mime + "ed"); // "Server: connected"
+                                                          // should be printed
+
+                    // get format data
+                    vData vdata = (vData) ois.readObject();
+                    mime = vdata.getMime();
+                    width = vdata.getWidth();
+                    height = vdata.getHeight();
+                    format = MediaFormat.createVideoFormat(mime, width, height);
+                    format.setByteBuffer("csd-0",
+                            ByteBuffer.wrap(vdata.get_csd0()));
+                    format.setByteBuffer("csd-1",
+                            ByteBuffer.wrap(vdata.get_csd1()));
+
+                    // hard coding for test
+                    // byte[] header_sps = { 0, 0, 0, 1, 0x67, 0x42, 0x0, 0x28,
+                    // 0xffffffe9, 0x1, 0x68, 0x7b, 0x20 };
+                    // byte[] header_pps = { 0, 0, 0, 1, 0x68, 0xffffffce, 0x1,
+                    // 0xe, 0x20 };
+                    // format.setByteBuffer("csd-0",
+                    // ByteBuffer.wrap(header_sps));
+                    // format.setByteBuffer("csd-1",
+                    // ByteBuffer.wrap(header_pps));
+                    // format.setInteger(MediaFormat.KEY_MAX_INPUT_SIZE, 47380);
+                    // format.setInteger(MediaFormat.KEY_DURATION, 5284377);
+                    Log.d(TAG, "server:  " + format.toString());
+
+                    // codec config and start
+                    mDecoder = MediaCodec.createDecoderByType(mime);
+                    mDecoder.configure(format, mHolder.getSurface(), null, 0);
+                    mDecoder.start();
+
+                    Log.d(TAG, "Video: server format setting done");
+
+                    // decoder start
+                    ByteBuffer[] inputBuffers = mDecoder.getInputBuffers();
+                    ByteBuffer[] outputBuffers = mDecoder.getOutputBuffers();
+                    BufferInfo info = new BufferInfo();
+                    boolean isEOS = false;
+                    long startMs = System.currentTimeMillis();
+
+                    while (!isEOS) {
+                        int inputIndex = mDecoder.dequeueInputBuffer(10000);
+                        if (inputIndex >= 0) {
+
+                            ByteBuffer buffer = inputBuffers[inputIndex];
+
+                            vdata = (vData) ois.readObject();
+                            int sampleSize = vdata.getSampleSize();
+                            buffer.clear();
+                            buffer.put(vdata.getSampleData());
+                            // int sampleSize = ois.readInt();
+                            byte[] tmp = null;
+                            if (sampleSize <= 0) {
+                                Log.d(TAG, "sampleSize is negative");
+                                continue;
+                            } else {
+                                tmp = new byte[sampleSize];
+                            }
+
+                            // Log.d(TAG, "got this much: " + tmp.length);
+
+                            long presentationTime = vdata.getPresentationTime();
+
+                            if (sampleSize < 0) {
+                                // We shouldn't stop the playback at this point,
+                                // just pass the EOS
+                                // flag to decoder, we will get it again from
+                                // the dequeueOutputBuffer
+                                Log.d("DecodeActivity",
+                                        "InputBuffer BUFFER_FLAG_END_OF_STREAM");
+                                mDecoder.queueInputBuffer(inputIndex, 0, 0, 0,
+                                        MediaCodec.BUFFER_FLAG_END_OF_STREAM);
+                                isEOS = true;
+                            }
+                            else {
+                                mDecoder.queueInputBuffer(inputIndex, 0,
+                                        sampleSize, presentationTime, 0);
+                                // mDecoder.queueInputBuffer(inputIndex, 0,
+                                // sampleSize, vdata.getPresentationTime(), 0);
+                                // mExtractor.advance();
+
+                                // Log.d(TAG, "got this much: " + tmp.length);
+                            }
+                        }
+
+                        int outIndex = mDecoder
+                                .dequeueOutputBuffer(info, 5000);
+                        switch (outIndex) {
+                            case MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED:
+                                Log.d(TAG, "INFO_OUTPUT_BUFFERS_CHANGED");
+                                outputBuffers = mDecoder.getOutputBuffers();
+                                break;
+                            case MediaCodec.INFO_OUTPUT_FORMAT_CHANGED:
+                                Log.d(TAG,
+                                        "New format " + mDecoder.getOutputFormat());
+                                break;
+                            case MediaCodec.INFO_TRY_AGAIN_LATER:
+                                Log.d(TAG, "dequeueOutputBuffer timed out!");
+                                break;
+                            default:
+                                // ByteBuffer buffer = outputBuffers[outIndex];
+                                // Log.v(TAG,
+                                // "We can't use this buffer but render it due to the API limit, "
+                                // + buffer);
+
+                                // We use a very simple clock to keep the video
+                                // FPS,
+                                // or the video playback will be too fast
+                                while (info.presentationTimeUs / 1000 > System
+                                        .currentTimeMillis() - startMs) {
+                                    try {
+                                        sleep(50);
+                                    } catch (InterruptedException e) {
+                                        e.printStackTrace();
+                                        break;
+                                    }
+                                }
+
+                                mDecoder.releaseOutputBuffer(outIndex, true);
+
+                                break;
+                        }
+                        // All decoded frames have been rendered, we can stop
+                        // playing now
+                        if ((info.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {
+                            Log.d(TAG, "OutputBuffer BUFFER_FLAG_END_OF_STREAM");
+                            break;
+                        }
+                    }
+
+                    mDecoder.stop();
+                    mDecoder.release();
+                    socket.close();
+                }
+
+            } catch (IOException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            } catch (ClassNotFoundException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+
+        }
+    }
+
+    public class FileTransferClient implements Runnable {
+        String imagePath = Environment.getExternalStorageDirectory() + "/Download/" + "aa.jpg";
+
+        @Override
+        public void run() {
+            // TODO Auto-generated method stub
+
+            try {
+                System.out.println("waiting for the client..");
+                Socket socket = new Socket(serverIP, 11111);
+                System.out.println("client has connected");
+                try {
+                    File f = new File(imagePath);
+                    
+                    FileOutputStream fos = new FileOutputStream(f);
+                    BufferedOutputStream bos = new BufferedOutputStream(fos);
+                    DataInputStream dis = new DataInputStream(socket.getInputStream());
+                    
+                    int len=0, size = 4096;
+                    byte[] data = new byte[size];
+                    while((len = dis.read(data)) != -1){
+                        bos.write(data, 0, len);
+                    }
+                    
+                    bos.flush();
+                    bos.close();
+                    fos.close();
+                    dis.close();
+                    
+                    Log.d(TAG, "ok transfer done");
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+
+                socket.close();
+
+                Intent intent = new Intent();
+                intent.setAction(Intent.ACTION_VIEW);
+                // intent.setDataAndType(Uri.parse(Environment.getExternalStorageDirectory()
+                // + "/Download/aa.jpg"), "image/*");
+                intent.setDataAndType(
+                        Uri.parse("file://" + imagePath), "image/*");
+                startActivity(intent);
+
+            } catch (IOException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            } finally {
+
+            }
+
+        }
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
+        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
+                WindowManager.LayoutParams.FLAG_FULLSCREEN);
+        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+        // getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
+        setContentView(R.layout.activity_surface_giver);
+        System.setProperty("http.keepAlive", "false");
+
+        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN |
+                WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
+                WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
+                WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
+                WindowManager.LayoutParams.FLAG_FULLSCREEN |
+                        WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
+                        WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
+                        WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
+
+        Log.d("AAA", "ac");
+        acquireCpuWakeLock(this);
+
+        IRemoteService mService = IRemoteService.Stub
+                .asInterface(ServiceManager.getService(Context.REMOTE_SERVICE));
+        try {
+            
+            serverIP = mService.getClientIPs().get(0);
+        } catch (RemoteException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+
+        vport = (Integer) getIntent().getExtra("dcslab", 44444);
+        Log.d(TAG, "after intent " + vport);
+        String mod = getIntent().getStringExtra("mode");
+        Log.d(TAG, mod);
+        if (mod.equalsIgnoreCase("video") || mod.equalsIgnoreCase("dummy")) {
+            surfaceView = new SurfaceView(this);
+            surfaceView.getHolder().addCallback(this);
+            setContentView(surfaceView);
+            Log.d(TAG, "the mode is video or dummy");
+        }
+
+        Bundle b = getIntent().getExtras();
+        mod = b.getString("mode");
+
+        Log.d(TAG, mod);
+        if (mod.equalsIgnoreCase("image")) {
+            int imageWidth = b.getInt("imageWidth");
+            int imageHeight = b.getInt("imageHeight");
+            String imageConfig = b.getString("imageConfig");
+            Bitmap image = Bitmap.createBitmap(imageWidth, imageHeight, Bitmap.Config.ARGB_8888);
+            byte[] imagePixel = b.getByteArray("imagePixel");
+            image.copyPixelsFromBuffer(ByteBuffer.wrap(imagePixel));
+            
+            imageView = new ImageView(this);
+            imageView.setImageBitmap(image);
+            setContentView(imageView);
+            View v = imageView;
+            v.setOnTouchListener(new View.OnTouchListener() {
+
+                @Override
+                public boolean onTouch(View v, MotionEvent event) {
+                    // TODO Auto-generated method stub
+                    if (event.getAction() == event.ACTION_DOWN) {
+
+                        Log.d(TAG, "yes yes you are");
+                        Thread t = new Thread(new FileTransferClient());
+                        t.start();
+                    }
+                    return true;
+                }
+            });
+        }
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        // Inflate the menu; this adds items to the action bar if it is present.
+        getMenuInflater().inflate(R.menu.surface_giver, menu);
+        return true;
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        // Handle action bar item clicks here. The action bar will
+        // automatically handle clicks on the Home/Up button, so long
+        // as you specify a parent activity in AndroidManifest.xml.
+        int id = item.getItemId();
+        if (id == R.id.action_settings) {
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    @Override
+    public void surfaceCreated(SurfaceHolder holder) {
+        // TODO Auto-generated method stub
+        Log.d(TAG, "Surface created");
+    }
+
+    @Override
+    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
+        // TODO Auto-generated method stub
+
+        Log.d(TAG, "Surface changed!");
+        mHolder = holder;
+
+        // mVideoPlayer vp = new mVideoPlayer(holder);
+        // vp.start();
+        String mod = getIntent().getStringExtra("mode");
+        if (mod.equalsIgnoreCase("video")) {
+            vport = getIntent().getIntExtra("dcslab", 44444);
+            new mVideoPlayerAsync().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, 1);
+            new mAudioPlayerAsync().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, 1);
+        }
+        else if (mod.equalsIgnoreCase("dummyApp")) {
+            ;
+        }
+        // mAudioPlayer ap = new mAudioPlayer();
+        // ap.start();
+    }
+
+    @Override
+    public void surfaceDestroyed(SurfaceHolder holder) {
+        // TODO Auto-generated method stub
+
+    }
+
+    private static PowerManager.WakeLock sCpuWakeLock;
+    private static KeyguardManager.KeyguardLock mKeyguardLock;
+    private static boolean isScreenLock;
+
+    static void acquireCpuWakeLock(Context context) {
+        Log.e("PushWakeLock", "Acquiring cpu wake lock");
+        Log.e("PushWakeLock", "wake sCpuWakeLock = " + sCpuWakeLock);
+
+        if (sCpuWakeLock != null) {
+            return;
+        }
+        PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
+        sCpuWakeLock = pm.newWakeLock(
+                PowerManager.SCREEN_BRIGHT_WAKE_LOCK |
+                        PowerManager.ACQUIRE_CAUSES_WAKEUP |
+                        PowerManager.ON_AFTER_RELEASE, "hello");
+
+        sCpuWakeLock.acquire();
+    }
+
+    static void releaseCpuLock() {
+        Log.e("PushWakeLock", "Releasing cpu wake lock");
+        Log.e("PushWakeLock", "relase sCpuWakeLock = " + sCpuWakeLock);
+
+        if (sCpuWakeLock != null) {
+            sCpuWakeLock.release();
+            sCpuWakeLock = null;
+        }
+    }
+
+}
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/src/com/remote/surfaceprovider/SurfaceProvider.java~ AndroidSource/packages/apps/SurfaceProvider/src/com/remote/surfaceprovider/SurfaceProvider.java~
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/src/com/remote/surfaceprovider/SurfaceProvider.java~	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/src/com/remote/surfaceprovider/SurfaceProvider.java~	2015-10-27 11:41:12.000000000 +0900
@@ -0,0 +1,273 @@
+package com.remote.surfaceprovider;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.net.InetAddress;
+import java.net.Socket;
+import java.nio.ByteBuffer;
+
+import com.example.surfaceprovider.R;
+
+import android.service.remote.vData;
+import android.
+
+import android.app.Activity;
+import android.media.MediaCodec;
+import android.media.MediaFormat;
+import android.media.MediaCodec.BufferInfo;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.Surface;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
+
+public class SurfaceProvider extends Activity implements SurfaceHolder.Callback{
+	private int vport = 4438;
+	private String TAG = "SurfaceProvider";
+	SurfaceHolder mHolder;
+	
+	private class mVideoPlayer extends Thread {
+		private MediaFormat format;
+		private MediaCodec mDecoder;
+		private Surface surface;
+
+		public mVideoPlayer(SurfaceHolder mHolder) {
+			// TODO Auto-generated constructor stub
+			surface = mHolder.getSurface();
+		}
+
+		@Override
+		public void run() {
+			try {
+//				ServerSocket ss = new ServerSocket(vport);
+//				ss.setReuseAddress(true);
+				Socket socket = new Socket("192.168.0.26", vport);
+				while (true) {
+//					Socket socket = ss.accept();
+					Log.d(TAG, "Server is ready to go");
+					InputStream is = socket.getInputStream();
+					ObjectInputStream ois = new ObjectInputStream(is);
+
+					// just a test
+					String mime = ois.readUTF();
+					int width, height;
+					Log.d(TAG, "Server: " + mime + "ed");
+
+					// get format data
+					vData vdata = (vData) ois.readObject();
+					mime = vdata.getMime();
+					width = vdata.getWidth();
+					height = vdata.getHeight();
+					format = MediaFormat.createVideoFormat(mime, width, height);
+					// format.setByteBuffer("csd-0",
+					// ByteBuffer.wrap(vdata.get_csd0()));
+					// format.setByteBuffer("csd-1",
+					// ByteBuffer.wrap(vdata.get_csd1()));
+
+					// hard coding for test
+					byte[] header_sps = { 0, 0, 0, 1, 0x67, 0x42, 0x0, 0x28,
+							0xffffffe9, 0x1, 0x68, 0x7b, 0x20 };
+					byte[] header_pps = { 0, 0, 0, 1, 0x68, 0xffffffce, 0x1,
+							0xe, 0x20 };
+					format.setByteBuffer("csd-0", ByteBuffer.wrap(header_sps));
+					format.setByteBuffer("csd-1", ByteBuffer.wrap(header_pps));
+					format.setInteger(MediaFormat.KEY_MAX_INPUT_SIZE, 47380);
+					format.setInteger(MediaFormat.KEY_DURATION, 5284377);
+					Log.d(TAG, "server:  " + format.toString());
+
+					// codec config and start
+					mDecoder = MediaCodec.createDecoderByType(mime);
+					mDecoder.configure(format, mHolder.getSurface(), null, 0);
+					mDecoder.start();
+
+					Log.d(TAG, "server format setting done");
+
+					// decoder start
+					ByteBuffer[] inputBuffers = mDecoder.getInputBuffers();
+					ByteBuffer[] outputBuffers = mDecoder.getOutputBuffers();
+					BufferInfo info = new BufferInfo();
+					boolean isEOS = false;
+					long startMs = System.currentTimeMillis();
+
+					while (!isEOS) {
+						int inputIndex = mDecoder.dequeueInputBuffer(20000);
+						if (inputIndex >= 0) {
+
+							ByteBuffer buffer = inputBuffers[inputIndex];
+
+							vdata = (vData) ois.readObject();
+							int sampleSize = vdata.getSampleSize();
+							buffer.clear();
+							buffer.put(vdata.getSampleData());
+							// int sampleSize = ois.readInt();
+							byte[] tmp = null;
+							if (sampleSize < 0) {
+								Log.d(TAG, "sampleSize is negative");
+							} else {
+								tmp = new byte[sampleSize];
+							}
+
+							// Log.d(TAG, "samplesize received : " +
+							// sampleSize+"");
+							// int j = 0;
+							// for(int i=0;i<sampleSize;i++){
+							//
+							// if(j+2000 < sampleSize){
+							// ois.read(tmp, i * 2000, 2000);
+							// Log.d(TAG, "received: " +
+							// String.valueOf(j+2000));
+							// j = j+2000;
+							// } else{
+							// ois.read(tmp, j, sampleSize - j);
+							// // output.flush();
+							// Log.d(TAG, "received" + i + "  /  " +
+							// String.valueOf(sampleSize - j));
+							// break;
+							// }
+							// }
+							// tmp = new byte[sampleSize];
+							Log.d(TAG, "got this much: " + tmp.length);
+							// buffer.clear();
+							// buffer.put(tmp);
+							// long presentationTime = ois.readLong();
+							long presentationTime = vdata.getPresentationTime();
+
+							if (sampleSize < 0) {
+								// We shouldn't stop the playback at this point,
+								// just pass the EOS
+								// flag to decoder, we will get it again from
+								// the
+								// dequeueOutputBuffer
+								Log.d("DecodeActivity",
+										"InputBuffer BUFFER_FLAG_END_OF_STREAM");
+								mDecoder.queueInputBuffer(inputIndex, 0, 0, 0,
+										MediaCodec.BUFFER_FLAG_END_OF_STREAM);
+								isEOS = true;
+							} else {
+								mDecoder.queueInputBuffer(inputIndex, 0,
+										sampleSize, presentationTime, 0);
+								// mDecoder.queueInputBuffer(inputIndex, 0,
+								// sampleSize, vdata.getPresentationTime(), 0);
+								// mExtractor.advance();
+
+								// Log.d(TAG, "got this much: " + tmp.length);
+							}
+						}
+
+						int outIndex = mDecoder
+								.dequeueOutputBuffer(info, 20000);
+						switch (outIndex) {
+						case MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED:
+							Log.d(TAG, "INFO_OUTPUT_BUFFERS_CHANGED");
+							outputBuffers = mDecoder.getOutputBuffers();
+							break;
+						case MediaCodec.INFO_OUTPUT_FORMAT_CHANGED:
+							Log.d(TAG,
+									"New format " + mDecoder.getOutputFormat());
+							break;
+						case MediaCodec.INFO_TRY_AGAIN_LATER:
+							Log.d(TAG, "dequeueOutputBuffer timed out!");
+							break;
+						default:
+							ByteBuffer buffer = outputBuffers[outIndex];
+							Log.v(TAG,
+									"We can't use this buffer but render it due to the API limit, "
+											+ buffer);
+
+							// We use a very simple clock to keep the video FPS,
+							// or the video playback will be too fast
+							while (info.presentationTimeUs / 1000 > System
+									.currentTimeMillis() - startMs) {
+								try {
+									sleep(10);
+								} catch (InterruptedException e) {
+									e.printStackTrace();
+									break;
+								}
+							}
+							mDecoder.releaseOutputBuffer(outIndex, true);
+							// Log.d(TAG, "am i out?");
+							break;
+						}
+						// All decoded frames have been rendered, we can stop
+						// playing now
+						if ((info.flags & MediaCodec.BUFFER_FLAG_END_OF_STREAM) != 0) {
+							Log.d(TAG, "OutputBuffer BUFFER_FLAG_END_OF_STREAM");
+							break;
+						}
+					}
+
+					mDecoder.stop();
+					mDecoder.release();
+					socket.close();
+				}
+
+			} catch (IOException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			} catch (ClassNotFoundException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+			}
+
+		}
+	}
+	
+	@Override
+	protected void onCreate(Bundle savedInstanceState) {
+		super.onCreate(savedInstanceState);
+		setContentView(R.layout.activity_surface_giver);
+		
+		SurfaceView surfaceView = new SurfaceView(this);
+		surfaceView.getHolder().addCallback(this);
+		setContentView(surfaceView);		
+	}
+
+	@Override
+	public boolean onCreateOptionsMenu(Menu menu) {
+		// Inflate the menu; this adds items to the action bar if it is present.
+		getMenuInflater().inflate(R.menu.surface_giver, menu);
+		return true;
+	}
+
+	@Override
+	public boolean onOptionsItemSelected(MenuItem item) {
+		// Handle action bar item clicks here. The action bar will
+		// automatically handle clicks on the Home/Up button, so long
+		// as you specify a parent activity in AndroidManifest.xml.
+		int id = item.getItemId();
+		if (id == R.id.action_settings) {
+			return true;
+		}
+		return super.onOptionsItemSelected(item);
+	}
+
+	@Override
+	public void surfaceCreated(SurfaceHolder holder) {
+		// TODO Auto-generated method stub
+		Log.d(TAG, "Surface created");
+		
+	}
+
+	@Override
+	public void surfaceChanged(SurfaceHolder holder, int format, int width,
+			int height) {
+		// TODO Auto-generated method stub
+		
+		Log.d(TAG, "Surface changed!");
+		mHolder = holder;
+		
+		mVideoPlayer vp = new mVideoPlayer(holder);
+		vp.start();
+		
+	}
+
+	@Override
+	public void surfaceDestroyed(SurfaceHolder holder) {
+		// TODO Auto-generated method stub
+		
+	}
+}
diff -urN Original_4.4.4_r1/packages/apps/SurfaceProvider/src/com/remote/surfaceprovider/vData.java AndroidSource/packages/apps/SurfaceProvider/src/com/remote/surfaceprovider/vData.java
--- Original_4.4.4_r1/packages/apps/SurfaceProvider/src/com/remote/surfaceprovider/vData.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/SurfaceProvider/src/com/remote/surfaceprovider/vData.java	2015-12-02 18:43:22.000000000 +0900
@@ -0,0 +1,109 @@
+package com.remote.surfaceprovider;
+
+import java.io.Serializable;
+
+public class vData implements Serializable{
+
+	private String mime = "video/avc";
+	private int width = 0;
+	private int height = 0;
+	private byte[] csd0 = null;
+	private byte[] csd1 = null;
+	
+	public int sampleSize = 0;
+	public byte[] sampleData;
+	public long presentationTime = 0;
+	
+	private static final long serialVersionUID = 1L;
+	
+	/**
+	 * 
+	 */
+	public vData(){
+		
+	}
+	
+	/**
+	 * 
+	 */
+	public vData(int _sampleSize, byte[] _sampleData, long _presentationTime){
+		sampleSize = _sampleSize;
+		sampleData = _sampleData;
+		presentationTime = _presentationTime;
+	}
+	
+	
+	/**
+	 * 
+	 */
+	public void setMediaFormat(String _mime, int _width, int _height, byte[] _csd0, byte[] _csd1){
+		mime = _mime;
+		width = _width;
+		height = _height;
+		csd0 = _csd0;
+		csd1 = _csd1;
+	}
+
+	/**
+	 * 
+	 */
+	public int getSampleSize(){
+		return sampleSize;
+	}
+
+	/**
+	 * 
+	 */
+	public byte[] getSampleData(){
+		return sampleData;
+	}
+
+	/**
+	 * 
+	 */
+	public long getPresentationTime(){
+		return presentationTime;
+	}	
+	/**
+	 * 
+	 */
+	public String getMime(){
+		return mime;
+	}
+	
+	/**
+	 * 
+	 */
+	public int getWidth(){
+		return width;
+	}
+	
+	/**
+	 * 
+	 */
+	public int getHeight(){
+		return height;
+	}
+
+	/**
+	 * 
+	 */
+	public byte[] get_csd0(){
+		return csd0;
+	}
+
+	/**
+	 * 
+	 */
+	public byte[] get_csd1(){
+		return csd1;
+	}
+
+	
+	@Override
+	public String toString() {
+		return sampleSize + " is sampleSize,  " + sampleData
+				+ " is sampleData,  " + presentationTime + " is prest. time";
+	}
+	
+}
diff -urN Original_4.4.4_r1/packages/apps/TestApp/AndroidManifest.xml AndroidSource/packages/apps/TestApp/AndroidManifest.xml
--- Original_4.4.4_r1/packages/apps/TestApp/AndroidManifest.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/AndroidManifest.xml	2016-06-22 10:44:02.000000000 +0900
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.test"
+    android:versionCode="1"
+    android:versionName="1.0" >
+
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.VIBRATE" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
+    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
+    <uses-permission android:name="android.permission.WAKE_LOCK" />
+    <uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />
+    
+    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
+	<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
+
+    <uses-feature android:name="android.hardware.sensor.accelerometer" />
+
+    <uses-sdk
+        android:minSdkVersion="19"
+        android:targetSdkVersion="19" />
+
+    <application
+        android:allowBackup="true"
+        android:icon="@drawable/ic_launcher"
+        android:label="@string/app_name"
+        android:theme="@style/AppTheme" >
+        <activity
+            android:name=".MainActivity"
+            android:label="@string/app_name" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:name=".sensor.SensorActivity"
+            android:configChanges="keyboardHidden|orientation|screenSize"
+            android:label="@string/title_activity_sensor"
+            android:screenOrientation="portrait" >
+        </activity>
+        <activity
+            android:name=".sensor.NextPage"
+            android:label="@string/title_activity_next_page" >
+        </activity>
+        <activity
+            android:name=".motion.TouchActivity"
+            android:label="@string/title_activity_touch" >
+        </activity>
+        <activity
+            android:name=".touch.TouchActivity"
+            android:label="@string/title_activity_touch" >
+        </activity>
+        <activity
+            android:name=".distribute.DistributeActivity"
+            android:label="@string/title_activity_distribute" >
+        </activity>
+        <activity
+            android:name=".location.LocationActivity"
+            android:label="@string/title_activity_location" >
+        </activity>
+        <activity
+            android:name=".sensor.ProxiActivity"
+            android:label="@string/title_activity_proxi" >
+        </activity>
+        <activity
+            android:name=".alert.RequestDialog"
+            android:label="@string/title_activity_proxi" 
+            android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
+            <intent-filter>
+                <action android:name="android.intent.action.COLLABOROID" />
+
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
diff -urN Original_4.4.4_r1/packages/apps/TestApp/AndroidManifest.xml~ AndroidSource/packages/apps/TestApp/AndroidManifest.xml~
--- Original_4.4.4_r1/packages/apps/TestApp/AndroidManifest.xml~	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/AndroidManifest.xml~	2015-01-09 00:26:12.000000000 +0900
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.test"
+    android:versionCode="1"
+    android:versionName="1.0" >
+
+    <uses-permission android:name="android.permission.INTERNET"/>
+    <uses-permission android:name="android.permission.VIBRATE"/>
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
+   
+    
+    <uses-sdk
+        android:minSdkVersion="19"
+        android:targetSdkVersion="19" />
+    
+    <application
+        android:allowBackup="true"
+        android:icon="@drawable/ic_launcher"
+        android:label="@string/app_name"
+        android:theme="@style/AppTheme" >
+        <activity
+            android:name=".MainActivity"
+            android:label="@string/app_name" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+
+</manifest>
diff -urN Original_4.4.4_r1/packages/apps/TestApp/Android.mk AndroidSource/packages/apps/TestApp/Android.mk
--- Original_4.4.4_r1/packages/apps/TestApp/Android.mk	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/Android.mk	2015-01-09 00:26:12.000000000 +0900
@@ -0,0 +1,18 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := TestApp 
+LOCAL_CERTIFICATE := platform
+LOCAL_PRIVILEGED_MODULE := true
+
+include $(BUILD_PACKAGE)
+
+include $(call all-makefiles-under, $(LOCAL_PATH))
+
+
+
+
diff -urN Original_4.4.4_r1/packages/apps/TestApp/Android.mk~ AndroidSource/packages/apps/TestApp/Android.mk~
--- Original_4.4.4_r1/packages/apps/TestApp/Android.mk~	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/Android.mk~	2015-01-09 00:26:12.000000000 +0900
@@ -0,0 +1,12 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := TestApp 
+
+include $(BUILD_PACKAGE)
+
+include $(call all-makefiles-under, $(LOCAL_PATH))
diff -urN Original_4.4.4_r1/packages/apps/TestApp/bin/AndroidManifest.xml AndroidSource/packages/apps/TestApp/bin/AndroidManifest.xml
--- Original_4.4.4_r1/packages/apps/TestApp/bin/AndroidManifest.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/bin/AndroidManifest.xml	2015-12-07 15:11:01.000000000 +0900
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.test"
+    android:versionCode="1"
+    android:versionName="1.0" >
+
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.VIBRATE" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
+    <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
+    <uses-permission android:name="android.permission.WAKE_LOCK" />
+    <uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />
+
+    <uses-feature android:name="android.hardware.sensor.accelerometer" />
+
+    <uses-sdk
+        android:minSdkVersion="19"
+        android:targetSdkVersion="19" />
+
+    <application
+        android:allowBackup="true"
+        android:icon="@drawable/ic_launcher"
+        android:label="@string/app_name"
+        android:theme="@style/AppTheme" >
+        <activity
+            android:name=".MainActivity"
+            android:label="@string/app_name" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:name=".sensor.SensorActivity"
+            android:configChanges="keyboardHidden|orientation|screenSize"
+            android:label="@string/title_activity_sensor"
+            android:screenOrientation="portrait" >
+        </activity>
+        <activity
+            android:name=".sensor.NextPage"
+            android:label="@string/title_activity_next_page" >
+        </activity>
+        <activity
+            android:name=".motion.TouchActivity"
+            android:label="@string/title_activity_touch" >
+        </activity>
+        <activity
+            android:name=".touch.TouchActivity"
+            android:label="@string/title_activity_touch" >
+        </activity>
+        <activity
+            android:name=".distribute.DistributeActivity"
+            android:label="@string/title_activity_distribute" >
+        </activity>
+        <activity
+            android:name=".location.LocationActivity"
+            android:label="@string/title_activity_location" >
+        </activity>
+        <activity
+            android:name=".sensor.ProxiActivity"
+            android:label="@string/title_activity_proxi" >
+        </activity>
+    </application>
+
+</manifest>
diff -urN Original_4.4.4_r1/packages/apps/TestApp/bin/jarlist.cache AndroidSource/packages/apps/TestApp/bin/jarlist.cache
--- Original_4.4.4_r1/packages/apps/TestApp/bin/jarlist.cache	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/bin/jarlist.cache	2016-01-20 09:47:30.000000000 +0900
@@ -0,0 +1,3 @@
+# cache for current jar dependency. DO NOT EDIT.
+# format is <lastModified> <length> <SHA-1> <path>
+# Encoding is UTF-8
diff -urN Original_4.4.4_r1/packages/apps/TestApp/bin/R.txt AndroidSource/packages/apps/TestApp/bin/R.txt
--- Original_4.4.4_r1/packages/apps/TestApp/bin/R.txt	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/bin/R.txt	2015-01-22 10:08:07.000000000 +0900
@@ -0,0 +1,649 @@
+int anim abc_fade_in 0x7f040000
+int anim abc_fade_out 0x7f040001
+int anim abc_slide_in_bottom 0x7f040002
+int anim abc_slide_in_top 0x7f040003
+int anim abc_slide_out_bottom 0x7f040004
+int anim abc_slide_out_top 0x7f040005
+int attr actionBarDivider 0x7f01000f
+int attr actionBarItemBackground 0x7f010010
+int attr actionBarSize 0x7f01000e
+int attr actionBarSplitStyle 0x7f01000c
+int attr actionBarStyle 0x7f01000b
+int attr actionBarTabBarStyle 0x7f010008
+int attr actionBarTabStyle 0x7f010007
+int attr actionBarTabTextStyle 0x7f010009
+int attr actionBarWidgetTheme 0x7f01000d
+int attr actionButtonStyle 0x7f010016
+int attr actionDropDownStyle 0x7f010047
+int attr actionLayout 0x7f01004e
+int attr actionMenuTextAppearance 0x7f010011
+int attr actionMenuTextColor 0x7f010012
+int attr actionModeBackground 0x7f01003c
+int attr actionModeCloseButtonStyle 0x7f01003b
+int attr actionModeCloseDrawable 0x7f01003e
+int attr actionModeCopyDrawable 0x7f010040
+int attr actionModeCutDrawable 0x7f01003f
+int attr actionModeFindDrawable 0x7f010044
+int attr actionModePasteDrawable 0x7f010041
+int attr actionModePopupWindowStyle 0x7f010046
+int attr actionModeSelectAllDrawable 0x7f010042
+int attr actionModeShareDrawable 0x7f010043
+int attr actionModeSplitBackground 0x7f01003d
+int attr actionModeStyle 0x7f01003a
+int attr actionModeWebSearchDrawable 0x7f010045
+int attr actionOverflowButtonStyle 0x7f01000a
+int attr actionProviderClass 0x7f010050
+int attr actionViewClass 0x7f01004f
+int attr activityChooserViewStyle 0x7f01006c
+int attr background 0x7f01002f
+int attr backgroundSplit 0x7f010031
+int attr backgroundStacked 0x7f010030
+int attr buttonBarButtonStyle 0x7f010018
+int attr buttonBarStyle 0x7f010017
+int attr customNavigationLayout 0x7f010032
+int attr disableChildrenWhenDisabled 0x7f010054
+int attr displayOptions 0x7f010028
+int attr divider 0x7f01002e
+int attr dividerHorizontal 0x7f01001b
+int attr dividerPadding 0x7f010056
+int attr dividerVertical 0x7f01001a
+int attr dropDownListViewStyle 0x7f010021
+int attr dropdownListPreferredItemHeight 0x7f010048
+int attr expandActivityOverflowButtonDrawable 0x7f01006b
+int attr height 0x7f010026
+int attr homeAsUpIndicator 0x7f010013
+int attr homeLayout 0x7f010033
+int attr icon 0x7f01002c
+int attr iconifiedByDefault 0x7f01005a
+int attr indeterminateProgressStyle 0x7f010035
+int attr initialActivityCount 0x7f01006a
+int attr isLightTheme 0x7f010059
+int attr itemPadding 0x7f010037
+int attr listChoiceBackgroundIndicator 0x7f01004c
+int attr listPopupWindowStyle 0x7f010022
+int attr listPreferredItemHeight 0x7f01001c
+int attr listPreferredItemHeightLarge 0x7f01001e
+int attr listPreferredItemHeightSmall 0x7f01001d
+int attr listPreferredItemPaddingLeft 0x7f01001f
+int attr listPreferredItemPaddingRight 0x7f010020
+int attr logo 0x7f01002d
+int attr navigationMode 0x7f010027
+int attr paddingEnd 0x7f010039
+int attr paddingStart 0x7f010038
+int attr panelMenuListTheme 0x7f01004b
+int attr panelMenuListWidth 0x7f01004a
+int attr popupMenuStyle 0x7f010049
+int attr popupPromptView 0x7f010053
+int attr progressBarPadding 0x7f010036
+int attr progressBarStyle 0x7f010034
+int attr prompt 0x7f010051
+int attr queryHint 0x7f01005b
+int attr searchDropdownBackground 0x7f01005c
+int attr searchResultListItemHeight 0x7f010065
+int attr searchViewAutoCompleteTextView 0x7f010069
+int attr searchViewCloseIcon 0x7f01005d
+int attr searchViewEditQuery 0x7f010061
+int attr searchViewEditQueryBackground 0x7f010062
+int attr searchViewGoIcon 0x7f01005e
+int attr searchViewSearchIcon 0x7f01005f
+int attr searchViewTextField 0x7f010063
+int attr searchViewTextFieldRight 0x7f010064
+int attr searchViewVoiceIcon 0x7f010060
+int attr selectableItemBackground 0x7f010019
+int attr showAsAction 0x7f01004d
+int attr showDividers 0x7f010055
+int attr spinnerDropDownItemStyle 0x7f010058
+int attr spinnerMode 0x7f010052
+int attr spinnerStyle 0x7f010057
+int attr subtitle 0x7f010029
+int attr subtitleTextStyle 0x7f01002b
+int attr textAllCaps 0x7f01006d
+int attr textAppearanceLargePopupMenu 0x7f010014
+int attr textAppearanceListItem 0x7f010023
+int attr textAppearanceListItemSmall 0x7f010024
+int attr textAppearanceSearchResultSubtitle 0x7f010067
+int attr textAppearanceSearchResultTitle 0x7f010066
+int attr textAppearanceSmallPopupMenu 0x7f010015
+int attr textColorSearchUrl 0x7f010068
+int attr title 0x7f010025
+int attr titleTextStyle 0x7f01002a
+int attr windowActionBar 0x7f010000
+int attr windowActionBarOverlay 0x7f010001
+int attr windowFixedHeightMajor 0x7f010006
+int attr windowFixedHeightMinor 0x7f010004
+int attr windowFixedWidthMajor 0x7f010003
+int attr windowFixedWidthMinor 0x7f010005
+int attr windowSplitActionBar 0x7f010002
+int bool abc_action_bar_embed_tabs_pre_jb 0x7f060000
+int bool abc_action_bar_expanded_action_views_exclusive 0x7f060001
+int bool abc_config_actionMenuItemAllCaps 0x7f060005
+int bool abc_config_allowActionMenuItemTextWithIcon 0x7f060004
+int bool abc_config_showMenuShortcutsWhenKeyboardPresent 0x7f060003
+int bool abc_split_action_bar_is_narrow 0x7f060002
+int color abc_search_url_text_holo 0x7f070003
+int color abc_search_url_text_normal 0x7f070000
+int color abc_search_url_text_pressed 0x7f070002
+int color abc_search_url_text_selected 0x7f070001
+int dimen abc_action_bar_default_height 0x7f080002
+int dimen abc_action_bar_icon_vertical_padding 0x7f080003
+int dimen abc_action_bar_progress_bar_size 0x7f08000a
+int dimen abc_action_bar_stacked_max_height 0x7f080009
+int dimen abc_action_bar_stacked_tab_max_width 0x7f080001
+int dimen abc_action_bar_subtitle_bottom_margin 0x7f080007
+int dimen abc_action_bar_subtitle_text_size 0x7f080005
+int dimen abc_action_bar_subtitle_top_margin 0x7f080006
+int dimen abc_action_bar_title_text_size 0x7f080004
+int dimen abc_action_button_min_width 0x7f080008
+int dimen abc_config_prefDialogWidth 0x7f080000
+int dimen abc_dropdownitem_icon_width 0x7f080010
+int dimen abc_dropdownitem_text_padding_left 0x7f08000e
+int dimen abc_dropdownitem_text_padding_right 0x7f08000f
+int dimen abc_panel_menu_list_width 0x7f08000b
+int dimen abc_search_view_preferred_width 0x7f08000d
+int dimen abc_search_view_text_min_width 0x7f08000c
+int dimen activity_horizontal_margin 0x7f080015
+int dimen activity_vertical_margin 0x7f080016
+int dimen dialog_fixed_height_major 0x7f080013
+int dimen dialog_fixed_height_minor 0x7f080014
+int dimen dialog_fixed_width_major 0x7f080011
+int dimen dialog_fixed_width_minor 0x7f080012
+int drawable abc_ab_bottom_solid_dark_holo 0x7f020000
+int drawable abc_ab_bottom_solid_light_holo 0x7f020001
+int drawable abc_ab_bottom_transparent_dark_holo 0x7f020002
+int drawable abc_ab_bottom_transparent_light_holo 0x7f020003
+int drawable abc_ab_share_pack_holo_dark 0x7f020004
+int drawable abc_ab_share_pack_holo_light 0x7f020005
+int drawable abc_ab_solid_dark_holo 0x7f020006
+int drawable abc_ab_solid_light_holo 0x7f020007
+int drawable abc_ab_stacked_solid_dark_holo 0x7f020008
+int drawable abc_ab_stacked_solid_light_holo 0x7f020009
+int drawable abc_ab_stacked_transparent_dark_holo 0x7f02000a
+int drawable abc_ab_stacked_transparent_light_holo 0x7f02000b
+int drawable abc_ab_transparent_dark_holo 0x7f02000c
+int drawable abc_ab_transparent_light_holo 0x7f02000d
+int drawable abc_cab_background_bottom_holo_dark 0x7f02000e
+int drawable abc_cab_background_bottom_holo_light 0x7f02000f
+int drawable abc_cab_background_top_holo_dark 0x7f020010
+int drawable abc_cab_background_top_holo_light 0x7f020011
+int drawable abc_ic_ab_back_holo_dark 0x7f020012
+int drawable abc_ic_ab_back_holo_light 0x7f020013
+int drawable abc_ic_cab_done_holo_dark 0x7f020014
+int drawable abc_ic_cab_done_holo_light 0x7f020015
+int drawable abc_ic_clear 0x7f020016
+int drawable abc_ic_clear_disabled 0x7f020017
+int drawable abc_ic_clear_holo_light 0x7f020018
+int drawable abc_ic_clear_normal 0x7f020019
+int drawable abc_ic_clear_search_api_disabled_holo_light 0x7f02001a
+int drawable abc_ic_clear_search_api_holo_light 0x7f02001b
+int drawable abc_ic_commit_search_api_holo_dark 0x7f02001c
+int drawable abc_ic_commit_search_api_holo_light 0x7f02001d
+int drawable abc_ic_go 0x7f02001e
+int drawable abc_ic_go_search_api_holo_light 0x7f02001f
+int drawable abc_ic_menu_moreoverflow_normal_holo_dark 0x7f020020
+int drawable abc_ic_menu_moreoverflow_normal_holo_light 0x7f020021
+int drawable abc_ic_menu_share_holo_dark 0x7f020022
+int drawable abc_ic_menu_share_holo_light 0x7f020023
+int drawable abc_ic_search 0x7f020024
+int drawable abc_ic_search_api_holo_light 0x7f020025
+int drawable abc_ic_voice_search 0x7f020026
+int drawable abc_ic_voice_search_api_holo_light 0x7f020027
+int drawable abc_item_background_holo_dark 0x7f020028
+int drawable abc_item_background_holo_light 0x7f020029
+int drawable abc_list_divider_holo_dark 0x7f02002a
+int drawable abc_list_divider_holo_light 0x7f02002b
+int drawable abc_list_focused_holo 0x7f02002c
+int drawable abc_list_longpressed_holo 0x7f02002d
+int drawable abc_list_pressed_holo_dark 0x7f02002e
+int drawable abc_list_pressed_holo_light 0x7f02002f
+int drawable abc_list_selector_background_transition_holo_dark 0x7f020030
+int drawable abc_list_selector_background_transition_holo_light 0x7f020031
+int drawable abc_list_selector_disabled_holo_dark 0x7f020032
+int drawable abc_list_selector_disabled_holo_light 0x7f020033
+int drawable abc_list_selector_holo_dark 0x7f020034
+int drawable abc_list_selector_holo_light 0x7f020035
+int drawable abc_menu_dropdown_panel_holo_dark 0x7f020036
+int drawable abc_menu_dropdown_panel_holo_light 0x7f020037
+int drawable abc_menu_hardkey_panel_holo_dark 0x7f020038
+int drawable abc_menu_hardkey_panel_holo_light 0x7f020039
+int drawable abc_search_dropdown_dark 0x7f02003a
+int drawable abc_search_dropdown_light 0x7f02003b
+int drawable abc_spinner_ab_default_holo_dark 0x7f02003c
+int drawable abc_spinner_ab_default_holo_light 0x7f02003d
+int drawable abc_spinner_ab_disabled_holo_dark 0x7f02003e
+int drawable abc_spinner_ab_disabled_holo_light 0x7f02003f
+int drawable abc_spinner_ab_focused_holo_dark 0x7f020040
+int drawable abc_spinner_ab_focused_holo_light 0x7f020041
+int drawable abc_spinner_ab_holo_dark 0x7f020042
+int drawable abc_spinner_ab_holo_light 0x7f020043
+int drawable abc_spinner_ab_pressed_holo_dark 0x7f020044
+int drawable abc_spinner_ab_pressed_holo_light 0x7f020045
+int drawable abc_tab_indicator_ab_holo 0x7f020046
+int drawable abc_tab_selected_focused_holo 0x7f020047
+int drawable abc_tab_selected_holo 0x7f020048
+int drawable abc_tab_selected_pressed_holo 0x7f020049
+int drawable abc_tab_unselected_pressed_holo 0x7f02004a
+int drawable abc_textfield_search_default_holo_dark 0x7f02004b
+int drawable abc_textfield_search_default_holo_light 0x7f02004c
+int drawable abc_textfield_search_right_default_holo_dark 0x7f02004d
+int drawable abc_textfield_search_right_default_holo_light 0x7f02004e
+int drawable abc_textfield_search_right_selected_holo_dark 0x7f02004f
+int drawable abc_textfield_search_right_selected_holo_light 0x7f020050
+int drawable abc_textfield_search_selected_holo_dark 0x7f020051
+int drawable abc_textfield_search_selected_holo_light 0x7f020052
+int drawable abc_textfield_searchview_holo_dark 0x7f020053
+int drawable abc_textfield_searchview_holo_light 0x7f020054
+int drawable abc_textfield_searchview_right_holo_dark 0x7f020055
+int drawable abc_textfield_searchview_right_holo_light 0x7f020056
+int drawable ball 0x7f020057
+int drawable grass 0x7f020058
+int drawable hole 0x7f020059
+int drawable ic_launcher 0x7f02005a
+int drawable img_compass 0x7f02005b
+int id TableLayout1 0x7f05003d
+int id action_bar 0x7f05001c
+int id action_bar_activity_content 0x7f050015
+int id action_bar_container 0x7f05001b
+int id action_bar_overlay_layout 0x7f05001f
+int id action_bar_root 0x7f05001a
+int id action_bar_subtitle 0x7f050023
+int id action_bar_title 0x7f050022
+int id action_context_bar 0x7f05001d
+int id action_menu_divider 0x7f050016
+int id action_menu_presenter 0x7f050017
+int id action_mode_close_button 0x7f050024
+int id action_settings 0x7f050057
+int id activity_chooser_view_content 0x7f050025
+int id always 0x7f05000b
+int id beginning 0x7f050011
+int id checkbox 0x7f05002d
+int id client_tg 0x7f050049
+int id collapseActionView 0x7f05000d
+int id default_activity_button 0x7f050028
+int id dialog 0x7f05000e
+int id disableHome 0x7f050008
+int id distribute_txt 0x7f05003c
+int id dropdown 0x7f05000f
+int id edit_query 0x7f050030
+int id end 0x7f050013
+int id expand_activities_button 0x7f050026
+int id expanded_menu 0x7f05002c
+int id home 0x7f050014
+int id homeAsUp 0x7f050005
+int id icon 0x7f05002a
+int id ifRoom 0x7f05000a
+int id image 0x7f050027
+int id imageViewCompass 0x7f050054
+int id info_tv 0x7f050041
+int id ip_et 0x7f050043
+int id ip_tv 0x7f05003f
+int id listMode 0x7f050001
+int id list_item 0x7f050029
+int id middle 0x7f050012
+int id never 0x7f050009
+int id none 0x7f050010
+int id normal 0x7f050000
+int id parent 0x7f050055
+int id progress_circular 0x7f050018
+int id progress_horizontal 0x7f050019
+int id radio 0x7f05002f
+int id recommendation_btn 0x7f05004d
+int id search_badge 0x7f050032
+int id search_bar 0x7f050031
+int id search_button 0x7f050033
+int id search_close_btn 0x7f050038
+int id search_edit_frame 0x7f050034
+int id search_go_btn 0x7f05003a
+int id search_mag_icon 0x7f050035
+int id search_plate 0x7f050036
+int id search_src_text 0x7f050037
+int id search_voice_btn 0x7f05003b
+int id sensor_btn 0x7f05004c
+int id server_tg 0x7f050046
+int id server_tv 0x7f050045
+int id shortcut 0x7f05002e
+int id showCustom 0x7f050007
+int id showHome 0x7f050004
+int id showTitle 0x7f050006
+int id split_action_bar 0x7f05001e
+int id submit_area 0x7f050039
+int id tabMode 0x7f050002
+int id tableRow1 0x7f05003e
+int id tableRow2 0x7f05004a
+int id tableRow3 0x7f050044
+int id tableRow4 0x7f050047
+int id tableRow5 0x7f050040
+int id tableRow6 0x7f050042
+int id tableRow7 0x7f05004e
+int id tableRow8 0x7f050050
+int id test_btn 0x7f050051
+int id test_btn2 0x7f050056
+int id textView1 0x7f050052
+int id textView2 0x7f050048
+int id title 0x7f05002b
+int id top_action_bar 0x7f050020
+int id touch_btn 0x7f05004f
+int id tvHeading 0x7f050053
+int id up 0x7f050021
+int id useLogo 0x7f050003
+int id vibrate_btn 0x7f05004b
+int id withText 0x7f05000c
+int integer abc_max_action_buttons 0x7f090000
+int layout abc_action_bar_decor 0x7f030000
+int layout abc_action_bar_decor_include 0x7f030001
+int layout abc_action_bar_decor_overlay 0x7f030002
+int layout abc_action_bar_home 0x7f030003
+int layout abc_action_bar_tab 0x7f030004
+int layout abc_action_bar_tabbar 0x7f030005
+int layout abc_action_bar_title_item 0x7f030006
+int layout abc_action_bar_view_list_nav_layout 0x7f030007
+int layout abc_action_menu_item_layout 0x7f030008
+int layout abc_action_menu_layout 0x7f030009
+int layout abc_action_mode_bar 0x7f03000a
+int layout abc_action_mode_close_item 0x7f03000b
+int layout abc_activity_chooser_view 0x7f03000c
+int layout abc_activity_chooser_view_include 0x7f03000d
+int layout abc_activity_chooser_view_list_item 0x7f03000e
+int layout abc_expanded_menu_layout 0x7f03000f
+int layout abc_list_menu_item_checkbox 0x7f030010
+int layout abc_list_menu_item_icon 0x7f030011
+int layout abc_list_menu_item_layout 0x7f030012
+int layout abc_list_menu_item_radio 0x7f030013
+int layout abc_popup_menu_item_layout 0x7f030014
+int layout abc_search_dropdown_item_icons_2line 0x7f030015
+int layout abc_search_view 0x7f030016
+int layout abc_simple_decor 0x7f030017
+int layout activity_distribute 0x7f030018
+int layout activity_main 0x7f030019
+int layout activity_next_page 0x7f03001a
+int layout activity_sensor 0x7f03001b
+int layout activity_touch 0x7f03001c
+int layout support_simple_spinner_dropdown_item 0x7f03001d
+int menu distribute 0x7f0c0000
+int menu main 0x7f0c0001
+int menu sensor 0x7f0c0002
+int menu touch 0x7f0c0003
+int string abc_action_bar_home_description 0x7f0a0001
+int string abc_action_bar_up_description 0x7f0a0002
+int string abc_action_menu_overflow_description 0x7f0a0003
+int string abc_action_mode_done 0x7f0a0000
+int string abc_activity_chooser_view_see_all 0x7f0a000a
+int string abc_activitychooserview_choose_application 0x7f0a0009
+int string abc_searchview_description_clear 0x7f0a0006
+int string abc_searchview_description_query 0x7f0a0005
+int string abc_searchview_description_search 0x7f0a0004
+int string abc_searchview_description_submit 0x7f0a0007
+int string abc_searchview_description_voice 0x7f0a0008
+int string abc_shareactionprovider_share_with 0x7f0a000c
+int string abc_shareactionprovider_share_with_application 0x7f0a000b
+int string action_settings 0x7f0a000f
+int string app_name 0x7f0a000d
+int string client 0x7f0a0011
+int string compass 0x7f0a001e
+int string empty 0x7f0a0017
+int string first_np_text 0x7f0a001d
+int string first_text 0x7f0a001c
+int string hello_world 0x7f0a000e
+int string info 0x7f0a0012
+int string menu_settings 0x7f0a001b
+int string recommendation 0x7f0a0013
+int string sensor 0x7f0a0015
+int string server 0x7f0a0010
+int string test 0x7f0a0020
+int string title_activity_distribute 0x7f0a0021
+int string title_activity_next_page 0x7f0a001a
+int string title_activity_qwq 0x7f0a0019
+int string title_activity_sensor 0x7f0a0018
+int string title_activity_touch 0x7f0a001f
+int string touch 0x7f0a0016
+int string vibrate 0x7f0a0014
+int style AppBaseTheme 0x7f0b008b
+int style AppTheme 0x7f0b008c
+int style TextAppearance_AppCompat_Base_CompactMenu_Dialog 0x7f0b0063
+int style TextAppearance_AppCompat_Base_SearchResult 0x7f0b006d
+int style TextAppearance_AppCompat_Base_SearchResult_Subtitle 0x7f0b006f
+int style TextAppearance_AppCompat_Base_SearchResult_Title 0x7f0b006e
+int style TextAppearance_AppCompat_Base_Widget_PopupMenu_Large 0x7f0b0069
+int style TextAppearance_AppCompat_Base_Widget_PopupMenu_Small 0x7f0b006a
+int style TextAppearance_AppCompat_Light_Base_SearchResult 0x7f0b0070
+int style TextAppearance_AppCompat_Light_Base_SearchResult_Subtitle 0x7f0b0072
+int style TextAppearance_AppCompat_Light_Base_SearchResult_Title 0x7f0b0071
+int style TextAppearance_AppCompat_Light_Base_Widget_PopupMenu_Large 0x7f0b006b
+int style TextAppearance_AppCompat_Light_Base_Widget_PopupMenu_Small 0x7f0b006c
+int style TextAppearance_AppCompat_Light_SearchResult_Subtitle 0x7f0b0035
+int style TextAppearance_AppCompat_Light_SearchResult_Title 0x7f0b0034
+int style TextAppearance_AppCompat_Light_Widget_PopupMenu_Large 0x7f0b0030
+int style TextAppearance_AppCompat_Light_Widget_PopupMenu_Small 0x7f0b0031
+int style TextAppearance_AppCompat_SearchResult_Subtitle 0x7f0b0033
+int style TextAppearance_AppCompat_SearchResult_Title 0x7f0b0032
+int style TextAppearance_AppCompat_Widget_ActionBar_Menu 0x7f0b001a
+int style TextAppearance_AppCompat_Widget_ActionBar_Subtitle 0x7f0b0006
+int style TextAppearance_AppCompat_Widget_ActionBar_Subtitle_Inverse 0x7f0b0008
+int style TextAppearance_AppCompat_Widget_ActionBar_Title 0x7f0b0005
+int style TextAppearance_AppCompat_Widget_ActionBar_Title_Inverse 0x7f0b0007
+int style TextAppearance_AppCompat_Widget_ActionMode_Subtitle 0x7f0b001e
+int style TextAppearance_AppCompat_Widget_ActionMode_Subtitle_Inverse 0x7f0b0020
+int style TextAppearance_AppCompat_Widget_ActionMode_Title 0x7f0b001d
+int style TextAppearance_AppCompat_Widget_ActionMode_Title_Inverse 0x7f0b001f
+int style TextAppearance_AppCompat_Widget_Base_ActionBar_Menu 0x7f0b0054
+int style TextAppearance_AppCompat_Widget_Base_ActionBar_Subtitle 0x7f0b0056
+int style TextAppearance_AppCompat_Widget_Base_ActionBar_Subtitle_Inverse 0x7f0b0058
+int style TextAppearance_AppCompat_Widget_Base_ActionBar_Title 0x7f0b0055
+int style TextAppearance_AppCompat_Widget_Base_ActionBar_Title_Inverse 0x7f0b0057
+int style TextAppearance_AppCompat_Widget_Base_ActionMode_Subtitle 0x7f0b0051
+int style TextAppearance_AppCompat_Widget_Base_ActionMode_Subtitle_Inverse 0x7f0b0053
+int style TextAppearance_AppCompat_Widget_Base_ActionMode_Title 0x7f0b0050
+int style TextAppearance_AppCompat_Widget_Base_ActionMode_Title_Inverse 0x7f0b0052
+int style TextAppearance_AppCompat_Widget_Base_DropDownItem 0x7f0b0061
+int style TextAppearance_AppCompat_Widget_DropDownItem 0x7f0b0021
+int style TextAppearance_AppCompat_Widget_PopupMenu_Large 0x7f0b002e
+int style TextAppearance_AppCompat_Widget_PopupMenu_Small 0x7f0b002f
+int style TextAppearance_Widget_AppCompat_Base_ExpandedMenu_Item 0x7f0b0062
+int style TextAppearance_Widget_AppCompat_ExpandedMenu_Item 0x7f0b0028
+int style Theme_AppCompat 0x7f0b0077
+int style Theme_AppCompat_Base_CompactMenu 0x7f0b0083
+int style Theme_AppCompat_Base_CompactMenu_Dialog 0x7f0b0084
+int style Theme_AppCompat_CompactMenu 0x7f0b007c
+int style Theme_AppCompat_CompactMenu_Dialog 0x7f0b007d
+int style Theme_AppCompat_DialogWhenLarge 0x7f0b007a
+int style Theme_AppCompat_Light 0x7f0b0078
+int style Theme_AppCompat_Light_DarkActionBar 0x7f0b0079
+int style Theme_AppCompat_Light_DialogWhenLarge 0x7f0b007b
+int style Theme_Base 0x7f0b007e
+int style Theme_Base_AppCompat 0x7f0b0080
+int style Theme_Base_AppCompat_Dialog_FixedSize 0x7f0b0087
+int style Theme_Base_AppCompat_Dialog_Light_FixedSize 0x7f0b0088
+int style Theme_Base_AppCompat_DialogWhenLarge 0x7f0b0085
+int style Theme_Base_AppCompat_DialogWhenLarge_Base 0x7f0b0089
+int style Theme_Base_AppCompat_Light 0x7f0b0081
+int style Theme_Base_AppCompat_Light_DarkActionBar 0x7f0b0082
+int style Theme_Base_AppCompat_Light_DialogWhenLarge 0x7f0b0086
+int style Theme_Base_AppCompat_Light_DialogWhenLarge_Base 0x7f0b008a
+int style Theme_Base_Light 0x7f0b007f
+int style Widget_AppCompat_ActionBar 0x7f0b0000
+int style Widget_AppCompat_ActionBar_Solid 0x7f0b0002
+int style Widget_AppCompat_ActionBar_TabBar 0x7f0b0011
+int style Widget_AppCompat_ActionBar_TabText 0x7f0b0017
+int style Widget_AppCompat_ActionBar_TabView 0x7f0b0014
+int style Widget_AppCompat_ActionButton 0x7f0b000b
+int style Widget_AppCompat_ActionButton_CloseMode 0x7f0b000d
+int style Widget_AppCompat_ActionButton_Overflow 0x7f0b000f
+int style Widget_AppCompat_ActionMode 0x7f0b001b
+int style Widget_AppCompat_ActivityChooserView 0x7f0b0038
+int style Widget_AppCompat_AutoCompleteTextView 0x7f0b0036
+int style Widget_AppCompat_Base_ActionBar 0x7f0b003a
+int style Widget_AppCompat_Base_ActionBar_Solid 0x7f0b003c
+int style Widget_AppCompat_Base_ActionBar_TabBar 0x7f0b0045
+int style Widget_AppCompat_Base_ActionBar_TabText 0x7f0b004b
+int style Widget_AppCompat_Base_ActionBar_TabView 0x7f0b0048
+int style Widget_AppCompat_Base_ActionButton 0x7f0b003f
+int style Widget_AppCompat_Base_ActionButton_CloseMode 0x7f0b0041
+int style Widget_AppCompat_Base_ActionButton_Overflow 0x7f0b0043
+int style Widget_AppCompat_Base_ActionMode 0x7f0b004e
+int style Widget_AppCompat_Base_ActivityChooserView 0x7f0b0075
+int style Widget_AppCompat_Base_AutoCompleteTextView 0x7f0b0073
+int style Widget_AppCompat_Base_DropDownItem_Spinner 0x7f0b005d
+int style Widget_AppCompat_Base_ListPopupWindow 0x7f0b0065
+int style Widget_AppCompat_Base_ListView_DropDown 0x7f0b005f
+int style Widget_AppCompat_Base_ListView_Menu 0x7f0b0064
+int style Widget_AppCompat_Base_PopupMenu 0x7f0b0067
+int style Widget_AppCompat_Base_ProgressBar 0x7f0b005a
+int style Widget_AppCompat_Base_ProgressBar_Horizontal 0x7f0b0059
+int style Widget_AppCompat_Base_Spinner 0x7f0b005b
+int style Widget_AppCompat_DropDownItem_Spinner 0x7f0b0024
+int style Widget_AppCompat_Light_ActionBar 0x7f0b0001
+int style Widget_AppCompat_Light_ActionBar_Solid 0x7f0b0003
+int style Widget_AppCompat_Light_ActionBar_Solid_Inverse 0x7f0b0004
+int style Widget_AppCompat_Light_ActionBar_TabBar 0x7f0b0012
+int style Widget_AppCompat_Light_ActionBar_TabBar_Inverse 0x7f0b0013
+int style Widget_AppCompat_Light_ActionBar_TabText 0x7f0b0018
+int style Widget_AppCompat_Light_ActionBar_TabText_Inverse 0x7f0b0019
+int style Widget_AppCompat_Light_ActionBar_TabView 0x7f0b0015
+int style Widget_AppCompat_Light_ActionBar_TabView_Inverse 0x7f0b0016
+int style Widget_AppCompat_Light_ActionButton 0x7f0b000c
+int style Widget_AppCompat_Light_ActionButton_CloseMode 0x7f0b000e
+int style Widget_AppCompat_Light_ActionButton_Overflow 0x7f0b0010
+int style Widget_AppCompat_Light_ActionMode_Inverse 0x7f0b001c
+int style Widget_AppCompat_Light_ActivityChooserView 0x7f0b0039
+int style Widget_AppCompat_Light_AutoCompleteTextView 0x7f0b0037
+int style Widget_AppCompat_Light_Base_ActionBar 0x7f0b003b
+int style Widget_AppCompat_Light_Base_ActionBar_Solid 0x7f0b003d
+int style Widget_AppCompat_Light_Base_ActionBar_Solid_Inverse 0x7f0b003e
+int style Widget_AppCompat_Light_Base_ActionBar_TabBar 0x7f0b0046
+int style Widget_AppCompat_Light_Base_ActionBar_TabBar_Inverse 0x7f0b0047
+int style Widget_AppCompat_Light_Base_ActionBar_TabText 0x7f0b004c
+int style Widget_AppCompat_Light_Base_ActionBar_TabText_Inverse 0x7f0b004d
+int style Widget_AppCompat_Light_Base_ActionBar_TabView 0x7f0b0049
+int style Widget_AppCompat_Light_Base_ActionBar_TabView_Inverse 0x7f0b004a
+int style Widget_AppCompat_Light_Base_ActionButton 0x7f0b0040
+int style Widget_AppCompat_Light_Base_ActionButton_CloseMode 0x7f0b0042
+int style Widget_AppCompat_Light_Base_ActionButton_Overflow 0x7f0b0044
+int style Widget_AppCompat_Light_Base_ActionMode_Inverse 0x7f0b004f
+int style Widget_AppCompat_Light_Base_ActivityChooserView 0x7f0b0076
+int style Widget_AppCompat_Light_Base_AutoCompleteTextView 0x7f0b0074
+int style Widget_AppCompat_Light_Base_DropDownItem_Spinner 0x7f0b005e
+int style Widget_AppCompat_Light_Base_ListPopupWindow 0x7f0b0066
+int style Widget_AppCompat_Light_Base_ListView_DropDown 0x7f0b0060
+int style Widget_AppCompat_Light_Base_PopupMenu 0x7f0b0068
+int style Widget_AppCompat_Light_Base_Spinner 0x7f0b005c
+int style Widget_AppCompat_Light_DropDownItem_Spinner 0x7f0b0025
+int style Widget_AppCompat_Light_ListPopupWindow 0x7f0b002a
+int style Widget_AppCompat_Light_ListView_DropDown 0x7f0b0027
+int style Widget_AppCompat_Light_PopupMenu 0x7f0b002c
+int style Widget_AppCompat_Light_Spinner_DropDown_ActionBar 0x7f0b0023
+int style Widget_AppCompat_ListPopupWindow 0x7f0b0029
+int style Widget_AppCompat_ListView_DropDown 0x7f0b0026
+int style Widget_AppCompat_ListView_Menu 0x7f0b002d
+int style Widget_AppCompat_PopupMenu 0x7f0b002b
+int style Widget_AppCompat_ProgressBar 0x7f0b000a
+int style Widget_AppCompat_ProgressBar_Horizontal 0x7f0b0009
+int style Widget_AppCompat_Spinner_DropDown_ActionBar 0x7f0b0022
+int[] styleable ActionBar { 0x7f010025, 0x7f010026, 0x7f010027, 0x7f010028, 0x7f010029, 0x7f01002a, 0x7f01002b, 0x7f01002c, 0x7f01002d, 0x7f01002e, 0x7f01002f, 0x7f010030, 0x7f010031, 0x7f010032, 0x7f010033, 0x7f010034, 0x7f010035, 0x7f010036, 0x7f010037 }
+int styleable ActionBar_background 10
+int styleable ActionBar_backgroundSplit 12
+int styleable ActionBar_backgroundStacked 11
+int styleable ActionBar_customNavigationLayout 13
+int styleable ActionBar_displayOptions 3
+int styleable ActionBar_divider 9
+int styleable ActionBar_height 1
+int styleable ActionBar_homeLayout 14
+int styleable ActionBar_icon 7
+int styleable ActionBar_indeterminateProgressStyle 16
+int styleable ActionBar_itemPadding 18
+int styleable ActionBar_logo 8
+int styleable ActionBar_navigationMode 2
+int styleable ActionBar_progressBarPadding 17
+int styleable ActionBar_progressBarStyle 15
+int styleable ActionBar_subtitle 4
+int styleable ActionBar_subtitleTextStyle 6
+int styleable ActionBar_title 0
+int styleable ActionBar_titleTextStyle 5
+int[] styleable ActionBarLayout { 0x010100b3 }
+int styleable ActionBarLayout_android_layout_gravity 0
+int[] styleable ActionBarWindow { 0x7f010000, 0x7f010001, 0x7f010002, 0x7f010003, 0x7f010004, 0x7f010005, 0x7f010006 }
+int styleable ActionBarWindow_windowActionBar 0
+int styleable ActionBarWindow_windowActionBarOverlay 1
+int styleable ActionBarWindow_windowFixedHeightMajor 6
+int styleable ActionBarWindow_windowFixedHeightMinor 4
+int styleable ActionBarWindow_windowFixedWidthMajor 3
+int styleable ActionBarWindow_windowFixedWidthMinor 5
+int styleable ActionBarWindow_windowSplitActionBar 2
+int[] styleable ActionMenuItemView { 0x0101013f }
+int styleable ActionMenuItemView_android_minWidth 0
+int[] styleable ActionMenuView { }
+int[] styleable ActionMode { 0x7f010026, 0x7f01002a, 0x7f01002b, 0x7f01002f, 0x7f010031 }
+int styleable ActionMode_background 3
+int styleable ActionMode_backgroundSplit 4
+int styleable ActionMode_height 0
+int styleable ActionMode_subtitleTextStyle 2
+int styleable ActionMode_titleTextStyle 1
+int[] styleable ActivityChooserView { 0x7f01006a, 0x7f01006b }
+int styleable ActivityChooserView_expandActivityOverflowButtonDrawable 1
+int styleable ActivityChooserView_initialActivityCount 0
+int[] styleable CompatTextView { 0x7f01006d }
+int styleable CompatTextView_textAllCaps 0
+int[] styleable LinearLayoutICS { 0x7f01002e, 0x7f010055, 0x7f010056 }
+int styleable LinearLayoutICS_divider 0
+int styleable LinearLayoutICS_dividerPadding 2
+int styleable LinearLayoutICS_showDividers 1
+int[] styleable MenuGroup { 0x0101000e, 0x010100d0, 0x01010194, 0x010101de, 0x010101df, 0x010101e0 }
+int styleable MenuGroup_android_checkableBehavior 5
+int styleable MenuGroup_android_enabled 0
+int styleable MenuGroup_android_id 1
+int styleable MenuGroup_android_menuCategory 3
+int styleable MenuGroup_android_orderInCategory 4
+int styleable MenuGroup_android_visible 2
+int[] styleable MenuItem { 0x01010002, 0x0101000e, 0x010100d0, 0x01010106, 0x01010194, 0x010101de, 0x010101df, 0x010101e1, 0x010101e2, 0x010101e3, 0x010101e4, 0x010101e5, 0x0101026f, 0x7f01004d, 0x7f01004e, 0x7f01004f, 0x7f010050 }
+int styleable MenuItem_actionLayout 14
+int styleable MenuItem_actionProviderClass 16
+int styleable MenuItem_actionViewClass 15
+int styleable MenuItem_android_alphabeticShortcut 9
+int styleable MenuItem_android_checkable 11
+int styleable MenuItem_android_checked 3
+int styleable MenuItem_android_enabled 1
+int styleable MenuItem_android_icon 0
+int styleable MenuItem_android_id 2
+int styleable MenuItem_android_menuCategory 5
+int styleable MenuItem_android_numericShortcut 10
+int styleable MenuItem_android_onClick 12
+int styleable MenuItem_android_orderInCategory 6
+int styleable MenuItem_android_title 7
+int styleable MenuItem_android_titleCondensed 8
+int styleable MenuItem_android_visible 4
+int styleable MenuItem_showAsAction 13
+int[] styleable MenuView { 0x010100ae, 0x0101012c, 0x0101012d, 0x0101012e, 0x0101012f, 0x01010130, 0x01010131, 0x01010435 }
+int styleable MenuView_android_headerBackground 4
+int styleable MenuView_android_horizontalDivider 2
+int styleable MenuView_android_itemBackground 5
+int styleable MenuView_android_itemIconDisabledAlpha 6
+int styleable MenuView_android_itemTextAppearance 1
+int styleable MenuView_android_preserveIconSpacing 7
+int styleable MenuView_android_verticalDivider 3
+int styleable MenuView_android_windowAnimationStyle 0
+int[] styleable SearchView { 0x0101011f, 0x01010220, 0x01010264, 0x7f01005a, 0x7f01005b }
+int styleable SearchView_android_imeOptions 2
+int styleable SearchView_android_inputType 1
+int styleable SearchView_android_maxWidth 0
+int styleable SearchView_iconifiedByDefault 3
+int styleable SearchView_queryHint 4
+int[] styleable Spinner { 0x010100af, 0x01010175, 0x01010176, 0x01010262, 0x010102ac, 0x010102ad, 0x7f010051, 0x7f010052, 0x7f010053, 0x7f010054 }
+int styleable Spinner_android_dropDownHorizontalOffset 4
+int styleable Spinner_android_dropDownSelector 1
+int styleable Spinner_android_dropDownVerticalOffset 5
+int styleable Spinner_android_dropDownWidth 3
+int styleable Spinner_android_gravity 0
+int styleable Spinner_android_popupBackground 2
+int styleable Spinner_disableChildrenWhenDisabled 9
+int styleable Spinner_popupPromptView 8
+int styleable Spinner_prompt 6
+int styleable Spinner_spinnerMode 7
+int[] styleable Theme { 0x7f010047, 0x7f010048, 0x7f010049, 0x7f01004a, 0x7f01004b, 0x7f01004c }
+int styleable Theme_actionDropDownStyle 0
+int styleable Theme_dropdownListPreferredItemHeight 1
+int styleable Theme_listChoiceBackgroundIndicator 5
+int styleable Theme_panelMenuListTheme 4
+int styleable Theme_panelMenuListWidth 3
+int styleable Theme_popupMenuStyle 2
+int[] styleable View { 0x010100da, 0x7f010038, 0x7f010039 }
+int styleable View_android_focusable 0
+int styleable View_paddingEnd 2
+int styleable View_paddingStart 1
diff -urN Original_4.4.4_r1/packages/apps/TestApp/gen/com/test/BuildConfig.java AndroidSource/packages/apps/TestApp/gen/com/test/BuildConfig.java
--- Original_4.4.4_r1/packages/apps/TestApp/gen/com/test/BuildConfig.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/gen/com/test/BuildConfig.java	2015-12-07 15:11:01.000000000 +0900
@@ -0,0 +1,6 @@
+/** Automatically generated file. DO NOT MODIFY */
+package com.test;
+
+public final class BuildConfig {
+    public final static boolean DEBUG = true;
+}
\ No newline at end of file
diff -urN Original_4.4.4_r1/packages/apps/TestApp/gen/com/test/R.java AndroidSource/packages/apps/TestApp/gen/com/test/R.java
--- Original_4.4.4_r1/packages/apps/TestApp/gen/com/test/R.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/gen/com/test/R.java	2016-01-20 09:47:36.000000000 +0900
@@ -0,0 +1,138 @@
+/* AUTO-GENERATED FILE.  DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * aapt tool from the resource data it found.  It
+ * should not be modified by hand.
+ */
+
+package com.test;
+
+public final class R {
+    public static final class attr {
+    }
+    public static final class dimen {
+        /**  Default screen margins, per the Android Design guidelines. 
+
+         Example customization of dimensions originally defined in res/values/dimens.xml
+         (such as screen margins) for screens with more than 820dp of available width. This
+         would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively).
+    
+         */
+        public static final int activity_horizontal_margin=0x7f040000;
+        public static final int activity_vertical_margin=0x7f040001;
+    }
+    public static final class drawable {
+        public static final int ball=0x7f020000;
+        public static final int far=0x7f020001;
+        public static final int grass=0x7f020002;
+        public static final int hole=0x7f020003;
+        public static final int ic_launcher=0x7f020004;
+        public static final int img_compass=0x7f020005;
+        public static final int near=0x7f020006;
+    }
+    public static final class id {
+        public static final int TableLayout1=0x7f080002;
+        public static final int action_settings=0x7f08001f;
+        public static final int client_btn=0x7f08000e;
+        public static final int client_disconnect=0x7f080017;
+        public static final int distribute_txt=0x7f080000;
+        public static final int imageView1=0x7f08001a;
+        public static final int imageViewCompass=0x7f08001c;
+        public static final int info_tv=0x7f080006;
+        public static final int ip_et=0x7f080008;
+        public static final int ip_tv=0x7f080004;
+        public static final int location_test=0x7f080018;
+        public static final int parent=0x7f08001d;
+        public static final int recommendation_btn=0x7f080012;
+        public static final int sensor_btn=0x7f080011;
+        public static final int server_tg=0x7f08000b;
+        public static final int server_tv=0x7f08000a;
+        public static final int tableRow1=0x7f080003;
+        public static final int tableRow2=0x7f08000f;
+        public static final int tableRow3=0x7f080009;
+        public static final int tableRow4=0x7f08000c;
+        public static final int tableRow5=0x7f080005;
+        public static final int tableRow6=0x7f080007;
+        public static final int tableRow7=0x7f080013;
+        public static final int tableRow8=0x7f080015;
+        public static final int tableRow9=0x7f080016;
+        public static final int test_btn=0x7f080001;
+        public static final int test_btn2=0x7f08001e;
+        public static final int textView1=0x7f080019;
+        public static final int textView2=0x7f08000d;
+        public static final int touch_btn=0x7f080014;
+        public static final int tvHeading=0x7f08001b;
+        public static final int vibrate_btn=0x7f080010;
+    }
+    public static final class layout {
+        public static final int activity_distribute=0x7f030000;
+        public static final int activity_location=0x7f030001;
+        public static final int activity_main=0x7f030002;
+        public static final int activity_next_page=0x7f030003;
+        public static final int activity_proxi=0x7f030004;
+        public static final int activity_sensor=0x7f030005;
+        public static final int activity_touch=0x7f030006;
+    }
+    public static final class menu {
+        public static final int distribute=0x7f070000;
+        public static final int location=0x7f070001;
+        public static final int main=0x7f070002;
+        public static final int proxi=0x7f070003;
+        public static final int sensor=0x7f070004;
+        public static final int touch=0x7f070005;
+    }
+    public static final class string {
+        public static final int action_settings=0x7f050002;
+        public static final int app_name=0x7f050000;
+        public static final int client=0x7f050004;
+        public static final int compass=0x7f050011;
+        public static final int empty=0x7f05000a;
+        public static final int first_np_text=0x7f050010;
+        public static final int first_text=0x7f05000f;
+        public static final int hello_world=0x7f050001;
+        public static final int info=0x7f050005;
+        public static final int location_test=0x7f050017;
+        public static final int menu_settings=0x7f05000e;
+        public static final int recommendation=0x7f050006;
+        public static final int sensor=0x7f050008;
+        public static final int server=0x7f050003;
+        public static final int test=0x7f050013;
+        public static final int title_activity_distribute=0x7f050014;
+        public static final int title_activity_location=0x7f050015;
+        public static final int title_activity_next_page=0x7f05000d;
+        public static final int title_activity_proxi=0x7f050016;
+        public static final int title_activity_qwq=0x7f05000c;
+        public static final int title_activity_sensor=0x7f05000b;
+        public static final int title_activity_touch=0x7f050012;
+        public static final int touch=0x7f050009;
+        public static final int vibrate=0x7f050007;
+    }
+    public static final class style {
+        /** 
+        Base application theme, dependent on API level. This theme is replaced
+        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
+    
+
+            Theme customizations available in newer API levels can go in
+            res/values-vXX/styles.xml, while customizations related to
+            backward-compatibility can go here.
+        
+
+        Base application theme for API 11+. This theme completely replaces
+        AppBaseTheme from res/values/styles.xml on API 11+ devices.
+    
+ API 11 theme customizations can go here. 
+
+        Base application theme for API 14+. This theme completely replaces
+        AppBaseTheme from BOTH res/values/styles.xml and
+        res/values-v11/styles.xml on API 14+ devices.
+    
+ API 14 theme customizations can go here. 
+         */
+        public static final int AppBaseTheme=0x7f060000;
+        /**  Application theme. 
+ All customizations that are NOT specific to a particular API-level can go here. 
+         */
+        public static final int AppTheme=0x7f060001;
+    }
+}
Binary files Original_4.4.4_r1/packages/apps/TestApp/ic_launcher-web.png and AndroidSource/packages/apps/TestApp/ic_launcher-web.png differ
Binary files Original_4.4.4_r1/packages/apps/TestApp/libs/android-support-v4.jar and AndroidSource/packages/apps/TestApp/libs/android-support-v4.jar differ
diff -urN Original_4.4.4_r1/packages/apps/TestApp/lint.xml AndroidSource/packages/apps/TestApp/lint.xml
--- Original_4.4.4_r1/packages/apps/TestApp/lint.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/lint.xml	2015-01-16 11:27:44.000000000 +0900
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<lint>
+</lint>
\ No newline at end of file
diff -urN Original_4.4.4_r1/packages/apps/TestApp/proguard-project.txt AndroidSource/packages/apps/TestApp/proguard-project.txt
--- Original_4.4.4_r1/packages/apps/TestApp/proguard-project.txt	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/proguard-project.txt	2015-01-09 00:26:12.000000000 +0900
@@ -0,0 +1,20 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
diff -urN Original_4.4.4_r1/packages/apps/TestApp/project.properties AndroidSource/packages/apps/TestApp/project.properties
--- Original_4.4.4_r1/packages/apps/TestApp/project.properties	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/project.properties	2015-01-26 17:25:27.000000000 +0900
@@ -0,0 +1,15 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-19
+android.library.reference.1=../../../../workspace/appcompat_v7
Binary files Original_4.4.4_r1/packages/apps/TestApp/res/drawable-hdpi/ball.png and AndroidSource/packages/apps/TestApp/res/drawable-hdpi/ball.png differ
Binary files Original_4.4.4_r1/packages/apps/TestApp/res/drawable-hdpi/far.png and AndroidSource/packages/apps/TestApp/res/drawable-hdpi/far.png differ
Binary files Original_4.4.4_r1/packages/apps/TestApp/res/drawable-hdpi/grass.jpg and AndroidSource/packages/apps/TestApp/res/drawable-hdpi/grass.jpg differ
Binary files Original_4.4.4_r1/packages/apps/TestApp/res/drawable-hdpi/hole.png and AndroidSource/packages/apps/TestApp/res/drawable-hdpi/hole.png differ
Binary files Original_4.4.4_r1/packages/apps/TestApp/res/drawable-hdpi/ic_launcher.png and AndroidSource/packages/apps/TestApp/res/drawable-hdpi/ic_launcher.png differ
Binary files Original_4.4.4_r1/packages/apps/TestApp/res/drawable-hdpi/img_compass.jpg and AndroidSource/packages/apps/TestApp/res/drawable-hdpi/img_compass.jpg differ
Binary files Original_4.4.4_r1/packages/apps/TestApp/res/drawable-hdpi/near.png and AndroidSource/packages/apps/TestApp/res/drawable-hdpi/near.png differ
Binary files Original_4.4.4_r1/packages/apps/TestApp/res/drawable-ldpi/far.png and AndroidSource/packages/apps/TestApp/res/drawable-ldpi/far.png differ
Binary files Original_4.4.4_r1/packages/apps/TestApp/res/drawable-ldpi/near.png and AndroidSource/packages/apps/TestApp/res/drawable-ldpi/near.png differ
Binary files Original_4.4.4_r1/packages/apps/TestApp/res/drawable-mdpi/far.png and AndroidSource/packages/apps/TestApp/res/drawable-mdpi/far.png differ
Binary files Original_4.4.4_r1/packages/apps/TestApp/res/drawable-mdpi/ic_launcher.png and AndroidSource/packages/apps/TestApp/res/drawable-mdpi/ic_launcher.png differ
Binary files Original_4.4.4_r1/packages/apps/TestApp/res/drawable-mdpi/near.png and AndroidSource/packages/apps/TestApp/res/drawable-mdpi/near.png differ
Binary files Original_4.4.4_r1/packages/apps/TestApp/res/drawable-xhdpi/far.png and AndroidSource/packages/apps/TestApp/res/drawable-xhdpi/far.png differ
Binary files Original_4.4.4_r1/packages/apps/TestApp/res/drawable-xhdpi/ic_launcher.png and AndroidSource/packages/apps/TestApp/res/drawable-xhdpi/ic_launcher.png differ
Binary files Original_4.4.4_r1/packages/apps/TestApp/res/drawable-xhdpi/near.png and AndroidSource/packages/apps/TestApp/res/drawable-xhdpi/near.png differ
Binary files Original_4.4.4_r1/packages/apps/TestApp/res/drawable-xxhdpi/far.png and AndroidSource/packages/apps/TestApp/res/drawable-xxhdpi/far.png differ
Binary files Original_4.4.4_r1/packages/apps/TestApp/res/drawable-xxhdpi/ic_launcher.png and AndroidSource/packages/apps/TestApp/res/drawable-xxhdpi/ic_launcher.png differ
Binary files Original_4.4.4_r1/packages/apps/TestApp/res/drawable-xxhdpi/near.png and AndroidSource/packages/apps/TestApp/res/drawable-xxhdpi/near.png differ
diff -urN Original_4.4.4_r1/packages/apps/TestApp/res/layout/activity_dialog.xml AndroidSource/packages/apps/TestApp/res/layout/activity_dialog.xml
--- Original_4.4.4_r1/packages/apps/TestApp/res/layout/activity_dialog.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/res/layout/activity_dialog.xml	2016-06-22 10:45:00.000000000 +0900
@@ -0,0 +1,14 @@
+<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    tools:context="com.test.alert.RequestDialog" 
+    android:background="#00000000">
+
+    
+
+</TableLayout>
\ No newline at end of file
diff -urN Original_4.4.4_r1/packages/apps/TestApp/res/layout/activity_distribute.xml AndroidSource/packages/apps/TestApp/res/layout/activity_distribute.xml
--- Original_4.4.4_r1/packages/apps/TestApp/res/layout/activity_distribute.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/res/layout/activity_distribute.xml	2015-01-16 17:08:34.000000000 +0900
@@ -0,0 +1,17 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    tools:context="com.test.distribute.DistributeActivity" >
+
+    <TextView
+        android:id="@+id/distribute_txt"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/hello_world" />
+
+</RelativeLayout>
diff -urN Original_4.4.4_r1/packages/apps/TestApp/res/layout/activity_location.xml AndroidSource/packages/apps/TestApp/res/layout/activity_location.xml
--- Original_4.4.4_r1/packages/apps/TestApp/res/layout/activity_location.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/res/layout/activity_location.xml	2015-08-03 15:23:58.000000000 +0900
@@ -0,0 +1,19 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    tools:context="com.test.location.LocationActivity" >
+
+    <Button
+        android:id="@+id/test_btn"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentTop="true"
+        android:text="@string/test" />
+
+</RelativeLayout>
diff -urN Original_4.4.4_r1/packages/apps/TestApp/res/layout/activity_main.xml AndroidSource/packages/apps/TestApp/res/layout/activity_main.xml
--- Original_4.4.4_r1/packages/apps/TestApp/res/layout/activity_main.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/res/layout/activity_main.xml	2015-11-28 05:20:23.000000000 +0900
@@ -0,0 +1,166 @@
+<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/TableLayout1"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingBottom="@dimen/activity_vertical_margin"
+    android:paddingLeft="@dimen/activity_horizontal_margin"
+    android:paddingRight="@dimen/activity_horizontal_margin"
+    android:paddingTop="@dimen/activity_vertical_margin"
+    tools:context="com.test.MainActivity" >
+
+    <TableRow
+        android:id="@+id/tableRow1"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content" >
+
+        <TextView
+            android:id="@+id/ip_tv"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/info" />
+    </TableRow>
+
+    <TableRow
+        android:id="@+id/tableRow5"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:paddingTop="10dp" >
+
+        <TextView
+            android:id="@+id/info_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/info" />
+    </TableRow>
+
+    <TableRow
+        android:id="@+id/tableRow6"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content" >
+
+        <EditText
+            android:id="@+id/ip_et"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:ems="10" >
+
+            <requestFocus />
+        </EditText>
+    </TableRow>
+
+    <TableRow
+        android:id="@+id/tableRow3"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:paddingTop="30dp" >
+
+        <TextView
+            android:id="@+id/server_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/server" />
+
+        <ToggleButton
+            android:id="@+id/server_tg"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textOff="Off"
+            android:textOn="On" />
+    </TableRow>
+
+    <TableRow
+        android:id="@+id/tableRow4"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:paddingTop="10dp" >
+
+        <TextView
+            android:id="@+id/textView2"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/client" />
+
+        <Button
+            android:id="@+id/client_btn"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/client" />
+    </TableRow>
+
+    <Space
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="fill_vertical" />
+
+    <TableRow
+        android:id="@+id/tableRow2"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:paddingTop="30dp" >
+
+        <Button
+            android:id="@+id/vibrate_btn"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_weight="20"
+            android:text="@string/vibrate" />
+
+        <Button
+            android:id="@+id/sensor_btn"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:text="@string/sensor" />
+
+        <Button
+            android:id="@+id/recommendation_btn"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/recommendation" />
+    </TableRow>
+
+    <TableRow
+        android:id="@+id/tableRow7"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content" >
+
+        <Button
+            android:id="@+id/touch_btn"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/touch" />
+    </TableRow>
+
+    <TableRow
+        android:id="@+id/tableRow8"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content" >
+
+        <Button
+            android:id="@+id/test_btn"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/test" />
+    </TableRow>
+
+    <TableRow
+        android:id="@+id/tableRow9"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content" >
+
+        <Button
+            android:id="@+id/client_disconnect"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/client" />
+        
+        <Button
+            android:id="@+id/location_test"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/location_test" />
+    </TableRow>
+
+
+</TableLayout>
\ No newline at end of file
diff -urN Original_4.4.4_r1/packages/apps/TestApp/res/layout/activity_next_page.xml AndroidSource/packages/apps/TestApp/res/layout/activity_next_page.xml
--- Original_4.4.4_r1/packages/apps/TestApp/res/layout/activity_next_page.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/res/layout/activity_next_page.xml	2015-01-09 00:26:12.000000000 +0900
@@ -0,0 +1,18 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context=".sensor.NextPage" >
+ 
+    <TextView
+        android:id="@+id/textView1"
+        android:textSize="18sp"
+        android:textColor="#4169E1"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentTop="true"
+        android:layout_centerHorizontal="true"
+        android:layout_marginTop="80dp"
+        android:text="@string/first_np_text" />
+ 
+</RelativeLayout>
\ No newline at end of file
diff -urN Original_4.4.4_r1/packages/apps/TestApp/res/layout/activity_proxi.xml AndroidSource/packages/apps/TestApp/res/layout/activity_proxi.xml
--- Original_4.4.4_r1/packages/apps/TestApp/res/layout/activity_proxi.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/res/layout/activity_proxi.xml	2015-10-26 14:43:13.000000000 +0900
@@ -0,0 +1,13 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+xmlns:tools="http://schemas.android.com/tools"
+android:layout_width="fill_parent"
+android:layout_height="fill_parent"
+tools:context=".ProxiActivity" >
+
+<ImageView
+android:id="@+id/imageView1"
+android:layout_width="wrap_content"
+android:layout_height="wrap_content"
+android:src="@drawable/far" />
+
+</RelativeLayout>
\ No newline at end of file
diff -urN Original_4.4.4_r1/packages/apps/TestApp/res/layout/activity_sensor.xml AndroidSource/packages/apps/TestApp/res/layout/activity_sensor.xml
--- Original_4.4.4_r1/packages/apps/TestApp/res/layout/activity_sensor.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/res/layout/activity_sensor.xml	2015-01-09 00:26:12.000000000 +0900
@@ -0,0 +1,31 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="#fff" >
+
+    <TextView
+        android:id="@+id/tvHeading"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerHorizontal="true"
+        android:layout_marginBottom="40dp"
+        android:layout_marginTop="20dp"
+        android:text="@string/compass" />
+
+    <ImageView
+        android:id="@+id/imageViewCompass"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@+id/tvHeading"
+        android:layout_centerHorizontal="true"
+        android:src="@drawable/img_compass" />
+
+    <Button
+        android:id="@+id/test_btn"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentTop="true"
+        android:text="@string/test" />
+
+</RelativeLayout>
\ No newline at end of file
diff -urN Original_4.4.4_r1/packages/apps/TestApp/res/layout/activity_touch.xml AndroidSource/packages/apps/TestApp/res/layout/activity_touch.xml
--- Original_4.4.4_r1/packages/apps/TestApp/res/layout/activity_touch.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/res/layout/activity_touch.xml	2015-01-09 00:26:12.000000000 +0900
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:orientation="vertical"
+    android:id="@+id/parent" >
+
+    <Button
+        android:id="@+id/test_btn"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/hello_world" />
+
+    <Button
+        android:id="@+id/test_btn2"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/empty" />
+   
+</LinearLayout>
\ No newline at end of file
diff -urN Original_4.4.4_r1/packages/apps/TestApp/res/menu/distribute.xml AndroidSource/packages/apps/TestApp/res/menu/distribute.xml
--- Original_4.4.4_r1/packages/apps/TestApp/res/menu/distribute.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/res/menu/distribute.xml	2015-01-16 17:06:34.000000000 +0900
@@ -0,0 +1,11 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:context="com.test.DistributeActivity" >
+
+    <item
+        android:id="@+id/action_settings"
+        android:orderInCategory="100"
+        android:showAsAction="never"
+        android:title="@string/action_settings"/>
+
+</menu>
diff -urN Original_4.4.4_r1/packages/apps/TestApp/res/menu/location.xml AndroidSource/packages/apps/TestApp/res/menu/location.xml
--- Original_4.4.4_r1/packages/apps/TestApp/res/menu/location.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/res/menu/location.xml	2015-08-03 13:38:44.000000000 +0900
@@ -0,0 +1,11 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:context="com.test.LocationActivity" >
+
+    <item
+        android:id="@+id/action_settings"
+        android:orderInCategory="100"
+        android:showAsAction="never"
+        android:title="@string/action_settings"/>
+
+</menu>
diff -urN Original_4.4.4_r1/packages/apps/TestApp/res/menu/main.xml AndroidSource/packages/apps/TestApp/res/menu/main.xml
--- Original_4.4.4_r1/packages/apps/TestApp/res/menu/main.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/res/menu/main.xml	2015-01-09 00:26:12.000000000 +0900
@@ -0,0 +1,11 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:context="com.test.MainActivity" >
+
+    <item
+        android:id="@+id/action_settings"
+        android:orderInCategory="100"
+        android:showAsAction="never"
+        android:title="@string/action_settings"/>
+
+</menu>
diff -urN Original_4.4.4_r1/packages/apps/TestApp/res/menu/proxi.xml AndroidSource/packages/apps/TestApp/res/menu/proxi.xml
--- Original_4.4.4_r1/packages/apps/TestApp/res/menu/proxi.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/res/menu/proxi.xml	2015-10-26 14:40:19.000000000 +0900
@@ -0,0 +1,11 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:context="com.test.ProxiActivity" >
+
+    <item
+        android:id="@+id/action_settings"
+        android:orderInCategory="100"
+        android:showAsAction="never"
+        android:title="@string/action_settings"/>
+
+</menu>
diff -urN Original_4.4.4_r1/packages/apps/TestApp/res/menu/sensor.xml AndroidSource/packages/apps/TestApp/res/menu/sensor.xml
--- Original_4.4.4_r1/packages/apps/TestApp/res/menu/sensor.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/res/menu/sensor.xml	2015-01-09 00:26:12.000000000 +0900
@@ -0,0 +1,11 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:context="com.test.SensorActivity" >
+
+    <item
+        android:id="@+id/action_settings"
+        android:orderInCategory="100"
+        android:showAsAction="never"
+        android:title="@string/action_settings"/>
+
+</menu>
diff -urN Original_4.4.4_r1/packages/apps/TestApp/res/menu/touch.xml AndroidSource/packages/apps/TestApp/res/menu/touch.xml
--- Original_4.4.4_r1/packages/apps/TestApp/res/menu/touch.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/res/menu/touch.xml	2015-01-09 00:26:12.000000000 +0900
@@ -0,0 +1,11 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:context="com.test.TouchActivity" >
+
+    <item
+        android:id="@+id/action_settings"
+        android:orderInCategory="100"
+        android:showAsAction="never"
+        android:title="@string/action_settings"/>
+
+</menu>
diff -urN Original_4.4.4_r1/packages/apps/TestApp/res/values/dimens.xml AndroidSource/packages/apps/TestApp/res/values/dimens.xml
--- Original_4.4.4_r1/packages/apps/TestApp/res/values/dimens.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/res/values/dimens.xml	2015-01-09 00:26:12.000000000 +0900
@@ -0,0 +1,7 @@
+<resources>
+
+    <!-- Default screen margins, per the Android Design guidelines. -->
+    <dimen name="activity_horizontal_margin">16dp</dimen>
+    <dimen name="activity_vertical_margin">16dp</dimen>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/TestApp/res/values/strings.xml AndroidSource/packages/apps/TestApp/res/values/strings.xml
--- Original_4.4.4_r1/packages/apps/TestApp/res/values/strings.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/res/values/strings.xml	2015-11-28 05:20:07.000000000 +0900
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <string name="app_name">TestApp</string>
+    <string name="hello_world">Hello world!</string>
+    <string name="action_settings">Settings</string>
+    <string name="server">server</string>
+    <string name="client">client</string>
+    <string name="info">This in info textview</string>
+    <string name="recommendation">Reco</string>
+    <string name="vibrate">Vibrate</string>
+    <string name="sensor">Sensor</string>
+    <string name="touch">Touch</string>
+    <string name="empty">empty</string>
+    <string name="title_activity_sensor">SensorActivity</string>
+    <string name="title_activity_qwq">Qwq</string>
+    <string name="title_activity_next_page">NextPage</string>
+    <string name="menu_settings">Settings</string>
+    <string name="first_text">Shake to Open Next Activity</string>
+    <string name="first_np_text">WelCome to Next Page Activity..</string>
+    <string name="compass">Heading: 0.0</string>
+    <string name="title_activity_touch">TouchActivity</string>
+    <string name="test">Test</string>
+    <string name="title_activity_distribute">DistributeActivity</string>
+    <string name="title_activity_location">LocationActivity</string>
+    <string name="title_activity_proxi">ProxiActivity</string>
+    <string name="location_test">LocTest</string>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/TestApp/res/values/styles.xml AndroidSource/packages/apps/TestApp/res/values/styles.xml
--- Original_4.4.4_r1/packages/apps/TestApp/res/values/styles.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/res/values/styles.xml	2015-01-09 00:26:12.000000000 +0900
@@ -0,0 +1,20 @@
+<resources>
+
+    <!--
+        Base application theme, dependent on API level. This theme is replaced
+        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Light">
+        <!--
+            Theme customizations available in newer API levels can go in
+            res/values-vXX/styles.xml, while customizations related to
+            backward-compatibility can go here.
+        -->
+    </style>
+
+    <!-- Application theme. -->
+    <style name="AppTheme" parent="AppBaseTheme">
+        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
+    </style>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/TestApp/res/values-v11/styles.xml AndroidSource/packages/apps/TestApp/res/values-v11/styles.xml
--- Original_4.4.4_r1/packages/apps/TestApp/res/values-v11/styles.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/res/values-v11/styles.xml	2015-01-09 00:26:12.000000000 +0900
@@ -0,0 +1,11 @@
+<resources>
+
+    <!--
+        Base application theme for API 11+. This theme completely replaces
+        AppBaseTheme from res/values/styles.xml on API 11+ devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
+        <!-- API 11 theme customizations can go here. -->
+    </style>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/TestApp/res/values-v14/styles.xml AndroidSource/packages/apps/TestApp/res/values-v14/styles.xml
--- Original_4.4.4_r1/packages/apps/TestApp/res/values-v14/styles.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/res/values-v14/styles.xml	2015-01-09 00:26:11.000000000 +0900
@@ -0,0 +1,12 @@
+<resources>
+
+    <!--
+        Base application theme for API 14+. This theme completely replaces
+        AppBaseTheme from BOTH res/values/styles.xml and
+        res/values-v11/styles.xml on API 14+ devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
+        <!-- API 14 theme customizations can go here. -->
+    </style>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/TestApp/res/values-w820dp/dimens.xml AndroidSource/packages/apps/TestApp/res/values-w820dp/dimens.xml
--- Original_4.4.4_r1/packages/apps/TestApp/res/values-w820dp/dimens.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/res/values-w820dp/dimens.xml	2015-01-09 00:26:12.000000000 +0900
@@ -0,0 +1,10 @@
+<resources>
+
+    <!--
+         Example customization of dimensions originally defined in res/values/dimens.xml
+         (such as screen margins) for screens with more than 820dp of available width. This
+         would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively).
+    -->
+    <dimen name="activity_horizontal_margin">64dp</dimen>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/TestApp/src/com/test/alert/RequestDialog.java AndroidSource/packages/apps/TestApp/src/com/test/alert/RequestDialog.java
--- Original_4.4.4_r1/packages/apps/TestApp/src/com/test/alert/RequestDialog.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/src/com/test/alert/RequestDialog.java	2016-06-23 23:00:30.000000000 +0900
@@ -0,0 +1,214 @@
+package com.test.alert;
+
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.util.Enumeration;
+
+import com.test.R;
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.KeyguardManager;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
+import android.content.DialogInterface.OnMultiChoiceClickListener;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.PowerManager;
+import android.os.PowerManager.WakeLock;
+import android.service.devicemanager.Device;
+import android.service.devicemanager.DeviceManager;
+import android.text.InputType;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.WindowManager;
+
+
+public class RequestDialog extends Activity
+{
+	private Context mContext;
+	
+	@Override
+	protected void onCreate(Bundle savedInstanceState)
+	{
+		mContext = getApplicationContext();
+		
+		super.onCreate(savedInstanceState);
+		setContentView(R.layout.activity_dialog);
+		
+		getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+		
+		showAlertDialog(getIntent().getStringExtra("deviceName"), getIntent().getIntArrayExtra("resources"));
+	}
+	
+	
+	
+	private void showAlertDialog(String deviceName, int[] resources) 
+	{
+		final DeviceManager dm = (DeviceManager)getSystemService(Context.DEVICE_MANAGEMENT_SERVICE);
+		
+        KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
+        KeyguardManager.KeyguardLock kl = km.newKeyguardLock("MyKeyguardLock");
+            kl.disableKeyguard();
+
+        PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
+        WakeLock wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK| PowerManager.ACQUIRE_CAUSES_WAKEUP
+                | PowerManager.ON_AFTER_RELEASE, "MyWakeLock");
+        wakeLock.acquire();
+
+        final String[] resourceNames = new String[resources.length];
+        final boolean[] isAllowed = new boolean[resources.length];
+        final int[] allowedResources = new int[resources.length];
+        
+        final String deviceName2 = deviceName;
+        final int[] resources2 = resources;
+        
+        int j = 0;
+        
+        for(int i : resources)
+        	resourceNames[j++] = i + ": " + Device.ResourceNames[i];
+        
+        AlertDialog.Builder builder = new AlertDialog.Builder(this);
+        builder.setTitle(deviceName);
+        //builder.setIcon(R.drawable.icon);
+        //builder.setMessage("Content");
+        builder.setCancelable(false);
+        
+        builder.setMultiChoiceItems(resourceNames, isAllowed, new OnMultiChoiceClickListener() {
+			
+			@Override
+			public void onClick(DialogInterface dialog, int which, boolean isChecked) {
+				// TODO Auto-generated method stub
+				
+			}
+		});
+        
+        builder.setPositiveButton("Allow", new OnClickListener() {
+			
+			@Override
+			public void onClick(DialogInterface dialog, int which) {
+				// TODO Auto-generated method stub
+				Log.d("REQUESTDIALOG", "name: " + resourceNames.toString() + "\nisAllowed" + isAllowed.toString());
+				for(int i=0; i<resources2.length; i++)
+				{
+					if(isAllowed[i])
+						allowedResources[i] = resources2[i];
+				}
+				dm.allowResources(deviceName2, allowedResources);
+				
+				dialog.dismiss();
+				CloseActivity();
+				/*android.os.Process.killProcess(android.os.Process.myPid());
+				System.exit(1);*/
+			}
+		});
+       
+        builder.setNegativeButton("Decline", new OnClickListener() {
+            public void onClick(DialogInterface dialog, int which) {
+            	dm.allowResources(deviceName2, null);
+            	
+                dialog.dismiss();
+                CloseActivity();
+                /*android.os.Process.killProcess(android.os.Process.myPid());
+				System.exit(1);*/
+            }
+        });
+        AlertDialog alert = builder.create();
+        alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
+        alert.show();
+            
+            
+        /*final CharSequence[] items = { getString(R.string.test1), getString(R.string.tes2), getString(R.string.test3), getString(R.string.cancel) };
+        AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
+        builder.setTitle("Title");
+        builder.setItems(items, new DialogInterface.OnClickListener() {
+            @Override
+            public void onClick(DialogInterface dialog, int item) {
+                if (items[item].equals(getString(R.string.test1))) {
+                    dialog.dismiss();
+
+                } else if (items[item].equals(getString(R.string.test2))) {
+                    dialog.dismiss();
+
+                } else if (items[item].equals(getString(R.string.test3))) {
+
+                }else if (items[item].equals(getString(R.string.cancel))) {
+                    dialog.dismiss();
+
+
+                }
+            }
+        });
+
+        alert = builder.create();
+        alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
+        alert.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON|
+                WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD|
+                WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|
+                WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
+
+
+        alert.show();
+
+        alert.setOnDismissListener(new OnDismissListener() {
+
+            @Override
+            public void onDismiss(DialogInterface arg0) {
+
+            }
+        });
+
+
+        alert.setOnCancelListener(new OnCancelListener() {
+
+            @Override
+            public void onCancel(DialogInterface dialog) {
+
+            }
+        });*/
+
+
+    }
+	
+	private void CloseActivity()
+    {
+        this.finish();
+    }
+	
+	@Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) 
+	{
+		Log.d("TEST", event.getCharacters());
+		if ((keyCode == KeyEvent.KEYCODE_BACK)) 
+		{
+			return false;
+		}
+		return super.onKeyDown(keyCode, event);
+	}
+	
+	@Override
+	public boolean onCreateOptionsMenu(Menu menu)
+	{
+		// Inflate the menu; this adds items to the action bar if it is present.
+		getMenuInflater().inflate(R.menu.main, menu);
+		return true;
+	}
+
+	@Override
+	public boolean onOptionsItemSelected(MenuItem item)
+	{
+		// Handle action bar item clicks here. The action bar will
+		// automatically handle clicks on the Home/Up button, so long
+		// as you specify a parent activity in AndroidManifest.xml.
+		int id = item.getItemId();
+		if (id == R.id.action_settings)
+		{
+			return true;
+		}
+		return super.onOptionsItemSelected(item);
+	}
+}
diff -urN Original_4.4.4_r1/packages/apps/TestApp/src/com/test/distribute/DistributeActivity.java AndroidSource/packages/apps/TestApp/src/com/test/distribute/DistributeActivity.java
--- Original_4.4.4_r1/packages/apps/TestApp/src/com/test/distribute/DistributeActivity.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/src/com/test/distribute/DistributeActivity.java	2015-01-16 17:15:38.000000000 +0900
@@ -0,0 +1,46 @@
+package com.test.distribute;
+
+import com.test.R;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.service.distribute.Distributor;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.widget.TextView;
+
+public class DistributeActivity extends Activity {
+
+	TextView tv;
+	Distributor distributor;
+	
+	@Override
+	protected void onCreate(Bundle savedInstanceState) {
+		super.onCreate(savedInstanceState);
+		setContentView(R.layout.activity_distribute);
+		
+		tv = (TextView) findViewById(R.id.distribute_txt);
+		distributor = (Distributor)getSystemService(DISTRIBUTED_COMPUTING_SERVICE);
+		
+		tv.setText(distributor.sum(10, 20));
+	}
+
+	@Override
+	public boolean onCreateOptionsMenu(Menu menu) {
+		// Inflate the menu; this adds items to the action bar if it is present.
+		getMenuInflater().inflate(R.menu.distribute, menu);
+		return true;
+	}
+
+	@Override
+	public boolean onOptionsItemSelected(MenuItem item) {
+		// Handle action bar item clicks here. The action bar will
+		// automatically handle clicks on the Home/Up button, so long
+		// as you specify a parent activity in AndroidManifest.xml.
+		int id = item.getItemId();
+		if (id == R.id.action_settings) {
+			return true;
+		}
+		return super.onOptionsItemSelected(item);
+	}
+}
diff -urN Original_4.4.4_r1/packages/apps/TestApp/src/com/test/location/LocationActivity.java AndroidSource/packages/apps/TestApp/src/com/test/location/LocationActivity.java
--- Original_4.4.4_r1/packages/apps/TestApp/src/com/test/location/LocationActivity.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/src/com/test/location/LocationActivity.java	2016-06-22 09:47:58.000000000 +0900
@@ -0,0 +1,98 @@
+package com.test.location;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.service.remote.RemoteServiceManager;
+import android.util.Log;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.Toast;
+
+import com.test.R;
+
+public class LocationActivity extends Activity implements LocationListener {
+	 
+		private LocationManager locationManager;
+		private RemoteServiceManager mRemoteManager;
+	 
+		@Override
+		protected void onCreate(Bundle savedInstanceState) {
+	 
+			super.onCreate(savedInstanceState);
+			setContentView(R.layout.activity_location);
+	 
+			locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
+	 
+			locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
+					0, 0, this);
+			locationManager.requestLocationUpdates(LocationManager.REMOTE_PROVIDER,
+					0, 0, this);
+			
+			mRemoteManager = (RemoteServiceManager) getSystemService(Context.REMOTE_SERVICE);
+	        Button test_btn = (Button) findViewById(R.id.test_btn);
+	        test_btn.setOnClickListener(new OnClickListener()
+			{
+				
+				@Override
+				public void onClick(View v)
+				{
+					mRemoteManager.testLocation();
+				}
+			});
+	 
+		}
+	 
+		@Override
+		public void onLocationChanged(Location location) {
+	 
+			String msg = location.getProvider() + "\t" + location.getLatitude() + "," + location.getLongitude()
+					+ "\t" + System.currentTimeMillis();
+			
+			int sourceDevice = 0;
+			
+			if(location.getExtras() != null)
+				sourceDevice = location.getExtras().getInt("SourceDevice");
+			
+			/*String msg = "Provider: " + location.getProvider() 
+					+ "\nNew Latitude: " + location.getLatitude()
+					+ "\nNew Longitude: " + location.getLongitude()
+					+ "\nSourceDevice: " + sourceDevice
+					+ "\nTime: " + System.currentTimeMillis();*/
+			
+			
+	 
+			//Toast.makeText(getBaseContext(), msg, Toast.LENGTH_LONG).show();
+			Log.d("APP", msg);
+		}
+	 
+		@Override
+		public void onProviderDisabled(String provider) {
+	 
+			/*Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
+			startActivity(intent);
+			Toast.makeText(getBaseContext(), "Gps is turned off!! ",
+					Toast.LENGTH_SHORT).show();*/
+		}
+	 
+		@Override
+		public void onProviderEnabled(String provider) {
+	 
+			Toast.makeText(getBaseContext(), "Gps is turned on!! ",
+					Toast.LENGTH_SHORT).show();
+		}
+	 
+		@Override
+		public void onStatusChanged(String provider, int status, Bundle extras) {
+			// TODO Auto-generated method stub
+	 
+		}
+	 
+	}
+
diff -urN Original_4.4.4_r1/packages/apps/TestApp/src/com/test/MainActivity.java AndroidSource/packages/apps/TestApp/src/com/test/MainActivity.java
--- Original_4.4.4_r1/packages/apps/TestApp/src/com/test/MainActivity.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/src/com/test/MainActivity.java	2016-09-26 16:38:09.693426316 +0900
@@ -0,0 +1,347 @@
+package com.test;
+
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.util.ArrayList;
+import java.util.Enumeration;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.os.SystemVibrator;
+import android.os.Vibrator;
+import android.provider.Settings;
+import android.provider.Settings.SettingNotFoundException;
+import android.service.collaboroid.CollaboRoidManager;
+import android.service.devicemanager.Device;
+import android.service.devicemanager.DeviceManager;
+import android.service.distribute.Distributor;
+import android.service.remote.IRemoteService;
+import android.service.remote.RemoteServiceManager;
+import android.text.InputType;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.Toast;
+import android.widget.ToggleButton;
+import android.net.wifi.*;
+
+
+import com.google.android.collect.Lists;
+import com.test.location.LocationActivity;
+import com.test.recommendation.RecommendationTest;
+import com.test.sensor.ProxiActivity;
+import com.test.sensor.SensorActivity;
+import com.test.touch.TouchActivity;
+
+public class MainActivity extends Activity
+{
+	private Context mContext;
+	
+	RemoteServiceManager rrm;
+	Distributor dis;
+	DeviceManager dm;
+	
+	TextView ip_tv;
+	TextView info_tv;
+	
+	EditText ip_et;
+	
+	ToggleButton server_tg;
+	Button client_btn;
+	Button disconnect_btn;
+	Button location_test_btn;
+//	ToggleButton client_tg;
+	
+	@Override
+	protected void onCreate(Bundle savedInstanceState)
+	{
+		mContext = getApplicationContext();
+		
+		super.onCreate(savedInstanceState);
+		setContentView(R.layout.activity_main);
+		Log.d("ProxiActivity", "product: " + android.os.Build.PRODUCT);
+		Log.d("ProxiActivity", "product: " + android.os.Build.PRODUCT);
+		getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+		
+		rrm = (RemoteServiceManager)getSystemService(Context.REMOTE_SERVICE);
+		dis = (Distributor)getSystemService(Context.DISTRIBUTED_COMPUTING_SERVICE);
+		
+		findViewById(R.id.recommendation_btn).setOnClickListener(mClickListener);
+		findViewById(R.id.vibrate_btn).setOnClickListener(mClickListener);
+		findViewById(R.id.sensor_btn).setOnClickListener(mClickListener);
+		findViewById(R.id.touch_btn).setOnClickListener(mClickListener);
+		findViewById(R.id.test_btn).setOnClickListener(mClickListener);
+		
+		ip_tv = (TextView) findViewById(R.id.ip_tv);
+		ip_tv.setText(getIpAddress());
+		
+		
+		//////////////////////////////////////////
+		
+		info_tv = (TextView) findViewById(R.id.info_tv);
+		//info_tv.setText(getIpAddress());
+		
+		ip_et = (EditText) findViewById(R.id.ip_et);
+		ip_et.setText("192.168.0.");
+		ip_et.requestFocus();
+//		ip_et.setInputType(InputType.TYPE_CLASS_NUMBER);
+		
+		server_tg = (ToggleButton)findViewById(R.id.server_tg);
+		server_tg.setOnClickListener(mClickListener);
+		
+//		if(Settings.Global.getInt(getContentResolver(), Settings.Global.REMOTE_REQUEST_SERVER_ON, 0) > 0)
+//			server_tg.setChecked(true);
+//		else
+//			server_tg.setChecked(false);
+		
+		/////////////////////////////////////////
+		
+		location_test_btn = (Button)findViewById(R.id.location_test);
+		location_test_btn.setOnClickListener(new OnClickListener() {
+            
+            @Override
+            public void onClick(View v) {
+                // TODO Auto-generated method stub
+                for(int a=0;a<3;a++){
+                    rrm.testLocation();
+                    try {
+                        Thread.sleep(10000);
+                    } catch (InterruptedException e) {
+                        // TODO Auto-generated catch block
+                        e.printStackTrace();
+                    }
+                }
+            }
+        });
+		
+		
+		client_btn = (Button)findViewById(R.id.client_btn);
+		client_btn.setOnClickListener(new OnClickListener() {
+            
+		    @Override
+		    public void onClick(View v) {
+		        // TODO Auto-generated method stub
+		        rrm.connectToServer(ip_et.getText().toString());
+		        setRemoteRequestClientOn(true);
+		        Toast.makeText(mContext, "connect!", Toast.LENGTH_SHORT).show();
+		        
+		        ArrayList<Device> list_device = new ArrayList<Device>();
+		        Device d = new Device(ip_et.getText().toString(), "30", "aa", 1, 1);
+//		        d.setAllowedResources(new int[]{1,1,1,1,1,1,1});
+		        d.setAskedResources(new int[]{1,1,1,1,1,1,1});
+		        list_device.add(d);
+		        
+		        
+		        
+		        IRemoteService remoteService = IRemoteService.Stub.asInterface(ServiceManager.getService(Context.REMOTE_SERVICE));
+		        try {
+		            
+		            remoteService.sendResourceRequests(list_device);
+		            
+		            
+		            Log.d("TESTAPP", Settings.Global.getInt(mContext.getContentResolver(), "REMOTE_REQUEST_CLIENT_ON")+"");
+		            Log.d("TESTAPP", Settings.Global.getInt(mContext.getContentResolver(), "REMOTE_REQUEST_CLIENT_ON")+"");
+		            Log.d("TESTAPP", Settings.Global.getInt(mContext.getContentResolver(), "REMOTE_REQUEST_CLIENT_ON")+"");
+		        } catch (SettingNotFoundException e) {
+		            // TODO Auto-generated catch block
+		            e.printStackTrace();
+		        } catch (RemoteException re){
+		            re.printStackTrace();
+		        }
+		    }
+        });
+        
+		
+		disconnect_btn = (Button)findViewById(R.id.client_disconnect);
+		disconnect_btn.setOnClickListener(new OnClickListener() {
+            
+            @Override
+            public void onClick(View v) {
+                // TODO Auto-generated method stub
+//                rrm.disconnectToServer();
+                rrm.printServerIPs();
+                setRemoteRequestClientOn(false);
+                Toast.makeText(mContext, "disconnect!", Toast.LENGTH_SHORT).show();
+            }
+        });
+//		client_tg = (ToggleButton)findViewById(R.id.client_tg);
+//		client_tg.setOnClickListener(mClickListener);
+//		
+//		if(Settings.Global.getInt(getContentResolver(), Settings.Global.REMOTE_REQUEST_CLIENT_ON, 0) > 0)
+//			client_tg.setChecked(true);
+//		else
+//			client_tg.setChecked(false);
+	}
+	
+	Button.OnClickListener mClickListener = new View.OnClickListener()
+	{
+		public void onClick(View v)
+		{
+			switch (v.getId())
+			{
+				case R.id.recommendation_btn:
+					/*runOnUiThread(new Runnable()
+					{
+						@Override
+						public void run()
+						{
+							info_tv.setText(new RecommendationTest(
+									mContext).getDevice());
+						}
+					});*/
+					Intent i3 = new Intent(mContext, LocationActivity.class);
+					startActivity(i3);
+					break;
+				case R.id.vibrate_btn:
+					//new VibrateTest(getApplicationContext()).vibrate();
+				    
+				    Log.d("VibLatency", "test Vibrate");
+					vibrate(200);
+					
+					
+//					rrm.requestMotionEvents();
+					
+//				    SystemVibrator sv = new SystemVibrator();
+//				    sv.vibrate(100);
+				    
+					break;
+				case R.id.server_tg:
+				if(server_tg.isChecked())
+				{
+					//rrm.setEnabled(true);
+					rrm.startServer();
+					setRemoteRequestServerOn(true);
+					Toast.makeText(mContext, "startServer!", Toast.LENGTH_SHORT).show();
+					
+					//dis.startTaskExecutor();
+				}
+				else
+				{	
+					//rrm.setEnabled(false);
+					rrm.stopServer();
+					setRemoteRequestServerOn(false);
+					Toast.makeText(mContext, "stopServer!", Toast.LENGTH_SHORT).show();
+				}
+					break;
+//				case R.id.client_tg:
+//				if(client_tg.isChecked())
+//				{
+//					//rrm.setEnabled(true);
+//					rrm.connectToServer(ip_et.getText().toString());
+//					setRemoteRequestClientOn(true);
+//					Toast.makeText(mContext, "connect!", Toast.LENGTH_SHORT).show();
+//					
+//					//dis.startJobManager(ip_et.getText().toString());
+//				}
+//				else
+//				{	
+//					//rrm.setEnabled(false);
+//					rrm.disconnectToServer();
+//					setRemoteRequestClientOn(false);
+//					Toast.makeText(mContext, "disconnect!", Toast.LENGTH_SHORT).show();
+//				}
+//					break;
+				case R.id.sensor_btn:
+					Toast.makeText(mContext, "?!!", Toast.LENGTH_SHORT).show();
+					Intent i = new Intent(mContext, SensorActivity.class);
+					startActivity(i);
+					break;
+				case R.id.touch_btn:
+					Toast.makeText(mContext, "?!!", Toast.LENGTH_SHORT).show();
+					Intent i2 = new Intent(mContext, TouchActivity.class);
+					startActivity(i2);
+					break;
+				case R.id.test_btn:
+					//rrm.testOperation();
+					Intent i4 = new Intent(mContext, ProxiActivity.class);
+					startActivity(i4);
+					break;					
+			}
+		}
+	};
+	
+	private String getIpAddress() {
+ 		String ip = "";
+ 		try {
+ 			Enumeration<NetworkInterface> enumNetworkInterfaces = NetworkInterface
+ 					.getNetworkInterfaces();
+ 			while (enumNetworkInterfaces.hasMoreElements()) {
+
+ 				NetworkInterface networkInterface = enumNetworkInterfaces
+ 						.nextElement();
+ 				Enumeration<InetAddress> enumInetAddress = networkInterface
+ 						.getInetAddresses();
+
+ 				while (enumInetAddress.hasMoreElements()) {
+ 					InetAddress inetAddress = enumInetAddress.nextElement();
+
+ 					if (inetAddress.isSiteLocalAddress()) {
+ 						ip += "dSiteLocalAddress: "
+ 								+ inetAddress.getHostAddress().toString() + "\n";
+ 					}
+ 				}
+ 			}
+ 			ip += "nothing?";
+ 		} catch (SocketException e) {
+// 		   Socket socket = Socket("http://www.google.com", 80);
+ 		    
+ 		   
+ 		   
+ 		   return ip;
+// 		   e.printStackTrace();
+ 			
+ 		}
+ 		return ip;
+ 	}
+	
+	
+	
+	private void vibrate(long m)
+	{
+		Vibrator vibrator = (Vibrator)mContext.getSystemService(Context.VIBRATOR_SERVICE);
+		vibrator.vibrate(m);
+	}
+ 
+	private void setRemoteRequestServerOn(boolean enabling)
+	{
+		Settings.Global.putInt(mContext.getContentResolver(), "REMOTE_REQUEST_SERVER_ON", enabling ? 1 : 0);
+	}
+	
+	private void setRemoteRequestClientOn(boolean enabling)
+	{
+		Settings.Global.putInt(mContext.getContentResolver(), "REMOTE_REQUEST_CLIENT_ON", enabling ? 1 : 0);
+	}
+
+	@Override
+	public boolean onCreateOptionsMenu(Menu menu)
+	{
+		// Inflate the menu; this adds items to the action bar if it is present.
+		getMenuInflater().inflate(R.menu.main, menu);
+		return true;
+	}
+
+	@Override
+	public boolean onOptionsItemSelected(MenuItem item)
+	{
+		// Handle action bar item clicks here. The action bar will
+		// automatically handle clicks on the Home/Up button, so long
+		// as you specify a parent activity in AndroidManifest.xml.
+		int id = item.getItemId();
+		if (id == R.id.action_settings)
+		{
+			return true;
+		}
+		return super.onOptionsItemSelected(item);
+	}
+}
diff -urN Original_4.4.4_r1/packages/apps/TestApp/src/com/test/MainActivity.java~ AndroidSource/packages/apps/TestApp/src/com/test/MainActivity.java~
--- Original_4.4.4_r1/packages/apps/TestApp/src/com/test/MainActivity.java~	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/src/com/test/MainActivity.java~	2016-06-23 19:06:42.000000000 +0900
@@ -0,0 +1,308 @@
+package com.test;
+
+import java.net.InetAddress;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.util.Enumeration;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.SystemVibrator;
+import android.os.Vibrator;
+import android.provider.Settings;
+import android.provider.Settings.SettingNotFoundException;
+import android.service.distribute.Distributor;
+import android.service.remote.RemoteServiceManager;
+import android.text.InputType;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.Toast;
+import android.widget.ToggleButton;
+
+import com.test.location.LocationActivity;
+import com.test.recommendation.RecommendationTest;
+import com.test.sensor.ProxiActivity;
+import com.test.sensor.SensorActivity;
+import com.test.touch.TouchActivity;
+
+public class MainActivity extends Activity
+{
+	private Context mContext;
+	
+	RemoteServiceManager rrm;
+	Distributor dis;
+	
+	TextView ip_tv;
+	TextView info_tv;
+	
+	EditText ip_et;
+	
+	ToggleButton server_tg;
+	Button client_btn;
+	Button disconnect_btn;
+	Button location_test_btn;
+//	ToggleButton client_tg;
+	
+	@Override
+	protected void onCreate(Bundle savedInstanceState)
+	{
+		mContext = getApplicationContext();
+		
+		super.onCreate(savedInstanceState);
+		setContentView(R.layout.activity_main);
+		Log.d("ProxiActivity", "product: " + android.os.Build.PRODUCT);
+		getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+		
+		rrm = (RemoteServiceManager)getSystemService(Context.REMOTE_SERVICE);
+		dis = (Distributor)getSystemService(Context.DISTRIBUTED_COMPUTING_SERVICE);
+		
+		findViewById(R.id.recommendation_btn).setOnClickListener(mClickListener);
+		findViewById(R.id.vibrate_btn).setOnClickListener(mClickListener);
+		findViewById(R.id.sensor_btn).setOnClickListener(mClickListener);
+		findViewById(R.id.touch_btn).setOnClickListener(mClickListener);
+		findViewById(R.id.test_btn).setOnClickListener(mClickListener);
+		
+		ip_tv = (TextView) findViewById(R.id.ip_tv);
+		ip_tv.setText(getIpAddress());
+		
+		
+		//////////////////////////////////////////
+		/*
+		info_tv = (TextView) findViewById(R.id.info_tv);
+		//info_tv.setText(getIpAddress());
+		
+		ip_et = (EditText) findViewById(R.id.ip_et);
+		ip_et.setText("192.168.0.");
+		ip_et.requestFocus();
+//		ip_et.setInputType(InputType.TYPE_CLASS_NUMBER);
+		
+		server_tg = (ToggleButton)findViewById(R.id.server_tg);
+		server_tg.setOnClickListener(mClickListener);
+		
+		if(Settings.Global.getInt(getContentResolver(), Settings.Global.REMOTE_REQUEST_SERVER_ON, 0) > 0)
+			server_tg.setChecked(true);
+		else
+			server_tg.setChecked(false);
+		*/
+		/////////////////////////////////////////
+		
+		location_test_btn = (Button)findViewById(R.id.location_test);
+		location_test_btn.setOnClickListener(new OnClickListener() {
+            
+            @Override
+            public void onClick(View v) {
+                // TODO Auto-generated method stub
+                for(int a=0;a<3;a++){
+                    rrm.testLocation();
+                    try {
+                        Thread.sleep(10000);
+                    } catch (InterruptedException e) {
+                        // TODO Auto-generated catch block
+                        e.printStackTrace();
+                    }
+                }
+            }
+        });
+		
+		/*
+		client_btn = (Button)findViewById(R.id.client_btn);
+		client_btn.setOnClickListener(new OnClickListener() {
+            
+		    @Override
+		    public void onClick(View v) {
+		        // TODO Auto-generated method stub
+		        rrm.connectToServer(ip_et.getText().toString());
+		        setRemoteRequestClientOn(true);
+		        Toast.makeText(mContext, "connect!", Toast.LENGTH_SHORT).show();
+		        try {
+		            Log.d("TESTAPP", Settings.Global.getInt(mContext.getContentResolver(), "REMOTE_REQUEST_CLIENT_ON")+"");
+		            Log.d("TESTAPP", Settings.Global.getInt(mContext.getContentResolver(), "REMOTE_REQUEST_CLIENT_ON")+"");
+		            Log.d("TESTAPP", Settings.Global.getInt(mContext.getContentResolver(), "REMOTE_REQUEST_CLIENT_ON")+"");
+		        } catch (SettingNotFoundException e) {
+		            // TODO Auto-generated catch block
+		            e.printStackTrace();
+		        }
+		    }
+        });
+        */
+		
+		disconnect_btn = (Button)findViewById(R.id.client_disconnect);
+		disconnect_btn.setOnClickListener(new OnClickListener() {
+            
+            @Override
+            public void onClick(View v) {
+                // TODO Auto-generated method stub
+//                rrm.disconnectToServer();
+                rrm.printServerIPs();
+                setRemoteRequestClientOn(false);
+                Toast.makeText(mContext, "disconnect!", Toast.LENGTH_SHORT).show();
+            }
+        });
+//		client_tg = (ToggleButton)findViewById(R.id.client_tg);
+//		client_tg.setOnClickListener(mClickListener);
+//		
+//		if(Settings.Global.getInt(getContentResolver(), Settings.Global.REMOTE_REQUEST_CLIENT_ON, 0) > 0)
+//			client_tg.setChecked(true);
+//		else
+//			client_tg.setChecked(false);
+	}
+	
+	Button.OnClickListener mClickListener = new View.OnClickListener()
+	{
+		public void onClick(View v)
+		{
+			switch (v.getId())
+			{
+				case R.id.recommendation_btn:
+					/*runOnUiThread(new Runnable()
+					{
+						@Override
+						public void run()
+						{
+							info_tv.setText(new RecommendationTest(
+									mContext).getDevice());
+						}
+					});*/
+					Intent i3 = new Intent(mContext, LocationActivity.class);
+					startActivity(i3);
+					break;
+				case R.id.vibrate_btn:
+					//new VibrateTest(getApplicationContext()).vibrate();
+				    /*Log.d("VibLatency", "test Vibrate");
+					vibrate(200);*/
+					rrm.requestMotionEvents();
+					
+//				    SystemVibrator sv = new SystemVibrator();
+//				    sv.vibrate(100);
+				    
+					break;
+//				case R.id.server_tg:
+//				if(server_tg.isChecked())
+//				{
+//					//rrm.setEnabled(true);
+//					rrm.startServer();
+//					setRemoteRequestServerOn(true);
+//					Toast.makeText(mContext, "startServer!", Toast.LENGTH_SHORT).show();
+//					
+//					//dis.startTaskExecutor();
+//				}
+//				else
+//				{	
+//					//rrm.setEnabled(false);
+//					rrm.stopServer();
+//					setRemoteRequestServerOn(false);
+//					Toast.makeText(mContext, "stopServer!", Toast.LENGTH_SHORT).show();
+//				}
+//					break;
+//				case R.id.client_tg:
+//				if(client_tg.isChecked())
+//				{
+//					//rrm.setEnabled(true);
+//					rrm.connectToServer(ip_et.getText().toString());
+//					setRemoteRequestClientOn(true);
+//					Toast.makeText(mContext, "connect!", Toast.LENGTH_SHORT).show();
+//					
+//					//dis.startJobManager(ip_et.getText().toString());
+//				}
+//				else
+//				{	
+//					//rrm.setEnabled(false);
+//					rrm.disconnectToServer();
+//					setRemoteRequestClientOn(false);
+//					Toast.makeText(mContext, "disconnect!", Toast.LENGTH_SHORT).show();
+//				}
+//					break;
+				case R.id.sensor_btn:
+					Toast.makeText(mContext, "?!!", Toast.LENGTH_SHORT).show();
+					Intent i = new Intent(mContext, SensorActivity.class);
+					startActivity(i);
+					break;
+				case R.id.touch_btn:
+					Toast.makeText(mContext, "?!!", Toast.LENGTH_SHORT).show();
+					Intent i2 = new Intent(mContext, TouchActivity.class);
+					startActivity(i2);
+					break;
+				case R.id.test_btn:
+					//rrm.testOperation();
+					Intent i4 = new Intent(mContext, ProxiActivity.class);
+					startActivity(i4);
+					break;					
+			}
+		}
+	};
+	
+	private String getIpAddress() {
+ 		String ip = "";
+ 		try {
+ 			Enumeration<NetworkInterface> enumNetworkInterfaces = NetworkInterface
+ 					.getNetworkInterfaces();
+ 			while (enumNetworkInterfaces.hasMoreElements()) {
+
+ 				NetworkInterface networkInterface = enumNetworkInterfaces
+ 						.nextElement();
+ 				Enumeration<InetAddress> enumInetAddress = networkInterface
+ 						.getInetAddresses();
+
+ 				while (enumInetAddress.hasMoreElements()) {
+ 					InetAddress inetAddress = enumInetAddress.nextElement();
+
+ 					if (inetAddress.isSiteLocalAddress()) {
+ 						ip += "SiteLocalAddress: "
+ 								+ inetAddress.getHostAddress() + "\n";
+ 					}
+ 				}
+ 			}
+ 		} catch (SocketException e) {
+ 			e.printStackTrace();
+ 			ip += "Sth wrong! " + e.toString() + "\n";
+ 		}
+ 		return ip;
+ 	}
+	
+	private void vibrate(long m)
+	{
+		Vibrator vibrator = (Vibrator)mContext.getSystemService(Context.VIBRATOR_SERVICE);
+		vibrator.vibrate(m);
+	}
+ 
+	private void setRemoteRequestServerOn(boolean enabling)
+	{
+		Settings.Global.putInt(mContext.getContentResolver(), "REMOTE_REQUEST_SERVER_ON", enabling ? 1 : 0);
+	}
+	
+	private void setRemoteRequestClientOn(boolean enabling)
+	{
+		Settings.Global.putInt(mContext.getContentResolver(), "REMOTE_REQUEST_CLIENT_ON", enabling ? 1 : 0);
+	}
+
+	@Override
+	public boolean onCreateOptionsMenu(Menu menu)
+	{
+		// Inflate the menu; this adds items to the action bar if it is present.
+		getMenuInflater().inflate(R.menu.main, menu);
+		return true;
+	}
+
+	@Override
+	public boolean onOptionsItemSelected(MenuItem item)
+	{
+		// Handle action bar item clicks here. The action bar will
+		// automatically handle clicks on the Home/Up button, so long
+		// as you specify a parent activity in AndroidManifest.xml.
+		int id = item.getItemId();
+		if (id == R.id.action_settings)
+		{
+			return true;
+		}
+		return super.onOptionsItemSelected(item);
+	}
+}
diff -urN Original_4.4.4_r1/packages/apps/TestApp/src/com/test/recommendation/RecommendationTest.java AndroidSource/packages/apps/TestApp/src/com/test/recommendation/RecommendationTest.java
--- Original_4.4.4_r1/packages/apps/TestApp/src/com/test/recommendation/RecommendationTest.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/src/com/test/recommendation/RecommendationTest.java	2016-03-02 20:44:55.000000000 +0900
@@ -0,0 +1,27 @@
+package com.test.recommendation;
+
+import java.util.List;
+
+import android.service.devicemanager.DeviceManager;
+import android.content.Context;
+
+public class RecommendationTest
+{
+	DeviceManager dsm;
+	List peer;
+	
+	public RecommendationTest(Context ctx)
+	{
+		dsm = (DeviceManager)ctx.getSystemService(Context.DEVICE_MANAGEMENT_SERVICE);
+	}
+	
+	public String getDevice()
+	{
+		peer=dsm.getDeviceList(1);
+		
+		if(peer.isEmpty())
+			return "no peer";
+		else
+			return "ip:"+ dsm.recommendDevice(peer) + "length:" + peer.size();
+	}
+}
diff -urN Original_4.4.4_r1/packages/apps/TestApp/src/com/test/sensor/NextPage.java AndroidSource/packages/apps/TestApp/src/com/test/sensor/NextPage.java
--- Original_4.4.4_r1/packages/apps/TestApp/src/com/test/sensor/NextPage.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/src/com/test/sensor/NextPage.java	2015-01-09 00:26:11.000000000 +0900
@@ -0,0 +1,26 @@
+package com.test.sensor;
+
+import com.test.R;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+
+public class NextPage extends Activity
+{
+
+	@Override
+	protected void onCreate(Bundle savedInstanceState) {
+		// TODO Auto-generated method stub
+		super.onCreate(savedInstanceState);
+		setContentView(R.layout.activity_next_page);
+	}
+ 
+	@Override
+	public void onBackPressed() {
+		// TODO Auto-generated method stub
+		
+		finish();
+		startActivity(new Intent(NextPage.this, SensorActivity.class));		
+	}
+}
diff -urN Original_4.4.4_r1/packages/apps/TestApp/src/com/test/sensor/Particle.java AndroidSource/packages/apps/TestApp/src/com/test/sensor/Particle.java
--- Original_4.4.4_r1/packages/apps/TestApp/src/com/test/sensor/Particle.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/src/com/test/sensor/Particle.java	2015-01-09 00:26:11.000000000 +0900
@@ -0,0 +1,38 @@
+package com.test.sensor;
+
+public class Particle
+{
+	/* coefficient of restitution */
+    private static final float COR = 0.7f;
+     
+    public float mPosX;
+    public float mPosY;
+    private float mVelX;
+    private float mVelY;
+     
+    public void updatePosition(float sx, float sy, float sz, long timestamp) {
+        float dt = (System.nanoTime() - timestamp) / 1000000000.0f;
+        mVelX += -sx * dt;
+        mVelY += -sy * dt;
+         
+        mPosX += mVelX * dt;
+        mPosY += mVelY * dt;
+    }
+     
+    public void resolveCollisionWithBounds(float mHorizontalBound, float mVerticalBound) {
+        if (mPosX > mHorizontalBound) {
+            mPosX = mHorizontalBound;
+            mVelX = -mVelX * COR;
+        } else if (mPosX < -mHorizontalBound) {
+            mPosX = -mHorizontalBound;
+            mVelX = -mVelX * COR;
+        }
+        if (mPosY > mVerticalBound) {
+            mPosY = mVerticalBound;
+            mVelY = -mVelY * COR;
+        } else if (mPosY < -mVerticalBound) {
+            mPosY = -mVerticalBound;
+            mVelY = -mVelY * COR;
+        }
+    }
+}
diff -urN Original_4.4.4_r1/packages/apps/TestApp/src/com/test/sensor/ProxiActivity.java AndroidSource/packages/apps/TestApp/src/com/test/sensor/ProxiActivity.java
--- Original_4.4.4_r1/packages/apps/TestApp/src/com/test/sensor/ProxiActivity.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/src/com/test/sensor/ProxiActivity.java	2016-06-24 17:32:14.000000000 +0900
@@ -0,0 +1,78 @@
+package com.test.sensor;
+
+import com.test.R;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.app.Activity;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
+import android.os.Bundle;
+import android.widget.ImageView;
+
+public class ProxiActivity extends Activity implements SensorEventListener
+{
+	private SensorManager mSensorManager;
+	private Sensor mSensor;
+	ImageView iv;
+	private final String nexus5 = "aosp_hammerhead";
+	private final String nexus7 = "aosp_deb";
+
+	@Override
+	protected void onCreate(Bundle savedInstanceState)
+	{
+		// TODO Auto-generated method stub
+		super.onCreate(savedInstanceState);
+		setContentView(R.layout.activity_proxi);
+		mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
+		iv = (ImageView) findViewById(R.id.imageView1);
+	}
+
+	protected void onResume()
+	{
+		super.onResume();
+		String device = android.os.Build.PRODUCT;
+		Log.d("ProxiActivity", android.os.Build.PRODUCT);
+		if (device.equalsIgnoreCase(nexus7)) {
+			Log.d("ProxiActivity", android.os.Build.PRODUCT);
+			mSensorManager.registerListener(this,
+					mSensorManager.getDefaultSensor(Sensor.TYPE_REMOTE_SENSOR),
+					SensorManager.SENSOR_DELAY_GAME);
+		} else if (device.equalsIgnoreCase(nexus5)) {
+			Log.d("ProxiActivity", android.os.Build.PRODUCT);
+			mSensorManager.registerListener(this,
+					mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY),
+					SensorManager.SENSOR_DELAY_GAME);
+		}
+		
+	}
+
+	protected void onPause()
+	{
+		super.onPause();
+		mSensorManager.unregisterListener(this);
+	}
+
+	public void onAccuracyChanged(Sensor sensor, int accuracy)
+	{
+	}
+
+	public void onSensorChanged(SensorEvent event)
+	{
+	    
+	        Log.d("SensorLatency", event.values[0] + "Proximity lets go" + event.sourceDevice);
+	        if (event.values[0] == 0)
+	        {
+	            iv.setImageResource(R.drawable.near);
+	        } else
+	        {
+	            iv.setImageResource(R.drawable.far);
+	        }
+	    
+	}
+}
diff -urN Original_4.4.4_r1/packages/apps/TestApp/src/com/test/sensor/SensorActivity.java AndroidSource/packages/apps/TestApp/src/com/test/sensor/SensorActivity.java
--- Original_4.4.4_r1/packages/apps/TestApp/src/com/test/sensor/SensorActivity.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/src/com/test/sensor/SensorActivity.java	2016-09-23 17:26:52.381025348 +0900
@@ -0,0 +1,140 @@
+package com.test.sensor;
+
+import android.app.Activity;
+import android.content.Context;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
+import android.os.Bundle;
+import android.service.remote.RemoteServiceManager;
+import android.util.Log;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.animation.Animation;
+import android.view.animation.RotateAnimation;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.test.R;
+
+public class SensorActivity extends Activity implements SensorEventListener {
+
+    // define the display assembly compass picture
+    private ImageView image;
+
+    // record the compass picture angle turned
+    private float currentDegree = 0f;
+
+    // device sensor manager
+    private SensorManager mSensorManager;
+    private RemoteServiceManager mRemoteManager;
+
+    TextView tvHeading;
+
+	private final String nexus5 = "aosp_hammerhead";
+	private final String nexus7 = "aosp_deb";
+    
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_sensor);
+
+        // 
+        image = (ImageView) findViewById(R.id.imageViewCompass);
+
+        // TextView that will tell the user what degree is he heading
+        tvHeading = (TextView) findViewById(R.id.tvHeading);
+
+        // initialize your android device sensor capabilities
+        mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
+        
+        mRemoteManager = (RemoteServiceManager) getSystemService(Context.REMOTE_SERVICE);
+        
+        Button test_btn = (Button) findViewById(R.id.test_btn);
+        test_btn.setOnClickListener(new OnClickListener()
+		{
+			
+			@Override
+			public void onClick(View v)
+			{
+				mRemoteManager.testSensor();
+			}
+		});
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+
+        //for the system's orientation sensor registered listeners
+        String device = android.os.Build.PRODUCT;
+        if (device.equalsIgnoreCase(nexus7)) {
+        	Log.d("APP", device);
+            mSensorManager.registerListener(this,
+                    mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
+                    SensorManager.SENSOR_DELAY_NORMAL);
+        } else if (device.equalsIgnoreCase(nexus5)) {
+        	Log.d("APP", device);
+            mSensorManager.registerListener(this,
+                    mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
+                    SensorManager.SENSOR_DELAY_NORMAL);
+        }
+        
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        // to stop the listener and save battery
+        mSensorManager.unregisterListener(this);
+    }
+
+    @Override
+    public void onSensorChanged(SensorEvent event) {
+
+    	//Thread.dumpStack();
+        // get the angle around the z-axis rotated
+    	
+//    	Log.d("SensorLatency", event.values[0] + "\t" + System.currentTimeMillis());
+        if(event.sourceDevice==1){
+            Log.d("SensorLatency", "source device: " + event.sourceDevice);            
+        }
+    	
+    	
+        float degree = Math.round(event.values[0]);
+
+        tvHeading.setText("Heading: " + Float.toString(degree) + " degrees");
+
+        // create a rotation animation (reverse turn degree degrees)
+        RotateAnimation ra = new RotateAnimation(
+                currentDegree, 
+                -degree,
+                Animation.RELATIVE_TO_SELF, 0.5f, 
+                Animation.RELATIVE_TO_SELF,
+                0.5f);
+
+        // how long the animation will take place
+        ra.setDuration(210);
+
+        // set the animation after the end of the reservation status
+        ra.setFillAfter(true);
+
+        // Start the animation
+        image.startAnimation(ra);
+        currentDegree = -degree;
+
+    }
+
+    @Override
+    public void onAccuracyChanged(Sensor sensor, int accuracy) {
+        // not in use
+    }
+    
+    @Override
+    public void onDestroy(){
+    	super.onDestroy();
+    	mSensorManager.unregisterListener(this);
+    }
+}
\ No newline at end of file
diff -urN Original_4.4.4_r1/packages/apps/TestApp/src/com/test/sensor/SimulationView.java AndroidSource/packages/apps/TestApp/src/com/test/sensor/SimulationView.java
--- Original_4.4.4_r1/packages/apps/TestApp/src/com/test/sensor/SimulationView.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/src/com/test/sensor/SimulationView.java	2015-01-09 00:26:11.000000000 +0900
@@ -0,0 +1,129 @@
+package com.test.sensor;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.BitmapFactory.Options;
+import android.graphics.Canvas;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
+import android.view.Display;
+import android.view.Surface;
+import android.view.View;
+import android.view.WindowManager;
+
+import com.test.R;
+
+public class SimulationView extends View implements SensorEventListener {
+	 
+    private SensorManager mSensorManager;
+    private Sensor mAccelerometer;
+    private Display mDisplay;   
+     
+    private Bitmap mGrass;
+    private Bitmap mHole;
+    private Bitmap mBitmap;
+    private static final int BALL_SIZE = 32;
+    private static final int HOLE_SIZE = 40;
+     
+    private float mXOrigin;
+    private float mYOrigin;
+    private float mHorizontalBound;
+    private float mVerticalBound;
+     
+    public SimulationView(Context context) {
+        super(context);
+         
+        Bitmap ball = BitmapFactory.decodeResource(getResources(), R.drawable.ball);
+        mBitmap = Bitmap.createScaledBitmap(ball, BALL_SIZE, BALL_SIZE, true);
+         
+        Bitmap hole = BitmapFactory.decodeResource(getResources(), R.drawable.hole);
+        mHole = Bitmap.createScaledBitmap(hole, HOLE_SIZE, HOLE_SIZE, true);
+         
+        Options opts = new Options();
+        opts.inDither = true;
+        opts.inPreferredConfig = Bitmap.Config.RGB_565;
+        mGrass = BitmapFactory.decodeResource(getResources(), R.drawable.grass, opts);
+        
+        WindowManager mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
+        mDisplay = mWindowManager.getDefaultDisplay();
+         
+        mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
+        mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
+    }
+ 
+    @Override
+    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
+        mXOrigin = w * 0.5f;
+        mYOrigin = h * 0.5f;
+         
+        mHorizontalBound = (w - BALL_SIZE) * 0.5f;
+        mVerticalBound = (h - BALL_SIZE) * 0.5f;
+    }
+    
+    private float mSensorX;
+    private float mSensorY;
+    private float mSensorZ;
+    private long mSensorTimeStamp;
+     
+    @Override
+    public void onSensorChanged(SensorEvent event) {
+        if (event.sensor.getType() != Sensor.TYPE_ACCELEROMETER)
+            return;
+         
+        switch (mDisplay.getRotation()) {
+        case Surface.ROTATION_0:
+            mSensorX = event.values[0];
+            mSensorY = event.values[1];
+            break;
+        case Surface.ROTATION_90:
+            mSensorX = -event.values[1];
+            mSensorY = event.values[0];
+            break;
+        case Surface.ROTATION_180:
+            mSensorX = -event.values[0];
+            mSensorY = -event.values[1];
+            break;
+        case Surface.ROTATION_270:
+            mSensorX = event.values[1];
+            mSensorY = -event.values[0];
+            break;
+        }
+        mSensorZ = event.values[2];
+        mSensorTimeStamp = event.timestamp;
+    }
+     
+    @Override
+    public void onAccuracyChanged(Sensor sensor, int accuracy) {
+     
+    }
+    
+    public void startSimulation() {
+        mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_UI);
+    }
+     
+    public void stopSimulation() {
+        mSensorManager.unregisterListener(this);
+    }
+    
+    private Particle mBall = new Particle();
+    
+    @Override
+    protected void onDraw(Canvas canvas) {
+        super.onDraw(canvas);
+         
+        canvas.drawBitmap(mGrass, 0, 0, null);
+        canvas.drawBitmap(mHole, mXOrigin - HOLE_SIZE/2, mYOrigin - HOLE_SIZE/2, null);
+     
+        mBall.updatePosition(mSensorX, mSensorY, mSensorZ, mSensorTimeStamp);
+        mBall.resolveCollisionWithBounds(mHorizontalBound, mVerticalBound);
+     
+        canvas.drawBitmap(mBitmap, 
+                            (mXOrigin - BALL_SIZE/2) + mBall.mPosX, 
+                            (mYOrigin - BALL_SIZE/2) - mBall.mPosY, null);
+         
+        invalidate();
+    }
+}
\ No newline at end of file
diff -urN Original_4.4.4_r1/packages/apps/TestApp/src/com/test/service/VibrateTest.java AndroidSource/packages/apps/TestApp/src/com/test/service/VibrateTest.java
--- Original_4.4.4_r1/packages/apps/TestApp/src/com/test/service/VibrateTest.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/src/com/test/service/VibrateTest.java	2015-01-09 00:26:11.000000000 +0900
@@ -0,0 +1,19 @@
+package com.test.service;
+
+import android.content.Context;
+import android.os.Vibrator;
+
+public class VibrateTest
+{
+	private Vibrator vibrator;
+	
+	public VibrateTest(Context ctx)
+	{
+		vibrator = (Vibrator)ctx.getSystemService(Context.VIBRATOR_SERVICE);
+	}
+	
+	public void vibrate()
+	{
+		vibrator.vibrate(100);
+	}
+}
diff -urN Original_4.4.4_r1/packages/apps/TestApp/src/com/test/touch/MultiTouchView.java AndroidSource/packages/apps/TestApp/src/com/test/touch/MultiTouchView.java
--- Original_4.4.4_r1/packages/apps/TestApp/src/com/test/touch/MultiTouchView.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/src/com/test/touch/MultiTouchView.java	2015-01-09 00:26:11.000000000 +0900
@@ -0,0 +1,86 @@
+package com.test.touch;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.View;
+
+public class MultiTouchView extends View {
+	
+	private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
+	
+	final int MAX_NUMBER_OF_POINT = 10;
+	float[] x = new float[MAX_NUMBER_OF_POINT];
+	float[] y = new float[MAX_NUMBER_OF_POINT];
+	boolean[] touching = new boolean[MAX_NUMBER_OF_POINT];
+
+	public MultiTouchView(Context context, AttributeSet attrs, int defStyle) {
+		super(context, attrs, defStyle);
+		init();
+	}
+
+	public MultiTouchView(Context context, AttributeSet attrs) {
+		super(context, attrs);
+		init();
+	}
+
+	public MultiTouchView(Context context) {
+		super(context);
+		init();
+	}
+
+	void init() {
+		paint.setStyle(Paint.Style.STROKE);
+		paint.setStrokeWidth(1);
+		paint.setColor(Color.WHITE);
+	}
+
+	@Override
+	protected void onDraw(Canvas canvas) {
+		
+		for(int i = 0; i < MAX_NUMBER_OF_POINT; i++){
+			if(touching[i]){
+				canvas.drawCircle(x[i], y[i], 50f, paint);
+			}
+		}
+	}
+
+	@Override
+	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+		// TODO Auto-generated method stub
+		setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec),
+	            MeasureSpec.getSize(heightMeasureSpec));
+	}
+
+	@Override
+	public boolean onTouchEvent(MotionEvent event) {
+		int action = (event.getAction() & MotionEvent.ACTION_MASK);
+		int pointCount = event.getPointerCount();
+		
+		for (int i = 0; i < pointCount; i++) {
+			 int id = event.getPointerId(i);
+			 
+			 //Ignore pointer higher than our max.
+			 if(id < MAX_NUMBER_OF_POINT){
+				 x[id] = (int)event.getX(i);
+				 y[id] = (int)event.getY(i);
+				 
+				 if((action == MotionEvent.ACTION_DOWN)
+						 ||(action == MotionEvent.ACTION_POINTER_DOWN)
+						 ||(action == MotionEvent.ACTION_MOVE)){
+					 touching[id] = true;
+				 }else{
+					 touching[id] = false;
+				 }
+			 } 
+		 }
+
+		invalidate();	
+		return true;
+		
+	}
+
+}
\ No newline at end of file
diff -urN Original_4.4.4_r1/packages/apps/TestApp/src/com/test/touch/SingleTouchEventView.java AndroidSource/packages/apps/TestApp/src/com/test/touch/SingleTouchEventView.java
--- Original_4.4.4_r1/packages/apps/TestApp/src/com/test/touch/SingleTouchEventView.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/src/com/test/touch/SingleTouchEventView.java	2016-09-23 16:39:01.473117957 +0900
@@ -0,0 +1,150 @@
+package com.test.touch;
+
+import java.util.ArrayList;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.util.Pair;
+import android.view.MotionEvent;
+import android.view.View;
+import android.widget.Button;
+
+public class SingleTouchEventView extends View {
+		
+	private Canvas      m_Canvas;
+
+    private Path        m_Path;
+
+    private Paint       m_Paint;
+
+    ArrayList<Pair<Path, Paint>> paths = new ArrayList<Pair<Path, Paint>>();
+
+    ArrayList<Pair<Path, Paint>> undonePaths = new ArrayList<Pair<Path, Paint>>(); 
+
+    private float mX, mY;
+
+    private static final float TOUCH_TOLERANCE = 4;
+
+  public SingleTouchEventView(Context context, AttributeSet attrs) {
+    super(context, attrs);
+    
+    m_Paint = new Paint();
+    m_Paint.setAntiAlias(true);
+    m_Paint.setDither(true);
+    m_Paint.setColor(Color.parseColor("#37A1D1"));
+    m_Paint.setStyle(Paint.Style.STROKE);
+    m_Paint.setStrokeJoin(Paint.Join.ROUND);
+    m_Paint.setStrokeCap(Paint.Cap.ROUND);
+    m_Paint.setStrokeWidth(2);      
+
+    m_Canvas = new Canvas();
+
+    m_Path = new Path();
+    Paint newPaint = new Paint(m_Paint);
+    paths.add(new Pair<Path, Paint>(m_Path, newPaint));
+  }
+
+  @Override
+  protected void onDraw(Canvas canvas) {
+	  for (Pair<Path, Paint> p : paths) 
+      {
+          canvas.drawPath(p.first, p.second);
+      }
+  }
+
+  @Override
+  public boolean onTouchEvent(MotionEvent event) {
+	 
+    float x = event.getX();
+    float y = event.getY();
+
+//    Log.d("APP", x + "," + y + "\t" + System.currentTimeMillis());
+    
+    
+//    Log.d("TouchLatency", x + " " + y + ",,,"+ "\nsource device: " + event.getSourceDevice()
+//    		+ "\naction: " + event.getAction());
+    
+    Log.d("TouchLatency", "source device: " + event.getSourceDevice());
+    
+    
+//    Log.d("APP", event.getMetaState()+"");
+    
+//        Log.d("APP", x + "," + y + "\t" + System.currentTimeMillis());
+    
+    
+    switch (event.getAction()) 
+    {
+        case MotionEvent.ACTION_DOWN:
+        	if(event.getSourceDevice() == 0)
+            {
+            	 m_Paint.setColor(Color.BLACK);
+
+                 Paint newPaint = new Paint(m_Paint); // Clones the mPaint object
+                 paths.add(new Pair<Path, Paint>(m_Path, newPaint));
+            }
+            else if(event.getSourceDevice() == 1)
+            {
+            	 m_Paint.setColor(Color.RED);
+
+                 Paint newPaint = new Paint(m_Paint); // Clones the mPaint object
+                 paths.add(new Pair<Path, Paint>(m_Path, newPaint));
+            }
+            else
+            {
+            	 m_Paint.setColor(Color.GREEN);
+
+                 Paint newPaint = new Paint(m_Paint); // Clones the mPaint object
+                 paths.add(new Pair<Path, Paint>(m_Path, newPaint));
+            }
+        touch_start(x, y);
+        invalidate();
+        break;
+        case MotionEvent.ACTION_MOVE:
+        touch_move(x, y);
+        invalidate();
+        break;
+        case MotionEvent.ACTION_UP:
+        touch_up();
+        invalidate();
+        break;
+    }
+    return true;
+  }
+  
+  private void touch_start(float x, float y) 
+  {
+      m_Path.reset();
+      m_Path.moveTo(x, y);
+      mX = x;
+      mY = y;
+  }
+
+  private void touch_move(float x, float y) 
+  {
+      float dx = Math.abs(x - mX);
+      float dy = Math.abs(y - mY);
+      if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) 
+      {
+          m_Path.quadTo(mX, mY, (x + mX)/2, (y + mY)/2);
+          mX = x;
+          mY = y;
+      }
+  }
+  private void touch_up() 
+  {
+      m_Path.lineTo(mX, mY);
+
+      // commit the path to our offscreen
+      m_Canvas.drawPath(m_Path, m_Paint);
+
+      // kill this so we don't double draw            
+      m_Path = new Path();
+      Paint newPaint = new Paint(m_Paint); // Clones the mPaint object
+      paths.add(new Pair<Path, Paint>(m_Path, newPaint));
+  }
+} 
diff -urN Original_4.4.4_r1/packages/apps/TestApp/src/com/test/touch/TouchActivity.java AndroidSource/packages/apps/TestApp/src/com/test/touch/TouchActivity.java
--- Original_4.4.4_r1/packages/apps/TestApp/src/com/test/touch/TouchActivity.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TestApp/src/com/test/touch/TouchActivity.java	2016-03-02 20:45:20.000000000 +0900
@@ -0,0 +1,217 @@
+package com.test.touch;
+
+import android.app.Activity;
+import android.app.Instrumentation;
+import android.content.Context;
+import android.os.Bundle;
+import android.os.SystemClock;
+import android.service.remote.RemoteServiceManager;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.LinearLayout;
+
+import com.test.R;
+
+public class TouchActivity extends Activity
+{
+	Button btn;
+	Button btn2;
+	RemoteServiceManager rrm;
+	
+	@Override
+	protected void onCreate(Bundle savedInstanceState)
+	{
+	    super.onCreate(savedInstanceState);
+	    //setContentView(new SingleTouchEventView(this, null));
+	    setContentView(R.layout.activity_touch);
+	    
+	    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+	    
+	    
+	    LinearLayout parent = (LinearLayout)findViewById(R.id.parent);
+	    
+	    SingleTouchEventView v = new SingleTouchEventView(this, null);
+	    
+	    parent.addView(v);
+	    
+	    btn = (Button)findViewById(R.id.test_btn);
+	    rrm = (RemoteServiceManager)getSystemService(Context.REMOTE_SERVICE);
+	    
+	    btn.setOnClickListener(new OnClickListener()
+		{
+			
+			@Override
+			public void onClick(View v)
+			{
+				testHoldSwipe();
+				/*new Thread(new Runnable() {         
+			        @Override
+			        public void run() {*/
+			           /* try {
+			            Instrumentation inst = new Instrumentation();
+			            for ( int i = 0; i < 10; ++i ) {
+			                inst.sendKeyDownUpSync(KeyEvent.KEYCODE_MENU);
+			                Thread.sleep(2000);
+			                inst.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
+			                Thread.sleep(2000);
+			            }
+			            }
+			            catch(InterruptedException e){
+			            }*/
+			       /* }   
+			    }).start();*/
+				/*float x = 300.0f;
+				float y = 200.0f;
+				int metaState = 0;
+				
+				MotionEvent motionEvent = MotionEvent.obtain(
+						SystemClock.uptimeMillis(), 
+						SystemClock.uptimeMillis()+100, 
+					    MotionEvent.ACTION_DOWN, 
+					    x, 
+					    y, 
+					    metaState
+					);
+				try {
+		            if (!InputManager.getInstance().injectInputEvent(motionEvent,
+		                    InputManager.INJECT_INPUT_EVENT_MODE_WAIT_FOR_RESULT)) {
+		                Log.d("TouchActivity!!", "FAIL!!!!!");
+		            }
+		        } finally {
+		        	motionEvent.recycle();
+		        }
+				
+				for(int i=0; i<20; i++)
+				{
+					Log.d("TouchActivity!!", "testOperation!");
+					MotionEvent motionEvent2 = MotionEvent.obtain(
+							SystemClock.uptimeMillis(), 
+							SystemClock.uptimeMillis()+100+i*100, 
+						    MotionEvent.ACTION_MOVE, 
+						    x+i*10, 
+						    y+i*10, 
+						    metaState
+						);
+					try {
+			            if (!InputManager.getInstance().injectInputEvent(motionEvent2,
+			                    InputManager.INJECT_INPUT_EVENT_MODE_WAIT_FOR_RESULT)) {
+			                Log.d("TouchActivity!!", "FAIL!!!!!");
+			            }
+			        } finally {
+			        	motionEvent2.recycle();
+			        }
+				}
+				
+				MotionEvent motionEvent3 = MotionEvent.obtain(
+						SystemClock.uptimeMillis(), 
+						SystemClock.uptimeMillis()+3000, 
+					    MotionEvent.ACTION_UP, 
+					    x+30, 
+					    y+30, 
+					    metaState
+					);
+				try {
+		            if (!InputManager.getInstance().injectInputEvent(motionEvent3,
+		                    InputManager.INJECT_INPUT_EVENT_MODE_WAIT_FOR_RESULT)) {
+		                Log.d("TouchActivity!!", "FAIL!!!!!");
+		            }
+		        } finally {
+		        	motionEvent3.recycle();
+		        }*/
+				
+			}
+		});
+	    
+	    btn2 = (Button)findViewById(R.id.test_btn2);
+	    btn2.setOnClickListener(new OnClickListener()
+		{
+			
+			@Override
+			public void onClick(View v)
+			{
+				rrm.testOperation();
+			}
+		});
+	}
+	
+	public void testHoldSwipe() {
+		long downTime = SystemClock.uptimeMillis();
+		// event time MUST be retrieved only by this way!
+		long eventTime = SystemClock.uptimeMillis();
+		Instrumentation inst = new Instrumentation();
+
+		// Just init your variables, or create your own coords logic :)
+		float xStart = 200;
+		float yStart = 200;
+		// simulating thick finger touch
+		float x0 = 205;
+		float y0 = 205;
+		float x1 = 205;
+		float y1 = 208;
+		float x2 = 235;
+		float y2 = 215;
+		// move finger to bottom and right
+		// increment previous coords
+		float x3 = 245;
+		float y3 = 255;
+		float x4 = 247;
+		float y4 = 275;
+		float x5 = 252;
+		float y5 = 300;
+		// proceed one more movement to bottom and left
+		float x6 = 230;
+		float y6 = 320;
+		float x7 = 200;
+		float y7 = 357;
+		float x8 = 180;
+		float y8 = 380;
+		float x9 = 160;
+		float y9 = 400;
+		// release finger, logically to use coords from last movent
+		float x10 = 160;
+		float y10 = 400;
+
+		try {
+		// sending event - finger touched the screen
+		MotionEvent event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, xStart, yStart, 0);
+		inst.sendPointerSync(event);
+		// sending events - finger is moving over the screen
+		eventTime = SystemClock.uptimeMillis();
+		event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_MOVE, x0, y0, 0);
+		inst.sendPointerSync(event);
+		event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_MOVE, x1, y1, 0);
+		inst.sendPointerSync(event);
+		event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_MOVE, x2, y2, 0);
+		inst.sendPointerSync(event);
+		// simulating pause by incrementing eventTime with 1 second
+		// finger is still touching the screen
+		eventTime = SystemClock.uptimeMillis() + 1000;
+		// moving finger across the screen
+		event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_MOVE, x3, y3, 0);
+		inst.sendPointerSync(event);
+		event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_MOVE, x4, y4, 0);
+		inst.sendPointerSync(event);
+		event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_MOVE, x5, y5, 0);
+		inst.sendPointerSync(event);
+		event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP, x6, y6, 0);
+		// simulating one more pause
+		eventTime = SystemClock.uptimeMillis() + 1000;
+		// moving finger again
+		event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_MOVE, x7, y7, 0);
+		inst.sendPointerSync(event);
+		event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_MOVE, x8, y8, 0);
+		inst.sendPointerSync(event);
+		event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_MOVE, x9, y9, 0);
+		inst.sendPointerSync(event);
+		// release finger, gesture is finished
+		event = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_UP, x10, y10, 0);
+		inst.sendPointerSync(event);
+
+		} catch (Exception ignored) {
+		// Handle exceptions if necessary
+		}
+		}
+}
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/AndroidManifest.xml AndroidSource/packages/apps/TugOfWar/AndroidManifest.xml
--- Original_4.4.4_r1/packages/apps/TugOfWar/AndroidManifest.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/AndroidManifest.xml	2015-12-07 16:38:14.000000000 +0900
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.dcslab.tugofwar"
+    android:versionCode="1"
+    android:versionName="1.0" >
+
+    <uses-sdk
+        android:minSdkVersion="19"
+        android:targetSdkVersion="19" />
+
+    <application
+        android:allowBackup="true"
+        android:icon="@drawable/ic_launcher"
+        android:label="@string/app_name"
+        android:theme="@style/AppTheme" >
+        <activity
+            android:name=".StartActivity"
+            android:label="@string/app_name"
+            android:screenOrientation="landscape" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+        
+        <activity
+            android:name=".MainActivity"
+            android:screenOrientation="landscape"
+            />
+    </application>
+
+</manifest>
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/Android.mk AndroidSource/packages/apps/TugOfWar/Android.mk
--- Original_4.4.4_r1/packages/apps/TugOfWar/Android.mk	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/Android.mk	2015-12-07 16:17:24.000000000 +0900
@@ -0,0 +1,18 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := TugOfWar 
+LOCAL_CERTIFICATE := platform
+LOCAL_PRIVILEGED_MODULE := true
+
+include $(BUILD_PACKAGE)
+
+include $(call all-makefiles-under, $(LOCAL_PATH))
+
+
+
+
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/assets/KeepCalm-Medium.ttf and AndroidSource/packages/apps/TugOfWar/assets/KeepCalm-Medium.ttf differ
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/assets/KrabbyPatty.ttf and AndroidSource/packages/apps/TugOfWar/assets/KrabbyPatty.ttf differ
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/assets/oj.ttf and AndroidSource/packages/apps/TugOfWar/assets/oj.ttf differ
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/bin/AndroidManifest.xml AndroidSource/packages/apps/TugOfWar/bin/AndroidManifest.xml
--- Original_4.4.4_r1/packages/apps/TugOfWar/bin/AndroidManifest.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/bin/AndroidManifest.xml	2015-12-07 16:38:14.000000000 +0900
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.dcslab.tugofwar"
+    android:versionCode="1"
+    android:versionName="1.0" >
+
+    <uses-sdk
+        android:minSdkVersion="19"
+        android:targetSdkVersion="19" />
+
+    <application
+        android:allowBackup="true"
+        android:icon="@drawable/ic_launcher"
+        android:label="@string/app_name"
+        android:theme="@style/AppTheme" >
+        <activity
+            android:name=".StartActivity"
+            android:label="@string/app_name"
+            android:screenOrientation="landscape" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+        
+        <activity
+            android:name=".MainActivity"
+            android:screenOrientation="landscape"
+            />
+    </application>
+
+</manifest>
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/BuildConfig.class and AndroidSource/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/BuildConfig.class differ
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/CharacterImage.class and AndroidSource/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/CharacterImage.class differ
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/MainActivity.class and AndroidSource/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/MainActivity.class differ
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/R$attr.class and AndroidSource/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/R$attr.class differ
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/R.class and AndroidSource/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/R.class differ
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/R$dimen.class and AndroidSource/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/R$dimen.class differ
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/R$drawable.class and AndroidSource/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/R$drawable.class differ
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/R$id.class and AndroidSource/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/R$id.class differ
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/R$menu.class and AndroidSource/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/R$menu.class differ
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/R$string.class and AndroidSource/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/R$string.class differ
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/R$style.class and AndroidSource/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/R$style.class differ
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/StartActivity.class and AndroidSource/packages/apps/TugOfWar/bin/classes/com/dcslab/tugofwar/StartActivity.class differ
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/bin/jarlist.cache AndroidSource/packages/apps/TugOfWar/bin/jarlist.cache
--- Original_4.4.4_r1/packages/apps/TugOfWar/bin/jarlist.cache	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/bin/jarlist.cache	2015-12-07 16:25:28.000000000 +0900
@@ -0,0 +1,3 @@
+# cache for current jar dependency. DO NOT EDIT.
+# format is <lastModified> <length> <SHA-1> <path>
+# Encoding is UTF-8
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/.classpath AndroidSource/packages/apps/TugOfWar/.classpath
--- Original_4.4.4_r1/packages/apps/TugOfWar/.classpath	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/.classpath	2015-12-07 16:25:28.000000000 +0900
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry combineaccessrules="false" exported="true" kind="src" path="/AndroidSource"/>
+	<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
+	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
+	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="gen"/>
+	<classpathentry kind="output" path="bin/classes"/>
+</classpath>
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/gen/com/dcslab/tugofwar/BuildConfig.java AndroidSource/packages/apps/TugOfWar/gen/com/dcslab/tugofwar/BuildConfig.java
--- Original_4.4.4_r1/packages/apps/TugOfWar/gen/com/dcslab/tugofwar/BuildConfig.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/gen/com/dcslab/tugofwar/BuildConfig.java	2015-12-07 16:25:30.000000000 +0900
@@ -0,0 +1,6 @@
+/** Automatically generated file. DO NOT MODIFY */
+package com.dcslab.tugofwar;
+
+public final class BuildConfig {
+    public final static boolean DEBUG = true;
+}
\ No newline at end of file
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/gen/com/dcslab/tugofwar/R.java AndroidSource/packages/apps/TugOfWar/gen/com/dcslab/tugofwar/R.java
--- Original_4.4.4_r1/packages/apps/TugOfWar/gen/com/dcslab/tugofwar/R.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/gen/com/dcslab/tugofwar/R.java	2015-12-07 16:38:14.000000000 +0900
@@ -0,0 +1,92 @@
+/* AUTO-GENERATED FILE.  DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * aapt tool from the resource data it found.  It
+ * should not be modified by hand.
+ */
+
+package com.dcslab.tugofwar;
+
+public final class R {
+    public static final class attr {
+    }
+    public static final class dimen {
+        /**  Default screen margins, per the Android Design guidelines. 
+
+         Example customization of dimensions originally defined in res/values/dimens.xml
+         (such as screen margins) for screens with more than 820dp of available width. This
+         would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively).
+    
+         */
+        public static final int activity_horizontal_margin=0x7f040000;
+        public static final int activity_vertical_margin=0x7f040001;
+    }
+    public static final class drawable {
+        public static final int center_line=0x7f020000;
+        public static final int group1=0x7f020001;
+        public static final int group2=0x7f020002;
+        public static final int ic_launcher=0x7f020003;
+        public static final int ribbon=0x7f020004;
+        public static final int xml_border=0x7f020005;
+    }
+    public static final class id {
+        public static final int action_settings=0x7f08000d;
+        public static final int container=0x7f080000;
+        public static final int countDown=0x7f08000b;
+        public static final int gameTitle=0x7f08000a;
+        public static final int group1=0x7f080005;
+        public static final int memName1=0x7f080006;
+        public static final int memName2=0x7f080007;
+        public static final int memName3=0x7f080008;
+        public static final int memName4=0x7f080009;
+        public static final int startButton=0x7f08000c;
+        public static final int teamName1=0x7f080003;
+        public static final int teamName2=0x7f080004;
+        public static final int timer=0x7f080001;
+        public static final int topLayout=0x7f080002;
+    }
+    public static final class layout {
+        public static final int activity_main=0x7f030000;
+        public static final int activity_start=0x7f030001;
+    }
+    public static final class menu {
+        public static final int main=0x7f070000;
+    }
+    public static final class string {
+        public static final int action_settings=0x7f050002;
+        public static final int app_name=0x7f050000;
+        public static final int game_name=0x7f050006;
+        public static final int hello_world=0x7f050001;
+        public static final int start=0x7f050005;
+        public static final int team1=0x7f050003;
+        public static final int team2=0x7f050004;
+    }
+    public static final class style {
+        /** 
+        Base application theme, dependent on API level. This theme is replaced
+        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
+    
+
+            Theme customizations available in newer API levels can go in
+            res/values-vXX/styles.xml, while customizations related to
+            backward-compatibility can go here.
+        
+
+        Base application theme for API 11+. This theme completely replaces
+        AppBaseTheme from res/values/styles.xml on API 11+ devices.
+    
+ API 11 theme customizations can go here. 
+
+        Base application theme for API 14+. This theme completely replaces
+        AppBaseTheme from BOTH res/values/styles.xml and
+        res/values-v11/styles.xml on API 14+ devices.
+    
+ API 14 theme customizations can go here. 
+         */
+        public static final int AppBaseTheme=0x7f060000;
+        /**  Application theme. 
+ All customizations that are NOT specific to a particular API-level can go here. 
+         */
+        public static final int AppTheme=0x7f060001;
+    }
+}
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/ic_launcher-web.png and AndroidSource/packages/apps/TugOfWar/ic_launcher-web.png differ
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/libs/android-support-v4.jar and AndroidSource/packages/apps/TugOfWar/libs/android-support-v4.jar differ
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/lint.xml AndroidSource/packages/apps/TugOfWar/lint.xml
--- Original_4.4.4_r1/packages/apps/TugOfWar/lint.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/lint.xml	2015-12-07 16:11:30.000000000 +0900
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<lint>
+</lint>
\ No newline at end of file
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/proguard-project.txt AndroidSource/packages/apps/TugOfWar/proguard-project.txt
--- Original_4.4.4_r1/packages/apps/TugOfWar/proguard-project.txt	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/proguard-project.txt	2015-12-07 16:08:22.000000000 +0900
@@ -0,0 +1,20 @@
+# To enable ProGuard in your project, edit project.properties
+# to define the proguard.config property as described in that file.
+#
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in ${sdk.dir}/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the ProGuard
+# include property in project.properties.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/.project AndroidSource/packages/apps/TugOfWar/.project
--- Original_4.4.4_r1/packages/apps/TugOfWar/.project	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/.project	2015-12-07 16:08:22.000000000 +0900
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>TugOfWar</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.ApkBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/project.properties AndroidSource/packages/apps/TugOfWar/project.properties
--- Original_4.4.4_r1/packages/apps/TugOfWar/project.properties	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/project.properties	2015-12-07 16:25:28.000000000 +0900
@@ -0,0 +1,14 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-19
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/res/drawable-hdpi/center_line.png and AndroidSource/packages/apps/TugOfWar/res/drawable-hdpi/center_line.png differ
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/res/drawable-hdpi/_group1.png and AndroidSource/packages/apps/TugOfWar/res/drawable-hdpi/_group1.png differ
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/res/drawable-hdpi/group1.png and AndroidSource/packages/apps/TugOfWar/res/drawable-hdpi/group1.png differ
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/res/drawable-hdpi/_group2.png and AndroidSource/packages/apps/TugOfWar/res/drawable-hdpi/_group2.png differ
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/res/drawable-hdpi/group2.png and AndroidSource/packages/apps/TugOfWar/res/drawable-hdpi/group2.png differ
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/res/drawable-hdpi/ic_launcher.png and AndroidSource/packages/apps/TugOfWar/res/drawable-hdpi/ic_launcher.png differ
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/res/drawable-hdpi/ribbon.png and AndroidSource/packages/apps/TugOfWar/res/drawable-hdpi/ribbon.png differ
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/res/drawable-hdpi/xml_border.xml AndroidSource/packages/apps/TugOfWar/res/drawable-hdpi/xml_border.xml
--- Original_4.4.4_r1/packages/apps/TugOfWar/res/drawable-hdpi/xml_border.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/res/drawable-hdpi/xml_border.xml	2015-12-07 16:14:16.000000000 +0900
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_height="0dp"
+    android:layout_width="0dp"
+    >
+    <item>
+        <shape android:shape="rectangle">
+            <stroke android:width="1dp" android:color="#FF000000" />
+            <solid android:color="#FFFFFFFF" />
+        </shape>
+    </item>
+</layer-list>
\ No newline at end of file
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/res/drawable-mdpi/ic_launcher.png and AndroidSource/packages/apps/TugOfWar/res/drawable-mdpi/ic_launcher.png differ
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/res/drawable-xhdpi/ic_launcher.png and AndroidSource/packages/apps/TugOfWar/res/drawable-xhdpi/ic_launcher.png differ
Binary files Original_4.4.4_r1/packages/apps/TugOfWar/res/drawable-xxhdpi/ic_launcher.png and AndroidSource/packages/apps/TugOfWar/res/drawable-xxhdpi/ic_launcher.png differ
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/res/layout/activity_main.xml AndroidSource/packages/apps/TugOfWar/res/layout/activity_main.xml
--- Original_4.4.4_r1/packages/apps/TugOfWar/res/layout/activity_main.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/res/layout/activity_main.xml	2015-12-07 16:26:34.000000000 +0900
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingBottom="0dp"
+    android:paddingLeft="0dp"
+    android:paddingRight="0dp"
+    android:paddingTop="0dp"
+    android:background="#FFFFFF"
+    android:id="@+id/container"
+    tools:context="com.dcslab.MainActivity">
+
+
+    <LinearLayout
+        android:orientation="vertical"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        >
+
+
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+
+            android:text="@string/team1"
+            android:id="@+id/timer"
+
+            android:autoText="false"
+            android:textColor="#f818b9a6"
+            android:gravity="center"
+            android:layout_weight="0.25"
+            android:textSize="50dp"
+
+
+
+            />
+
+        <ImageView
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:src="@drawable/center_line"
+            android:layout_weight="2"
+            />
+
+        <View
+            android:layout_width="0dp"
+            android:layout_height="0dp"
+            android:layout_weight="0.2" />
+
+
+
+
+
+    </LinearLayout>
+
+
+
+    <LinearLayout
+        android:orientation="vertical"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_alignParentTop="true"
+        android:layout_alignParentStart="true"
+        android:weightSum="5"
+        android:id="@+id/topLayout">
+
+        <View
+            android:layout_width="0dp"
+            android:layout_height="0dp"
+            android:layout_weight="0.5" />
+
+
+        <LinearLayout
+            android:orientation="horizontal"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="0dp"
+            android:layout_marginRight="0dp"
+            android:layout_marginBottom="20dp"
+            android:layout_weight="0.25"
+            >
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+
+                android:text="@string/team1"
+                android:id="@+id/teamName1"
+                android:layout_gravity="bottom"
+
+                android:autoText="false"
+                android:textColor="#000000"
+                android:gravity="center"
+                android:layout_weight="1.8"
+                android:layout_marginLeft="50dp"
+                android:textSize="30dp"
+
+
+                />
+
+            <View
+                android:layout_width="0dp"
+                android:layout_height="0dp"
+                android:layout_weight="0.4"
+                />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/team1"
+                android:id="@+id/teamName2"
+                android:layout_gravity="bottom"
+                android:textColor="#000000"
+                android:gravity="center"
+                android:layout_weight="1.8"
+                android:layout_marginRight="50dp"
+                android:textSize="30dp"
+                />
+
+        </LinearLayout>
+
+        <ImageView
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:id="@+id/group1"
+            android:layout_marginLeft="50dp"
+            android:layout_marginRight="50dp"
+            android:src="@drawable/group1"
+            android:layout_weight="4"/>
+
+        <LinearLayout
+            android:orientation="horizontal"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="10dp"
+            android:layout_marginLeft="0dp"
+            android:layout_marginRight="0dp"
+            android:layout_weight="0.25"
+            >
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/team1"
+                android:id="@+id/memName1"
+                android:autoText="false"
+                android:textColor="#000000"
+                android:layout_weight="0.6"
+                android:layout_marginLeft="60dp"
+                android:gravity="right"
+                android:textSize="20dp"
+
+                />
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/team1"
+                android:id="@+id/memName2"
+                android:autoText="false"
+                android:textColor="#000000"
+                android:layout_weight="1.4"
+                android:gravity="right"
+                android:textSize="20dp" />
+
+            <View
+                android:layout_width="0dp"
+                android:layout_height="0dp"
+                android:layout_weight="4"
+                />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/team1"
+                android:id="@+id/memName3"
+                android:autoText="false"
+                android:textColor="#000000"
+                android:layout_weight="0.8"
+                android:gravity="left"
+                android:textSize="20dp"
+                />
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/team1"
+                android:id="@+id/memName4"
+                android:autoText="false"
+                android:textColor="#000000"
+                android:layout_weight="0.8"
+                android:gravity="left"
+                android:layout_marginRight="60dp"
+                android:textSize="20dp"
+                />
+        </LinearLayout>
+
+
+    </LinearLayout>
+
+
+</RelativeLayout>
\ No newline at end of file
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/res/layout/activity_start.xml AndroidSource/packages/apps/TugOfWar/res/layout/activity_start.xml
--- Original_4.4.4_r1/packages/apps/TugOfWar/res/layout/activity_start.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/res/layout/activity_start.xml	2015-12-07 16:28:36.000000000 +0900
@@ -0,0 +1,53 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingBottom="0dp"
+    android:paddingLeft="0dp"
+    android:paddingRight="0dp"
+    android:paddingTop="0dp"
+    android:background="#FFFFFF"
+    android:id="@+id/container"
+    tools:context="com.dcs.adagietto.sailbotgame.StartActivity">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical">
+
+
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/game_name"
+            android:gravity="center|bottom"
+            android:layout_weight="1"
+            android:textSize="80dp"
+            android:textColor="#000000"
+            android:id="@+id/gameTitle"/>
+
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:textSize="30dp"
+            android:gravity="center"
+            android:layout_weight="1"
+            android:id="@+id/countDown"
+            android:textColor="#000000" />
+
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/start"
+            android:textSize="30dp"
+            android:gravity="top|center"
+            android:layout_weight="1"
+            android:id="@+id/startButton"
+            android:textColor="#000000" />
+
+
+
+    </LinearLayout>
+
+
+</RelativeLayout>
\ No newline at end of file
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/res/menu/main.xml AndroidSource/packages/apps/TugOfWar/res/menu/main.xml
--- Original_4.4.4_r1/packages/apps/TugOfWar/res/menu/main.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/res/menu/main.xml	2015-12-07 16:08:24.000000000 +0900
@@ -0,0 +1,11 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:context="com.dcslab.tugofwar.MainActivity" >
+
+    <item
+        android:id="@+id/action_settings"
+        android:orderInCategory="100"
+        android:showAsAction="never"
+        android:title="@string/action_settings"/>
+
+</menu>
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/res/values/dimens.xml AndroidSource/packages/apps/TugOfWar/res/values/dimens.xml
--- Original_4.4.4_r1/packages/apps/TugOfWar/res/values/dimens.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/res/values/dimens.xml	2015-12-07 16:08:24.000000000 +0900
@@ -0,0 +1,7 @@
+<resources>
+
+    <!-- Default screen margins, per the Android Design guidelines. -->
+    <dimen name="activity_horizontal_margin">16dp</dimen>
+    <dimen name="activity_vertical_margin">16dp</dimen>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/res/values/strings.xml AndroidSource/packages/apps/TugOfWar/res/values/strings.xml
--- Original_4.4.4_r1/packages/apps/TugOfWar/res/values/strings.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/res/values/strings.xml	2015-12-07 16:28:28.000000000 +0900
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <string name="app_name">TugOfWar</string>
+    <string name="hello_world">Hello world!</string>
+    <string name="action_settings">Settings</string>
+    <string name="team1">TEAM1</string>
+    <string name="team2">TEAM2</string>
+    <string name="start">START</string>
+    <string name="game_name">Tug Of War</string>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/res/values/styles.xml AndroidSource/packages/apps/TugOfWar/res/values/styles.xml
--- Original_4.4.4_r1/packages/apps/TugOfWar/res/values/styles.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/res/values/styles.xml	2015-12-07 16:08:22.000000000 +0900
@@ -0,0 +1,20 @@
+<resources>
+
+    <!--
+        Base application theme, dependent on API level. This theme is replaced
+        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Light">
+        <!--
+            Theme customizations available in newer API levels can go in
+            res/values-vXX/styles.xml, while customizations related to
+            backward-compatibility can go here.
+        -->
+    </style>
+
+    <!-- Application theme. -->
+    <style name="AppTheme" parent="AppBaseTheme">
+        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
+    </style>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/res/values-v11/styles.xml AndroidSource/packages/apps/TugOfWar/res/values-v11/styles.xml
--- Original_4.4.4_r1/packages/apps/TugOfWar/res/values-v11/styles.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/res/values-v11/styles.xml	2015-12-07 16:08:22.000000000 +0900
@@ -0,0 +1,11 @@
+<resources>
+
+    <!--
+        Base application theme for API 11+. This theme completely replaces
+        AppBaseTheme from res/values/styles.xml on API 11+ devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
+        <!-- API 11 theme customizations can go here. -->
+    </style>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/res/values-v14/styles.xml AndroidSource/packages/apps/TugOfWar/res/values-v14/styles.xml
--- Original_4.4.4_r1/packages/apps/TugOfWar/res/values-v14/styles.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/res/values-v14/styles.xml	2015-12-07 16:08:22.000000000 +0900
@@ -0,0 +1,12 @@
+<resources>
+
+    <!--
+        Base application theme for API 14+. This theme completely replaces
+        AppBaseTheme from BOTH res/values/styles.xml and
+        res/values-v11/styles.xml on API 14+ devices.
+    -->
+    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
+        <!-- API 14 theme customizations can go here. -->
+    </style>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/res/values-w820dp/dimens.xml AndroidSource/packages/apps/TugOfWar/res/values-w820dp/dimens.xml
--- Original_4.4.4_r1/packages/apps/TugOfWar/res/values-w820dp/dimens.xml	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/res/values-w820dp/dimens.xml	2015-12-07 16:08:24.000000000 +0900
@@ -0,0 +1,10 @@
+<resources>
+
+    <!--
+         Example customization of dimensions originally defined in res/values/dimens.xml
+         (such as screen margins) for screens with more than 820dp of available width. This
+         would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively).
+    -->
+    <dimen name="activity_horizontal_margin">64dp</dimen>
+
+</resources>
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/src/com/dcslab/tugofwar/CharacterImage.java AndroidSource/packages/apps/TugOfWar/src/com/dcslab/tugofwar/CharacterImage.java
--- Original_4.4.4_r1/packages/apps/TugOfWar/src/com/dcslab/tugofwar/CharacterImage.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/src/com/dcslab/tugofwar/CharacterImage.java	2015-12-07 16:14:20.000000000 +0900
@@ -0,0 +1,104 @@
+package com.dcslab.tugofwar;
+
+import android.graphics.Typeface;
+import android.util.Log;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+/**
+ * Created by adagietto on 2015-12-01.
+ */
+public class CharacterImage {
+
+    private ImageView c;
+    private int resource1;
+    private int resource2;
+
+    private float[] teamNameLoc;
+    private float[] memNameLoc;
+
+    TextView teamText1;
+    TextView teamText2;
+    TextView memText1;
+    TextView memText2;
+    TextView memText3;
+    TextView memText4;
+
+    Typeface tf;
+
+    private int toggle=0;
+
+    public CharacterImage(ImageView c, int resource1, int resource2,TextView teamText1, TextView memText1, TextView memText2, TextView teamText2, TextView memText3, TextView memText4)
+    {
+        this.c = c;
+        this.resource1 = resource1;
+        this.resource2 = resource2;
+
+        this.teamText1 = teamText1;
+        this.teamText2 = teamText2;
+        this.memText1 = memText1;
+        this.memText2 = memText2;
+        this.memText3 = memText3;
+        this.memText4 = memText4;
+
+        this.c.setImageResource(resource1);
+
+
+        //c.setTranslationX(0);
+
+    }
+    public void setTypeface(Typeface tf)
+    {
+        this.tf = tf;
+    }
+
+    public void setTeamInfo(int team, String teamName, String memName1, String memName2)
+    {
+        if(team==1)
+        {
+            teamText1.setText(teamName);
+            memText1.setText(memName1);
+            memText2.setText(memName2);
+        }
+        else
+        {
+            teamText2.setText(teamName);
+            memText3.setText(memName1);
+            memText4.setText(memName2);
+        }
+    }
+
+    private void textMoveX(float value)
+    {
+        teamText1.setTranslationX(teamText1.getTranslationX()+value);
+        teamText2.setTranslationX(teamText2.getTranslationX()+value);
+        memText1.setTranslationX(memText1.getTranslationX()+value);
+        memText2.setTranslationX(memText2.getTranslationX()+value);
+        memText3.setTranslationX(memText3.getTranslationX()+value);
+        memText4.setTranslationX(memText4.getTranslationX()+value);
+
+    }
+
+
+    public void moveX(float value)
+    {
+        c.setTranslationX(c.getTranslationX()+value);
+        this.textMoveX(value);
+        toggleView();
+    }
+
+    private void toggleView()
+    {
+        if(toggle==0)
+        {
+            c.setImageResource(resource2);
+            toggle =1;
+        }
+        else
+        {
+            c.setImageResource(resource1);
+            toggle =0;
+        }
+    }
+}
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/src/com/dcslab/tugofwar/MainActivity.java AndroidSource/packages/apps/TugOfWar/src/com/dcslab/tugofwar/MainActivity.java
--- Original_4.4.4_r1/packages/apps/TugOfWar/src/com/dcslab/tugofwar/MainActivity.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/src/com/dcslab/tugofwar/MainActivity.java	2015-12-18 14:52:08.000000000 +0900
@@ -0,0 +1,184 @@
+
+package com.dcslab.tugofwar;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.graphics.Point;
+import android.graphics.Typeface;
+import android.hardware.Sensor;
+import android.hardware.SensorManager;
+import android.os.Bundle;
+import android.os.CountDownTimer;
+import android.util.Log;
+import android.view.Display;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+public class MainActivity extends Activity implements View.OnTouchListener {
+
+    private long lastTime = 0;
+    private float speed;
+    private float lastX, lastY, lastZ;
+    private float x, y, z;
+    int displayWidth, displayHeight;
+    private int totalAmount = 0;
+    Display display;
+
+    private AlertDialog.Builder builder;
+    private AlertDialog ad;
+    CharacterImage group1;
+    private ViewGroup container;
+    // private TextView teamName1, teamName2;
+
+    private static float WIN_THRESHOLD = 270;
+    private static final int SHAKE_THRESHOLD = 800;
+    private static final int MOVE_AMOUNT = 10;
+
+    private CountDownTimer cdt;
+
+    Typeface tf;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
+        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
+                WindowManager.LayoutParams.FLAG_FULLSCREEN);
+        setContentView(R.layout.activity_main);
+
+        display = getWindowManager().getDefaultDisplay();
+        Point size = new Point();
+        display.getSize(size);
+        displayWidth = size.x;
+
+        WIN_THRESHOLD = (float) (displayWidth - 100) / 8.4F;
+
+        tf = Typeface.createFromAsset(getAssets(), "oj.ttf");
+        ((TextView) findViewById(R.id.teamName1)).setTypeface(tf);
+        ((TextView) findViewById(R.id.teamName2)).setTypeface(tf);
+
+        tf = Typeface.createFromAsset(getAssets(), "KrabbyPatty.ttf");
+        ((TextView) findViewById(R.id.memName1)).setTypeface(tf);
+        ((TextView) findViewById(R.id.memName2)).setTypeface(tf);
+        ((TextView) findViewById(R.id.memName3)).setTypeface(tf);
+        ((TextView) findViewById(R.id.memName4)).setTypeface(tf);
+
+        tf = Typeface.createFromAsset(getAssets(), "KeepCalm-Medium.ttf");
+        ((TextView) findViewById(R.id.timer)).setTypeface(tf);
+        // group1.setTypeface(tp);
+
+        Log.d("width", displayWidth + "");
+
+        displayHeight = size.y;
+
+         group1 = new
+         CharacterImage((ImageView)findViewById(R.id.group1),R.drawable.group1,R.drawable.group2,(TextView)findViewById(R.id.teamName1),(TextView)findViewById(R.id.memName1)
+         ,(TextView)findViewById(R.id.memName2),(TextView)findViewById(R.id.teamName2),(TextView)findViewById(R.id.memName3),(TextView)findViewById(R.id.memName4));
+
+//        group1 = new CharacterImage((ImageView) findViewById(R.id.group1), R.drawable.ic_launcher,
+//                R.drawable.ic_launcher, (TextView) findViewById(R.id.teamName1),
+//                (TextView) findViewById(R.id.memName1)
+//                , (TextView) findViewById(R.id.memName2), (TextView) findViewById(R.id.teamName2),
+//                (TextView) findViewById(R.id.memName3), (TextView) findViewById(R.id.memName4));
+
+        group1.setTeamInfo(1, "TEAM 1", "JAY", "DAVE");
+        group1.setTeamInfo(2, "TEAM 2", "JAKE", "ANNA");
+
+        builder = new AlertDialog.Builder(this);
+        container = (ViewGroup) findViewById(R.id.container);
+        container.setOnTouchListener(this);
+
+        createGameEndDialog();
+
+        startTimer();
+
+    }
+
+    @Override
+    public void onBackPressed()
+    {
+        return;
+    }
+
+    private void startTimer() {
+
+        cdt = new CountDownTimer(30000, 1000) {
+            TextView timer = (TextView) findViewById(R.id.timer);
+
+            public void onTick(long millisUntilFinished) {
+                timer.setText("" + millisUntilFinished / 1000);
+            }
+
+            public void onFinish() {
+                timer.setText("0");
+                String msg;
+                if (totalAmount > 0)
+                {
+                    msg = "TEAM2 WIN!";
+                    Log.d("result", "2P WIN");
+                }
+
+                else {
+                    msg = "TEAM1 WIN!";
+                    Log.d("result", "1P WIN");
+                }
+
+                ad.setTitle(msg);
+                ad.show();
+
+            }
+        }.start();
+    }
+
+    private void createGameEndDialog() {
+        ad = builder.setTitle("게임 종료")
+                .setNeutralButton("CHECK", new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialog, int which) {
+                        group1.moveX(totalAmount * -1);
+                        totalAmount = 0;
+                        startTimer();
+                    }
+                }).create();
+        ad.setCanceledOnTouchOutside(false);
+        ad.setCancelable(false);
+    }
+
+    @Override
+    public boolean onTouch(View v, MotionEvent event) {
+
+        int action = event.getAction();
+        if (action == MotionEvent.ACTION_DOWN && !ad.isShowing())
+        {
+            /*
+             * if(Math.abs(totalAmount) > WIN_THRESHOLD ) { String msg;
+             * if(totalAmount>0) { msg = "2P WIN!"; Log.d("result", "2P WIN"); }
+             * else { msg = "1P WIN!"; Log.d("result", "1P WIN"); }
+             * ad.setTitle(msg); ad.show(); } else
+             */
+            {
+                int temp;
+
+                /*
+                 * if(event.getX()<(displayWidth/2)) temp = -1; else temp = 1;
+                 */
+
+                if (event.getSourceDevice() == 1 || event.getSourceDevice() == 3)
+                    temp = -1;
+                else
+                    temp = 1;
+
+                totalAmount = totalAmount + (MOVE_AMOUNT * temp);
+                group1.moveX(MOVE_AMOUNT * temp);
+            }
+        }
+
+        return false;
+    }
+}
diff -urN Original_4.4.4_r1/packages/apps/TugOfWar/src/com/dcslab/tugofwar/StartActivity.java AndroidSource/packages/apps/TugOfWar/src/com/dcslab/tugofwar/StartActivity.java
--- Original_4.4.4_r1/packages/apps/TugOfWar/src/com/dcslab/tugofwar/StartActivity.java	1970-01-01 09:00:00.000000000 +0900
+++ AndroidSource/packages/apps/TugOfWar/src/com/dcslab/tugofwar/StartActivity.java	2016-06-23 19:48:50.083024429 +0900
@@ -0,0 +1,80 @@
+package com.dcslab.tugofwar;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Typeface;
+import android.os.Bundle;
+import android.os.CountDownTimer;
+import android.os.ServiceManager;
+import android.service.remote.IRemoteService;
+import android.service.remote.RemoteRequest;
+import android.service.remote.RemoteServiceManager;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.view.animation.AlphaAnimation;
+import android.view.animation.Animation;
+import android.widget.TextView;
+import android.util.Log;
+
+import java.util.ArrayList;
+
+public class StartActivity extends Activity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
+        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
+                WindowManager.LayoutParams.FLAG_FULLSCREEN);
+        setContentView(R.layout.activity_start);
+
+        final RemoteServiceManager mService = (RemoteServiceManager) getSystemService(Context.REMOTE_SERVICE); 
+        
+
+        final TextView startButton = (TextView)findViewById(R.id.startButton);
+        TextView gameTitle = (TextView)findViewById(R.id.gameTitle);
+        TextView countDown = (TextView)findViewById(R.id.countDown);
+
+        gameTitle.setTypeface(Typeface.createFromAsset(getAssets(),"oj.ttf"));
+        startButton.setTypeface(Typeface.createFromAsset(getAssets(),"KeepCalm-Medium.ttf"));
+        countDown.setTypeface(Typeface.createFromAsset(getAssets(),"KeepCalm-Medium.ttf"));
+
+        Animation blink = new AlphaAnimation(0.0f, 1.0f);
+        blink.setDuration(500);
+        blink.setStartOffset(20);
+        blink.setRepeatCount(Animation.INFINITE);
+        blink.setRepeatMode(Animation.REVERSE);
+
+        startButton.setAnimation(blink);
+
+        startButton.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                startButton.setText("");
+                Log.d("AAAA", "clicked start");
+                try{
+                    mService.sendAllrequest(new RemoteRequest("request", "dummyApp", new ArrayList<Object>()));;
+                } catch(Exception e){
+                    e.printStackTrace();
+                }
+                new CountDownTimer(3900, 1000) {
+                    TextView timer = (TextView)findViewById(R.id.countDown);
+
+                    public void onTick(long millisUntilFinished) {
+                        timer.setText(""+millisUntilFinished / 1000);
+                    }
+
+                    public void onFinish() {
+
+                        Intent intent = new Intent(StartActivity.this, MainActivity.class);
+                        startActivity(intent);
+                    }
+                }.start();
+            }
+        });
+
+    }
+
+}
