diff --git a/DeviceParts/Android.mk b/DeviceParts/Android.mk
new file mode 100644
index 0000000..5e25f43
--- /dev/null
+++ b/DeviceParts/Android.mk
@@ -0,0 +1,40 @@
+LOCAL_PATH := $(call my-dir)
+ifeq ($(TARGET_DEVICE),$(filter $(TARGET_DEVICE),zenfone6))
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_STATIC_ANDROID_LIBRARIES := \
+    android-support-v14-preference \
+    android-support-v13 \
+    android-support-v7-appcompat \
+    android-support-v7-preference \
+    android-support-v7-recyclerview \
+    android-support-v4
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+LOCAL_PACKAGE_NAME := DeviceParts
+LOCAL_CERTIFICATE := platform
+LOCAL_PRIVILEGED_MODULE := true
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+LOCAL_USE_AAPT2 := true
+
+package_resource_overlays := $(strip \
+    $(wildcard $(foreach dir, $(PRODUCT_PACKAGE_OVERLAYS), \
+      $(addprefix $(dir)/, packages/apps/DeviceParts/res))) \
+    $(wildcard $(foreach dir, $(DEVICE_PACKAGE_OVERLAYS), \
+      $(addprefix $(dir)/, packages/apps/DeviceParts/res))))
+
+LOCAL_RESOURCE_DIR := $(package_resource_overlays) $(LOCAL_RESOURCE_DIR)
+
+LOCAL_JAVA_LIBRARIES := telephony-common
+
+LOCAL_PROGUARD_ENABLED := disabled
+LOCAL_DEX_PREOPT := false
+
+include frameworks/base/packages/SettingsLib/common.mk
+
+include packages/apps/OmniLib/common.mk
+
+include $(BUILD_PACKAGE)
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
+endif
diff --git a/DeviceParts/AndroidManifest.xml b/DeviceParts/AndroidManifest.xml
new file mode 100644
index 0000000..c54d9d4
--- /dev/null
+++ b/DeviceParts/AndroidManifest.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="org.omnirom.device"
+    android:sharedUserId="android.uid.system" >
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+    <uses-permission android:name="android.permission.VIBRATE" />
+    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+    <uses-permission android:name="android.permission.INJECT_EVENTS" />
+    <uses-permission android:name="android.permission.CAMERA" />
+
+    <protected-broadcast android:name="com.android.systemui.doze.pulse" />
+
+    <uses-sdk
+        android:minSdkVersion="26"
+        android:targetSdkVersion="26" />
+    <application
+        android:icon="@drawable/ic_launcher"
+        android:label="@string/advanced_settings"
+        android:theme="@style/AppTheme"
+        android:supportsRtl="true" >
+        <activity
+            android:name="org.omnirom.device.DeviceSettingsActivity"
+            android:exported="false"
+            android:label="@string/advanced_settings"
+            android:launchMode="singleTask" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+        <activity-alias
+            android:name="org.omnirom.device.DeviceSettings"
+            android:exported="true"
+            android:label="@string/advanced_settings"
+            android:targetActivity="DeviceSettingsActivity" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <!--<category android:name="android.intent.category.LAUNCHER" />-->
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity-alias>
+        <activity
+            android:name="org.omnirom.device.GestureSettingsActivity"
+            android:exported="false"
+            android:label="@string/category_gestures_title"
+            android:launchMode="singleTask" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:name="org.omnirom.device.DozeSettingsActivity"
+            android:exported="false"
+            android:label="@string/doze_category_title"
+            android:launchMode="singleTask" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+        <activity
+            android:name="com.android.settings.Settings$SwipeToNotificationSuggestionActivity"
+            android:exported="true"
+            android:label="@string/fp_swipe_down_switch_title_head"
+            android:launchMode="singleTask" >
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+        <receiver android:name="org.omnirom.device.Startup" >
+            <intent-filter android:priority="100" >
+                <action android:name="android.intent.action.BOOT_COMPLETED" />
+            </intent-filter>
+        </receiver>
+    </application>
+</manifest>
diff --git a/DeviceParts/res/drawable-v26/ic_launcher.xml b/DeviceParts/res/drawable-v26/ic_launcher.xml
new file mode 100644
index 0000000..44a0834
--- /dev/null
+++ b/DeviceParts/res/drawable-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:aapt="http://schemas.android.com/aapt">
+    <background android:drawable="@drawable/asus_app_ic_background_launcher"/>
+    <foreground android:drawable="@drawable/ic_asus_app_ic_foreground_launcher"/>
+</adaptive-icon>
diff --git a/DeviceParts/res/drawable/arrow_collapse_down.xml b/DeviceParts/res/drawable/arrow_collapse_down.xml
new file mode 100644
index 0000000..8f793f3
--- /dev/null
+++ b/DeviceParts/res/drawable/arrow_collapse_down.xml
@@ -0,0 +1,9 @@
+<!-- drawable/arrow_collapse_down.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?android:attr/colorAccent">
+    <path android:fillColor="#000" android:pathData="M19.92,12.08L12,20L4.08,12.08L5.5,10.67L11,16.17V2H13V16.17L18.5,10.66L19.92,12.08M12,20H2V22H22V20H12Z" />
+</vector>
diff --git a/DeviceParts/res/drawable/arrow_collapse_up.xml b/DeviceParts/res/drawable/arrow_collapse_up.xml
new file mode 100644
index 0000000..e859eb6
--- /dev/null
+++ b/DeviceParts/res/drawable/arrow_collapse_up.xml
@@ -0,0 +1,9 @@
+<!-- drawable/arrow_collapse_up.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?android:attr/colorAccent">
+    <path android:fillColor="#000" android:pathData="M4.08,11.92L12,4L19.92,11.92L18.5,13.33L13,7.83V22H11V7.83L5.5,13.33L4.08,11.92M12,4H22V2H2V4H12Z" />
+</vector>
diff --git a/DeviceParts/res/drawable/asus_app_ic_background_launcher.png b/DeviceParts/res/drawable/asus_app_ic_background_launcher.png
new file mode 100644
index 0000000..0f54091
--- /dev/null
+++ b/DeviceParts/res/drawable/asus_app_ic_background_launcher.png
Binary files differ
diff --git a/DeviceParts/res/drawable/back.xml b/DeviceParts/res/drawable/back.xml
new file mode 100644
index 0000000..3345310
--- /dev/null
+++ b/DeviceParts/res/drawable/back.xml
@@ -0,0 +1,9 @@
+<!-- drawable/arrow_left.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?android:attr/colorAccent">
+    <path android:fillColor="#000" android:pathData="M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z" />
+</vector>
diff --git a/DeviceParts/res/drawable/home.xml b/DeviceParts/res/drawable/home.xml
new file mode 100644
index 0000000..77475c4
--- /dev/null
+++ b/DeviceParts/res/drawable/home.xml
@@ -0,0 +1,9 @@
+<!-- drawable/checkbox_blank_circle_outline.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?android:attr/colorAccent">
+    <path android:fillColor="#000" android:pathData="M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z" />
+</vector>
diff --git a/DeviceParts/res/drawable/ic_asus_app_ic_foreground_launcher.xml b/DeviceParts/res/drawable/ic_asus_app_ic_foreground_launcher.xml
new file mode 100644
index 0000000..de4b929
--- /dev/null
+++ b/DeviceParts/res/drawable/ic_asus_app_ic_foreground_launcher.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:aapt="http://schemas.android.com/aapt" android:height="108dp" android:width="108dp" android:viewportWidth="108" android:viewportHeight="108">
+    <path android:fillColor="#ebebeb" android:pathData="M54,40.6L38.6,52.8v17.7c0,1.2 0.9,2 2,2h8.2V60.1H59v12.4h8.2c1.2,0 2,-0.9 2,-2V52.8L54,40.6z"/>
+    <path android:fillColor="#7fb2e8" android:pathData="M71.5,54.5l-17.5,-13.9l-17.5,13.9l-3.8,-4.1l21.3,-17l21.3,17z"/>
+</vector>
diff --git a/DeviceParts/res/drawable/ic_camera.xml b/DeviceParts/res/drawable/ic_camera.xml
new file mode 100644
index 0000000..8294f4b
--- /dev/null
+++ b/DeviceParts/res/drawable/ic_camera.xml
@@ -0,0 +1,9 @@
+<!-- drawable/camera.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="32dp"
+    android:width="32dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?android:attr/colorAccent" >
+    <path android:fillColor="#fff" android:pathData="M4,4H7L9,2H15L17,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4M12,7A5,5 0 0,0 7,12A5,5 0 0,0 12,17A5,5 0 0,0 17,12A5,5 0 0,0 12,7M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9Z" />
+</vector>
diff --git a/DeviceParts/res/drawable/ic_disabled.xml b/DeviceParts/res/drawable/ic_disabled.xml
new file mode 100644
index 0000000..1c5152b
--- /dev/null
+++ b/DeviceParts/res/drawable/ic_disabled.xml
@@ -0,0 +1,8 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:height="32dp"
+        android:width="32dp"
+        android:viewportWidth="24"
+        android:viewportHeight="24"
+        android:tint="?android:attr/colorAccent" >
+    <path android:fillColor="#fff" android:pathData="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"/>
+</vector>
diff --git a/DeviceParts/res/drawable/ic_flashlight.xml b/DeviceParts/res/drawable/ic_flashlight.xml
new file mode 100644
index 0000000..213a7f6
--- /dev/null
+++ b/DeviceParts/res/drawable/ic_flashlight.xml
@@ -0,0 +1,9 @@
+<!-- drawable/flashlight.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="32dp"
+    android:width="32dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?android:attr/colorAccent" >
+    <path android:fillColor="#fff" android:pathData="M9,10L6,5H18L15,10H9M18,4H6V2H18V4M9,22V11H15V22H9M12,13A1,1 0 0,0 11,14A1,1 0 0,0 12,15A1,1 0 0,0 13,14A1,1 0 0,0 12,13Z" />
+</vector>
diff --git a/DeviceParts/res/drawable/ic_hbm_tile.xml b/DeviceParts/res/drawable/ic_hbm_tile.xml
new file mode 100644
index 0000000..95cf546
--- /dev/null
+++ b/DeviceParts/res/drawable/ic_hbm_tile.xml
@@ -0,0 +1,7 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:height="24dp"
+        android:width="24dp"
+        android:viewportWidth="24"
+        android:viewportHeight="24">
+    <path android:fillColor="#fff" android:pathData="M7,17H4C2.38,17 0.96,15.74 0.76,14.14L0.26,11.15C0.15,10.3 0.39,9.5 0.91,8.92C1.43,8.34 2.19,8 3,8H9C9.83,8 10.58,8.35 11.06,8.96C11.17,9.11 11.27,9.27 11.35,9.45C11.78,9.36 12.22,9.36 12.64,9.45C12.72,9.27 12.82,9.11 12.94,8.96C13.41,8.35 14.16,8 15,8H21C21.81,8 22.57,8.34 23.09,8.92C23.6,9.5 23.84,10.3 23.74,11.11L23.23,14.18C23.04,15.74 21.61,17 20,17H17C15.44,17 13.92,15.81 13.54,14.3L12.64,11.59C12.26,11.31 11.73,11.31 11.35,11.59L10.43,14.37C10.07,15.82 8.56,17 7,17Z" />
+</vector>
diff --git a/DeviceParts/res/drawable/ic_info_outline_24dp.xml b/DeviceParts/res/drawable/ic_info_outline_24dp.xml
new file mode 100644
index 0000000..3fe1e9e
--- /dev/null
+++ b/DeviceParts/res/drawable/ic_info_outline_24dp.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2016 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0"
+        android:tint="?android:attr/textColorSecondary">
+    <path
+        android:fillColor="#000000"
+        android:pathData="M11,17h2v-6h-2v6zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8zM11,9h2L13,7h-2v2z"/>
+</vector>
diff --git a/DeviceParts/res/drawable/ic_music_next.xml b/DeviceParts/res/drawable/ic_music_next.xml
new file mode 100644
index 0000000..baad21d
--- /dev/null
+++ b/DeviceParts/res/drawable/ic_music_next.xml
@@ -0,0 +1,9 @@
+<!-- drawable/skip_next.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="32dp"
+    android:width="32dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?android:attr/colorAccent" >
+    <path android:fillColor="#fff" android:pathData="M16,18H18V6H16M6,18L14.5,12L6,6V18Z" />
+</vector>
diff --git a/DeviceParts/res/drawable/ic_music_play.xml b/DeviceParts/res/drawable/ic_music_play.xml
new file mode 100644
index 0000000..d8c3ba8
--- /dev/null
+++ b/DeviceParts/res/drawable/ic_music_play.xml
@@ -0,0 +1,9 @@
+<!-- drawable/play.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="32dp"
+    android:width="32dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?android:attr/colorAccent" >
+    <path android:fillColor="#fff" android:pathData="M8,5.14V19.14L19,12.14L8,5.14Z" />
+</vector>
diff --git a/DeviceParts/res/drawable/ic_music_prev.xml b/DeviceParts/res/drawable/ic_music_prev.xml
new file mode 100644
index 0000000..199fcd1
--- /dev/null
+++ b/DeviceParts/res/drawable/ic_music_prev.xml
@@ -0,0 +1,9 @@
+<!-- drawable/skip_previous.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="32dp"
+    android:width="32dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?android:attr/colorAccent" >
+    <path android:fillColor="#fff" android:pathData="M6,18V6H8V18H6M9.5,12L18,6V18L9.5,12Z" />
+</vector>
diff --git a/DeviceParts/res/drawable/ic_panel_tile.xml b/DeviceParts/res/drawable/ic_panel_tile.xml
new file mode 100644
index 0000000..ee0137f
--- /dev/null
+++ b/DeviceParts/res/drawable/ic_panel_tile.xml
@@ -0,0 +1,7 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:height="24dp"
+        android:width="24dp"
+        android:viewportWidth="24"
+        android:viewportHeight="24">
+    <path android:fillColor="#fff" android:pathData="M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z" />
+</vector>
diff --git a/DeviceParts/res/drawable/ic_settings_sound.xml b/DeviceParts/res/drawable/ic_settings_sound.xml
new file mode 100644
index 0000000..7054d78
--- /dev/null
+++ b/DeviceParts/res/drawable/ic_settings_sound.xml
@@ -0,0 +1,30 @@
+<!--
+    Copyright (C) 2016 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24.0dp"
+        android:height="24.0dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0"
+        android:tint="?android:attr/colorControlNormal">
+    <path
+        android:fillColor="#FFFFFFFF"
+        android:pathData="M3 10v4c0 .55 .45 1 1 1h3l3.29 3.29c.63 .63 1.71 .18
+1.71-.71V6.41c0-.89-1.08-1.34-1.71-.71L7 9H4c-.55 0-1 .45-1 1zm13.5 2A4.5 4.5 0
+0 0 14 7.97v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 4.46v.19c0 .38 .25 .71 .61
+.85C17.18 6.54 19 9.06 19 12s-1.82 5.46-4.39 6.5c-.36 .14 -.61 .47 -.61 .85
+v.19c0 .63 .63 1.08 1.22 .86 a8.995 8.995 0 0 0 0-16.8c-.59-.23-1.22 .23 -1.22
+.86 z"/>
+</vector>
diff --git a/DeviceParts/res/drawable/ic_wakeup.xml b/DeviceParts/res/drawable/ic_wakeup.xml
new file mode 100644
index 0000000..34209eb
--- /dev/null
+++ b/DeviceParts/res/drawable/ic_wakeup.xml
@@ -0,0 +1,8 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:height="32dp"
+        android:width="32dp"
+        android:viewportWidth="24"
+        android:viewportHeight="24"
+        android:tint="?android:attr/colorAccent" >
+    <path android:fillColor="#fff" android:pathData="M16.56,5.44L15.11,6.89C16.84,7.94 18,9.83 18,12A6,6 0 0,1 12,18A6,6 0 0,1 6,12C6,9.83 7.16,7.94 8.88,6.88L7.44,5.44C5.36,6.88 4,9.28 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,9.28 18.64,6.88 16.56,5.44M13,3H11V13H13" />
+</vector>
diff --git a/DeviceParts/res/drawable/recent.xml b/DeviceParts/res/drawable/recent.xml
new file mode 100644
index 0000000..e3935a3
--- /dev/null
+++ b/DeviceParts/res/drawable/recent.xml
@@ -0,0 +1,9 @@
+<!-- drawable/crop_square.xml -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="?android:attr/colorAccent">
+    <path android:fillColor="#000" android:pathData="M18,18H6V6H18M18,4H6A2,2 0 0,0 4,6V18A2,2 0 0,0 6,20H18A2,2 0 0,0 20,18V6C20,4.89 19.1,4 18,4Z" />
+</vector>
diff --git a/DeviceParts/res/layout/applist_preference_icon.xml b/DeviceParts/res/layout/applist_preference_icon.xml
new file mode 100644
index 0000000..1d6425d
--- /dev/null
+++ b/DeviceParts/res/layout/applist_preference_icon.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2006 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.
+-->
+
+<!-- Layout for a Preference in a PreferenceActivity. The
+     Preference is able to place a specific widget for its particular
+     type in the "widget_frame" layout. -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@android:id/widget_frame"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="?android:attr/listPreferredItemHeightSmall"
+    android:gravity="center_vertical"
+    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+    android:background="?android:attr/selectableItemBackground">
+
+    <ImageView
+        android:id="@+id/icon"
+        android:layout_width="48dp"
+        android:layout_height="48dp"
+        android:layout_marginEnd="12dip"
+        android:padding="2dp"
+        android:scaleType="centerInside"
+        android:layout_gravity="center" />
+
+    <RelativeLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="2dip"
+        android:layout_marginEnd="6dip"
+        android:layout_marginTop="6dip"
+        android:layout_marginBottom="6dip"
+        android:layout_weight="1">
+
+        <TextView android:id="@+id/title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:singleLine="true"
+            android:textAppearance="?android:attr/textAppearanceListItem"
+            android:textColor="?android:attr/textColorPrimary"
+            android:ellipsize="marquee"
+            android:fadingEdge="horizontal" />
+
+    </RelativeLayout>
+
+</LinearLayout>
diff --git a/DeviceParts/res/layout/preference_app_select.xml b/DeviceParts/res/layout/preference_app_select.xml
new file mode 100644
index 0000000..e1a92f9
--- /dev/null
+++ b/DeviceParts/res/layout/preference_app_select.xml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2016 The OmniROM Project
+
+  This program is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="?android:attr/listPreferredItemHeight"
+    android:gravity="center_vertical"
+    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+    android:background="?android:attr/selectableItemBackground"
+    android:clipToPadding="false"
+    android:orientation="horizontal" >
+
+    <LinearLayout
+        android:id="@+id/icon_container"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:gravity="start|center_vertical"
+        android:orientation="horizontal"
+        android:clipToPadding="false"
+        android:paddingEnd="12dp"
+        android:paddingTop="4dp"
+        android:paddingBottom="4dp">
+        <com.android.internal.widget.PreferenceImageView
+            android:id="@android:id/icon"
+            android:layout_width="48dp"
+            android:layout_height="48dp"
+            android:gravity="center"
+            android:scaleType="centerInside" />
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:gravity="center_vertical"
+        android:layout_weight="1" >
+
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginEnd="6dip"
+            android:layout_marginTop="10dip"
+            android:layout_marginBottom="6dip" >
+
+            <TextView android:id="@android:id/title"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:singleLine="true"
+                android:textAppearance="?android:attr/textAppearanceListItem"
+                android:ellipsize="marquee" />
+
+            <TextView android:id="@android:id/summary"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_below="@android:id/title"
+                android:layout_alignStart="@android:id/title"
+                android:textAppearance="?android:attr/textAppearanceListItemSecondary"
+                android:textColor="?android:attr/textColorSecondary"
+                android:maxLines="10"
+                android:ellipsize="end" />
+
+        </RelativeLayout>
+    </LinearLayout>
+</LinearLayout>
diff --git a/DeviceParts/res/layout/preference_dialog_applist.xml b/DeviceParts/res/layout/preference_dialog_applist.xml
new file mode 100644
index 0000000..38b4fd4
--- /dev/null
+++ b/DeviceParts/res/layout/preference_dialog_applist.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The OmniROM 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.
+-->
+ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:gravity="center_horizontal"
+        android:padding="24dip">
+
+     <ListView android:id="@+id/applist"
+               android:layout_width="match_parent"
+               android:layout_height="match_parent"/>
+
+</LinearLayout>
diff --git a/DeviceParts/res/layout/preference_seek_bar.xml b/DeviceParts/res/layout/preference_seek_bar.xml
new file mode 100644
index 0000000..89638f2
--- /dev/null
+++ b/DeviceParts/res/layout/preference_seek_bar.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--  Copyright (C) 2016 The OmniROM Project
+
+  This program is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="?android:attr/listPreferredItemHeight"
+    android:gravity="center_vertical"
+    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+    android:background="?android:attr/selectableItemBackground"
+    android:clipToPadding="false"
+    android:orientation="horizontal" >
+
+    <LinearLayout
+        android:id="@+id/icon_container"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:minWidth="56dp"
+        android:gravity="start|center_vertical"
+        android:orientation="horizontal"
+        android:clipToPadding="false"
+        android:paddingEnd="12dp"
+        android:paddingTop="4dp"
+        android:paddingBottom="4dp">
+        <com.android.internal.widget.PreferenceImageView
+            android:id="@android:id/icon"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:maxWidth="48dp"
+            android:maxHeight="48dp" />
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:gravity="center_vertical"
+        android:layout_weight="1" >
+
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginEnd="6dip"
+            android:layout_marginTop="10dip"
+            android:layout_marginBottom="6dip" >
+
+            <TextView android:id="@android:id/title"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:singleLine="true"
+                android:textAppearance="?android:attr/textAppearanceListItem"
+                android:ellipsize="marquee" />
+
+            <TextView android:id="@android:id/summary"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_below="@android:id/title"
+                android:layout_alignStart="@android:id/title"
+                android:textAppearance="?android:attr/textAppearanceListItemSecondary"
+                android:textColor="?android:attr/textColorSecondary"
+                android:maxLines="10"
+                android:ellipsize="end" />
+
+        </RelativeLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center_vertical"
+            android:orientation="horizontal"
+            android:layout_marginStart="10dip"
+            android:layout_marginEnd="6dip"
+            android:layout_marginTop="5dip"
+            android:layout_marginBottom="10dip">
+
+            <SeekBar android:id="@+id/seekbar"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:paddingLeft="5dp"
+                android:paddingRight="5dp" />
+
+        </LinearLayout>
+    </LinearLayout>
+</LinearLayout>
diff --git a/DeviceParts/res/values-af/strings.xml b/DeviceParts/res/values-af/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-af/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-am/strings.xml b/DeviceParts/res/values-am/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-am/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-ar/strings.xml b/DeviceParts/res/values-ar/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-ar/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-az-rAZ/strings.xml b/DeviceParts/res/values-az-rAZ/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-az-rAZ/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-bg/strings.xml b/DeviceParts/res/values-bg/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-bg/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-ca/strings.xml b/DeviceParts/res/values-ca/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-ca/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-cs/strings.xml b/DeviceParts/res/values-cs/strings.xml
new file mode 100644
index 0000000..f2a2277
--- /dev/null
+++ b/DeviceParts/res/values-cs/strings.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+  <string name="app_name">Oneplus 5</string>
+  <string name="category_gestures_title">Gesta zařízení</string>
+  <string name="fp_gesture_title">Gesta snímače otisků prstů</string>
+  <string name="category_vibrator">Vibrace</string>
+  <string name="vib_strength_title_head">Intenzita</string>
+  <string name="vib_strength_summary_head">Definujte intenzitu vibrací</string>
+  <string name="vib_test">Test</string>
+  <string name="advanced_settings">Rozšířené</string>
+  <string name="category_slider">Posuvník</string>
+  <string name="slider_mode_title">Režim posuvníku</string>
+  <string name="buttons_title">Tlačítka</string>
+  <string name="swap_back_recents_title">Prohodit tlačítka Nedávné a Zpět</string>
+  <string name="graphics_title">Grafika</string>
+  <string name="srgb_mode_title">Režim sRGB</string>
+  <string name="hbm_mode_title">Režim s vysokým jasem</string>
+  <string name="proxi_summary_head">Zkontrolujte senzor přiblížení pro zachycení gesta a senzor otisků prstů</string>
+  <string name="proxi_title_head">Kontrola senzoru přiblížení</string>
+  <string name="slider_mode_off">Vypnuto</string>
+  <string name="slider_mode_vibrate">Vibrace</string>
+  <string name="slider_mode_silent">Tichý</string>
+  <string name="slider_mode_priority">Pouze prioritní</string>
+  <string name="slider_mode_alarm">Pouze budíky</string>
+  <string name="slider_mode_dnd">Absolutní ticho</string>
+  <string name="slider_mode_title_top">Pozice nahoře</string>
+  <string name="slider_mode_title_center">Pozice uprostřed</string>
+  <string name="slider_mode_title_bottom">Pozice dole</string>
+  <string name="dci_mode_title">Režim širokého spektra barev</string>
+  <string name="Night_mode_title">Noční režim</string>
+  <string name="choose_app">Vybrat aplikaci</string>
+  <string name="category_double_swipe_gesture">Gesto II</string>
+  <string name="offscreen_gesture_title">Gesta při vypnuté obrazovce</string>
+  <string name="category_circle_gesture">Gesto O</string>
+  <string name="category_down_arrow_gesture">Gesto V</string>
+  <string name="category_up_arrow_gesture">Gesto A</string>
+  <string name="category_left_arrow_gesture">Gesto &lt;</string>
+  <string name="category_right_arrow_gesture">Gesto &gt;</string>
+  <string name="category_gestures_summary">Konfigurace akcí gest</string>
+  <string name="torch_entry">Svítilna</string>
+  <string name="disabled_entry">Zakázáno</string>
+  <string name="camera_entry">Fotoaparát</string>
+  <string name="music_play_entry">Přehrát / Pozastavit hudbu</string>
+  <string name="music_prev_entry">Předchozí skladba</string>
+  <string name="music_next_entry">Další skladba</string>
+  <string name="not_ready_summary">Řešení...</string>
+  <string name="resolve_failed_summary">Řešení aplikace selhalo</string>
+  <string name="category_down_swipe_gesture">Tah dolů</string>
+  <string name="category_up_swipe_gesture">Tah nahoru</string>
+  <string name="category_left_swipe_gesture">Tah doleva</string>
+  <string name="category_right_swipe_gesture">Tah doprava</string>
+  <string name="category_fp_down_swipe_gesture">Přejetí dolů otiskem prstu</string>
+  <string name="category_fp_up_swipe_gesture">Přejetí nahoru otiskem prstu</string>
+  <string name="category_fp_right_swipe_gesture">Přejetí vpravo otiskem prstu</string>
+  <string name="category_fp_left_swipe_gesture">Přejetí vlevo otiskem prstu</string>
+  <string name="fp_swipe_down_switch_summary_head">Výchozí oznámení gesta přejetí otiskem prstu dolů</string>
+  <string name="fp_swipe_down_switch_title_head">Gesto přejetí otiskem prstu dolů</string>
+  <string name="doze_category_title">Ambientní displej</string>
+  <string name="doze_category_summary">Probudí obrazovku při příjmu oznámění</string>
+  <string name="wave_check_summary">Pulzní oznámení při mávnutí rukou</string>
+  <string name="wave_check_title">Mávnutí rukou</string>
+  <string name="tilt_check_summary">Pulzní oznámení při zvednutí zařízení</string>
+  <string name="tilt_check_title">Vyzvednutí</string>
+  <string name="pocket_check_summary">Pulzní oznámení při vyjmutí z kapsy</string>
+  <string name="pocket_check_title">Kapsa</string>
+  <string name="ambient_display_enable">Ambientní display musí být povolen v nastavení obrazovky</string>
+  <string name="panel_category_title">Režimy panelu</string>
+  <string name="panel_category_summary">Režimy korekce barev panelu</string>
+  <string name="off_mode_title">Vyp.</string>
+  <string name="tile_panel_mode">Režimy panelu</string>
+  <string name="tile_hbm_mode">Režimy s vysokým jasem</string>
+  <string name="wake_entry">Probuzení</string>
+</resources>
diff --git a/DeviceParts/res/values-da/strings.xml b/DeviceParts/res/values-da/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-da/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-de/strings.xml b/DeviceParts/res/values-de/strings.xml
new file mode 100644
index 0000000..56b0e84
--- /dev/null
+++ b/DeviceParts/res/values-de/strings.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+  <string name="app_name">OnePlus 5</string>
+  <string name="category_gestures_title">Gerätegesten</string>
+  <string name="fp_gesture_title">Fingerabdruck-Scanner-Gesten</string>
+  <string name="category_vibrator">Vibrator</string>
+  <string name="vib_strength_title_head">Stärke</string>
+  <string name="vib_strength_summary_head">Vibrationsstärke festlegen</string>
+  <string name="vib_test">Test</string>
+  <string name="advanced_settings">Erweitert</string>
+  <string name="category_slider">Regler</string>
+  <string name="slider_mode_title">Regler-Modus</string>
+  <string name="buttons_title">Tasten</string>
+  <string name="swap_back_recents_title">Zurück- und Verlauf-Taste tauschen</string>
+  <string name="graphics_title">Grafik</string>
+  <string name="srgb_mode_title">sRGB-Modus</string>
+  <string name="hbm_mode_title">Modus für max. Helligkeit</string>
+  <string name="proxi_summary_head">Näherungssensor für die Nutzung von Gesten und des Fingerabdrucksensors überprüfen</string>
+  <string name="proxi_title_head">Näherungssensor überprüfen</string>
+  <string name="slider_mode_off">Aus</string>
+  <string name="slider_mode_vibrate">Vibrieren</string>
+  <string name="slider_mode_silent">Lautlos</string>
+  <string name="slider_mode_priority">Nur Wichtige</string>
+  <string name="slider_mode_alarm">Nur Wecker</string>
+  <string name="slider_mode_dnd">Vollständige Stille</string>
+  <string name="slider_mode_title_top">Position oben</string>
+  <string name="slider_mode_title_center">Position in der Mitte</string>
+  <string name="slider_mode_title_bottom">Position unten</string>
+  <string name="dci_mode_title">Breite Farbskala-Modus</string>
+  <string name="Night_mode_title">Nachtmodus</string>
+  <string name="choose_app">App wählen</string>
+  <string name="category_double_swipe_gesture">II-Geste</string>
+  <string name="offscreen_gesture_title">Gesten bei ausgeschaltetem Bildschirm</string>
+  <string name="category_circle_gesture">O-Geste</string>
+  <string name="category_down_arrow_gesture">V-Geste</string>
+  <string name="category_up_arrow_gesture">A-Geste</string>
+  <string name="category_left_arrow_gesture">&lt;-Geste</string>
+  <string name="category_right_arrow_gesture">&gt;-Geste</string>
+  <string name="category_gestures_summary">Gestenaktionen konfigurieren</string>
+  <string name="torch_entry">Taschenlampe</string>
+  <string name="disabled_entry">Deaktiviert</string>
+  <string name="camera_entry">Kamera</string>
+  <string name="music_play_entry">Musik abspielen / pausieren</string>
+  <string name="music_prev_entry">Vorheriger Titel</string>
+  <string name="music_next_entry">Nächster Titel</string>
+  <string name="not_ready_summary">Lösen...</string>
+  <string name="resolve_failed_summary">App lösen fehlgeschlagen</string>
+  <string name="category_down_swipe_gesture">Runter wischen</string>
+  <string name="category_up_swipe_gesture">Hoch wischen</string>
+  <string name="category_left_swipe_gesture">Links wischen</string>
+  <string name="category_right_swipe_gesture">Rechts wischen</string>
+  <string name="category_fp_down_swipe_gesture">Fingerabdruck nach unten wischen</string>
+  <string name="category_fp_up_swipe_gesture">Fingerabdruck nach oben wischen</string>
+  <string name="category_fp_right_swipe_gesture">Fingerabdruck nach rechts wischen</string>
+  <string name="category_fp_left_swipe_gesture">Fingerabdruck nach links wischen</string>
+  <string name="fp_swipe_down_switch_summary_head">Standard-Fingerabdruck-Benachrichtigungswischgeste nach unten</string>
+  <string name="fp_swipe_down_switch_title_head">Fingerabdruck nach unten Wischgeste</string>
+  <string name="doze_category_title">Inaktivitätsdisplay</string>
+  <string name="doze_category_summary">Das Display einschalten, wenn eine Benachrichtigung empfangen wurde</string>
+  <string name="wave_check_summary">Benachrichtigungen pulsieren, wenn mit der Hand gewunken wird</string>
+  <string name="wave_check_title">Winken</string>
+  <string name="tilt_check_summary">Benachrichtigungen pulsieren, wenn das Gerät hochgenommen wird</string>
+  <string name="tilt_check_title">Aufheben</string>
+  <string name="pocket_check_summary">Benachrichtigungen pulsiren, wenn das Gerät aus der Tasche genommen wird</string>
+  <string name="pocket_check_title">Tasche</string>
+  <string name="ambient_display_enable">Inaktivitätsdisplay muss in den Display-Einstellungen aktiviert sein</string>
+  <string name="panel_category_title">Panel-Modi</string>
+  <string name="panel_category_summary">Modi für die Farbkorrektur des Panel</string>
+  <string name="off_mode_title">Aus</string>
+  <string name="tile_panel_mode">Panel-Modi</string>
+  <string name="tile_hbm_mode">Modus für max. Helligkeit</string>
+  <string name="wake_entry">Aufwachen</string>
+</resources>
diff --git a/DeviceParts/res/values-el/strings.xml b/DeviceParts/res/values-el/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-el/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-es/strings.xml b/DeviceParts/res/values-es/strings.xml
new file mode 100644
index 0000000..3698a0f
--- /dev/null
+++ b/DeviceParts/res/values-es/strings.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+  <string name="category_vibrator">Vibrador</string>
+  <string name="vib_strength_title_head">Intensidad</string>
+  <string name="vib_strength_summary_head">Definir la intensidad del vibrador</string>
+  <string name="vib_test">Prueba</string>
+  <string name="advanced_settings">Avanzado</string>
+  <string name="category_slider">Control deslizante</string>
+  <string name="slider_mode_title">Modo de control deslizante</string>
+  <string name="buttons_title">Botones</string>
+  <string name="swap_back_recents_title">Cambiar hacia atrás y botón reciente</string>
+  <string name="graphics_title">Gráficos</string>
+  <string name="srgb_mode_title">modo sRGB</string>
+  <string name="hbm_mode_title">Modo de brillo alto</string>
+  <string name="proxi_summary_head">Compruebe el sensor de proximidad para el manejo de gesto y huella digital del sensor</string>
+  <string name="proxi_title_head">Control de proximidad</string>
+  <string name="slider_mode_off">Apagado</string>
+  <string name="slider_mode_vibrate">Vibrar</string>
+  <string name="slider_mode_silent">Silencio</string>
+  <string name="slider_mode_priority">Prioridad solamente</string>
+  <string name="slider_mode_alarm">Solo alarmas</string>
+  <string name="slider_mode_dnd">Silencio total</string>
+  <string name="slider_mode_title_top">Posición superior</string>
+  <string name="slider_mode_title_center">Posición central</string>
+  <string name="slider_mode_title_bottom">Posición del botón</string>
+  <string name="dci_mode_title">Modo de gama de colores amplia</string>
+  <string name="Night_mode_title">Modo nocturno</string>
+  <string name="choose_app">Elegir aplicación</string>
+  <string name="category_double_swipe_gesture">II gesto</string>
+  <string name="category_circle_gesture">O gesto</string>
+  <string name="category_down_arrow_gesture">V gesto</string>
+  <string name="category_up_arrow_gesture">A gesto</string>
+  <string name="category_left_arrow_gesture">&lt; gesto</string>
+  <string name="category_right_arrow_gesture">&gt; gesto</string>
+  <string name="torch_entry">Linterna</string>
+  <string name="disabled_entry">Deshabilitado</string>
+  <string name="camera_entry">Cámara</string>
+  <string name="music_play_entry">Reproducir / pausar música</string>
+  <string name="music_prev_entry">Pista anterior</string>
+  <string name="music_next_entry">Siguiente pista</string>
+  <string name="not_ready_summary">Resolviendo...</string>
+  <string name="resolve_failed_summary">Resolviendo error en la aplicación</string>
+  <string name="category_down_swipe_gesture">Deslizar abajo</string>
+  <string name="category_up_swipe_gesture">Deslizar arriba</string>
+  <string name="category_left_swipe_gesture">Deslizar a la izquierda</string>
+  <string name="category_right_swipe_gesture">Deslizar a la derecha</string>
+  <string name="doze_category_title">Pantalla ambiente</string>
+  <string name="doze_category_summary">Activar la pantalla cuando recibas notificaciones</string>
+  <string name="wave_check_summary">Notificaciones de pulso en la mano</string>
+  <string name="wave_check_title">Onda de mano</string>
+  <string name="tilt_check_summary">Notificaciones de pulso cuando se levante el dispositivo</string>
+  <string name="tilt_check_title">Recoger</string>
+  <string name="pocket_check_summary">Notificaciones de pulso al sacar del bolsillo</string>
+  <string name="pocket_check_title">Bolsillo</string>
+  <string name="ambient_display_enable">Visualización ambiental debe estar habilitada en configuración de pantalla</string>
+</resources>
diff --git a/DeviceParts/res/values-et/strings.xml b/DeviceParts/res/values-et/strings.xml
new file mode 100644
index 0000000..31bdfac
--- /dev/null
+++ b/DeviceParts/res/values-et/strings.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+  <string name="app_name">OnePlus 5</string>
+  <string name="category_gestures_title">Seadme žestid</string>
+  <string name="fp_gesture_title">Sõrmejäljelugeja žestid</string>
+  <string name="category_vibrator">Vibraator</string>
+  <string name="vib_strength_title_head">Tugevus</string>
+  <string name="vib_strength_summary_head">Määra vibraatori tugevus</string>
+  <string name="vib_test">Proovi</string>
+  <string name="advanced_settings">Täpsemad</string>
+  <string name="category_slider">Liugur</string>
+  <string name="slider_mode_title">Liuguri režiim</string>
+  <string name="buttons_title">Nupud</string>
+  <string name="swap_back_recents_title">Vaheta tagasi ja viimatiste nupud</string>
+  <string name="graphics_title">Graafika</string>
+  <string name="srgb_mode_title">sRGB-režiim</string>
+  <string name="hbm_mode_title">Kõrge heleduse režiim</string>
+  <string name="proxi_summary_head">Kontrolli lähedussensorit, haldamaks žeste ja sõrmejäljelugejat</string>
+  <string name="proxi_title_head">Läheduskontroll</string>
+  <string name="slider_mode_off">Väljas</string>
+  <string name="slider_mode_vibrate">Vibreeri</string>
+  <string name="slider_mode_silent">Hääletu</string>
+  <string name="slider_mode_priority">Ainult prioriteetsed</string>
+  <string name="slider_mode_alarm">Ainult äratused</string>
+  <string name="slider_mode_dnd">Täielik vaikus</string>
+  <string name="slider_mode_title_top">Ülapositsioon</string>
+  <string name="slider_mode_title_center">Keskpositsioon</string>
+  <string name="slider_mode_title_bottom">Allpositsioon</string>
+  <string name="dci_mode_title">Laia värviskaala režiim</string>
+  <string name="Night_mode_title">Öörežiim</string>
+  <string name="choose_app">Vali rakendus</string>
+  <string name="category_double_swipe_gesture">II žest</string>
+  <string name="offscreen_gesture_title">Väljas ekraani žestid</string>
+  <string name="category_circle_gesture">O žest</string>
+  <string name="category_down_arrow_gesture">V žest</string>
+  <string name="category_up_arrow_gesture">A žest</string>
+  <string name="category_left_arrow_gesture">&lt; žest</string>
+  <string name="category_right_arrow_gesture">&gt; žest</string>
+  <string name="category_gestures_summary">Seadista žestitegevusi</string>
+  <string name="torch_entry">Taskulamp</string>
+  <string name="disabled_entry">Keelatud</string>
+  <string name="camera_entry">Kaamera</string>
+  <string name="music_play_entry">Mängi/peata muusikat</string>
+  <string name="music_prev_entry">Eelmine lugu</string>
+  <string name="music_next_entry">Järgmine lugu</string>
+  <string name="not_ready_summary">Lahendan...</string>
+  <string name="resolve_failed_summary">Rakenduse lahendamine ebaõnnestus</string>
+  <string name="category_down_swipe_gesture">Alla libistamine</string>
+  <string name="category_up_swipe_gesture">Üles libistamine</string>
+  <string name="category_left_swipe_gesture">Vasakule libistamine</string>
+  <string name="category_right_swipe_gesture">Paremale libistamine</string>
+  <string name="category_fp_down_swipe_gesture">Sõrmejälje alla libistamine</string>
+  <string name="category_fp_up_swipe_gesture">Sõrmejälje üles libistamine</string>
+  <string name="category_fp_right_swipe_gesture">Sõrmejälje paremale libistamine</string>
+  <string name="category_fp_left_swipe_gesture">Sõrmejälje vasakule libistamine</string>
+  <string name="fp_swipe_down_switch_summary_head">Vaikimisi sõrmejälje teate alla libistamise žest</string>
+  <string name="fp_swipe_down_switch_title_head">Sõrmejälje alla libistamise žest</string>
+  <string name="doze_category_title">Ambientne ekraan</string>
+  <string name="doze_category_summary">Ärata ekraan, kui saad teateid</string>
+  <string name="wave_check_summary">Pulseeri teateid käeviibutusel</string>
+  <string name="wave_check_title">Käeviibutus</string>
+  <string name="tilt_check_summary">Pulseeri teateid, kui seade tõstetakse</string>
+  <string name="tilt_check_title">Tõstmine</string>
+  <string name="pocket_check_summary">Pulseeri teateid, kui seade võetakse taskust välja</string>
+  <string name="pocket_check_title">Tasku</string>
+  <string name="ambient_display_enable">Ambientne ekraan peab olema lubatud kuvaseadetes</string>
+  <string name="panel_category_title">Paneelirežiimid</string>
+  <string name="panel_category_summary">Režiimid paneeli värviparanduseks</string>
+  <string name="off_mode_title">Väljas</string>
+  <string name="tile_panel_mode">Paneelirežiimid</string>
+  <string name="tile_hbm_mode">Kõrge heleduse režiimid</string>
+  <string name="wake_entry">Ärkamine</string>
+</resources>
diff --git a/DeviceParts/res/values-fa/strings.xml b/DeviceParts/res/values-fa/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-fa/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-fi/strings.xml b/DeviceParts/res/values-fi/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-fi/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-fr/strings.xml b/DeviceParts/res/values-fr/strings.xml
new file mode 100644
index 0000000..7a5b916
--- /dev/null
+++ b/DeviceParts/res/values-fr/strings.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+  <string name="app_name">Oneplus 5</string>
+  <string name="category_gestures_title">Mouvements du terminal</string>
+  <string name="fp_gesture_title">Mouvement du lecteur d\'empreintes digitales</string>
+  <string name="category_vibrator">Vibreur</string>
+  <string name="vib_strength_title_head">Intensité</string>
+  <string name="vib_strength_summary_head">Définir l’intensité du vibreur</string>
+  <string name="vib_test">Tester</string>
+  <string name="advanced_settings">Paramètres avancés</string>
+  <string name="category_slider">Curseur</string>
+  <string name="slider_mode_title">Mode curseur</string>
+  <string name="buttons_title">Boutons</string>
+  <string name="swap_back_recents_title">Permuter le bouton retour et le bouton app. récents</string>
+  <string name="srgb_mode_title">mode sRGB</string>
+  <string name="proxi_summary_head">Vérifier le capteur de proximité pour les gestes tactiles et le capteur d\'empreinte</string>
+  <string name="proxi_title_head">Contrôle de proximité</string>
+  <string name="slider_mode_off">Désactivé</string>
+  <string name="slider_mode_vibrate">Vibreur</string>
+  <string name="slider_mode_silent">Mode silencieux</string>
+  <string name="slider_mode_dnd">Silence total</string>
+  <string name="Night_mode_title">Mode nuit</string>
+  <string name="choose_app">Choisir l\'app</string>
+  <string name="category_double_swipe_gesture">Geste II</string>
+  <string name="category_circle_gesture">Geste O</string>
+  <string name="category_down_arrow_gesture">Geste V</string>
+  <string name="category_up_arrow_gesture">Geste A</string>
+  <string name="torch_entry">Lampe de poche</string>
+  <string name="disabled_entry">Désactivé</string>
+  <string name="camera_entry">Appareil photo</string>
+  <string name="music_play_entry">Lecture / pause de la musique</string>
+  <string name="music_prev_entry">Piste précédente</string>
+  <string name="music_next_entry">Piste suivante</string>
+  <string name="category_down_swipe_gesture">Glissement vers le bas</string>
+  <string name="off_mode_title">Off</string>
+</resources>
diff --git a/DeviceParts/res/values-hi/strings.xml b/DeviceParts/res/values-hi/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-hi/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-hr/strings.xml b/DeviceParts/res/values-hr/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-hr/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-hu/strings.xml b/DeviceParts/res/values-hu/strings.xml
new file mode 100644
index 0000000..4c5dd0f
--- /dev/null
+++ b/DeviceParts/res/values-hu/strings.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+  <string name="app_name">Oneplus 5</string>
+  <string name="category_gestures_title">Eszköz gesztusok</string>
+  <string name="fp_gesture_title">Ujjlenyomat szkenner gesztusok</string>
+  <string name="category_vibrator">Rezgés</string>
+  <string name="vib_strength_title_head">Erősség</string>
+  <string name="vib_strength_summary_head">Rezgés erősségének meghatározása</string>
+  <string name="vib_test">Teszt</string>
+  <string name="advanced_settings">Haladó</string>
+  <string name="category_slider">Csúszka</string>
+  <string name="slider_mode_title">Csúszka üzemmód</string>
+  <string name="buttons_title">Gombok</string>
+  <string name="swap_back_recents_title">Vissza és előzmények gomb felcserélése</string>
+  <string name="graphics_title">Grafika</string>
+  <string name="srgb_mode_title">sRGB üzemmód</string>
+  <string name="hbm_mode_title">Nagy fényerő mód</string>
+  <string name="proxi_summary_head">Ellenőrizze a közelség érzékelőt a gesztus és az ujjlenyomat érzékelő kezeléséhez</string>
+  <string name="proxi_title_head">Közelség ellenőrzés</string>
+  <string name="slider_mode_off">Ki</string>
+  <string name="slider_mode_vibrate">Rezgés</string>
+  <string name="slider_mode_silent">Néma</string>
+  <string name="slider_mode_priority">Csak prioritásos</string>
+  <string name="slider_mode_alarm">Csak riasztás</string>
+  <string name="slider_mode_dnd">Teljes csend</string>
+  <string name="slider_mode_title_top">Felső pozíció</string>
+  <string name="slider_mode_title_center">Közép pozíció</string>
+  <string name="slider_mode_title_bottom">Alsó pozíció</string>
+  <string name="dci_mode_title">Széles színskála üzemmód</string>
+  <string name="Night_mode_title">Éjszakai mód</string>
+  <string name="choose_app">Válasszon alkalmazást</string>
+  <string name="category_double_swipe_gesture">II gesztus</string>
+  <string name="offscreen_gesture_title">Kikapcsolt képernyős gesztusok</string>
+  <string name="category_circle_gesture">O gesztus</string>
+  <string name="category_down_arrow_gesture">V gesztus</string>
+  <string name="category_up_arrow_gesture">A gesztus</string>
+  <string name="category_left_arrow_gesture">&lt; gesztus</string>
+  <string name="category_right_arrow_gesture">&gt; gesztus</string>
+  <string name="category_gestures_summary">Gesztus műveletek konfigurálása</string>
+  <string name="torch_entry">Zseblámpa</string>
+  <string name="disabled_entry">Kikapcsolva</string>
+  <string name="camera_entry">Kamera</string>
+  <string name="music_play_entry">Zene indítása / szüneteltetése</string>
+  <string name="music_prev_entry">Előző szám</string>
+  <string name="music_next_entry">Következő szám</string>
+  <string name="not_ready_summary">Elemzés...</string>
+  <string name="resolve_failed_summary">Alkalmazás elemzése sikertelen</string>
+  <string name="category_down_swipe_gesture">Lefelé húzás</string>
+  <string name="category_up_swipe_gesture">Felfelé húzás</string>
+  <string name="category_left_swipe_gesture">Balra húzás</string>
+  <string name="category_right_swipe_gesture">Jobbra húzás</string>
+  <string name="category_fp_down_swipe_gesture">Ujjlenyomat lefelé csúsztatás</string>
+  <string name="category_fp_up_swipe_gesture">Ujjlenyomat felfelé csúsztatás</string>
+  <string name="category_fp_right_swipe_gesture">Ujjlenyomat jobbra csúsztatás</string>
+  <string name="category_fp_left_swipe_gesture">Ujjlenyomat balra csúsztatás</string>
+  <string name="fp_swipe_down_switch_summary_head">Alapértelmezett ujjlenyomat értesítés lefelé csúsztatás gesztushoz</string>
+  <string name="fp_swipe_down_switch_title_head">Ujjlenyomat lefelé csúsztatás gesztus</string>
+  <string name="doze_category_title">Környezeti kijelző</string>
+  <string name="doze_category_summary">Képernyő felébresztése értesítés esetén</string>
+  <string name="wave_check_summary">Értesítések pulzálása lebegő simításkor</string>
+  <string name="wave_check_title">Lebegő simítás</string>
+  <string name="tilt_check_summary">Értesítések pulzálása készülék felemelésekor</string>
+  <string name="tilt_check_title">Felemelés</string>
+  <string name="pocket_check_summary">Értesítések pulzálása zsebből való kivétel után</string>
+  <string name="pocket_check_title">Zseb</string>
+  <string name="ambient_display_enable">A környezeti kijelzőt engedélyezni kell a képernyő beállításokban</string>
+  <string name="panel_category_title">Panel módok</string>
+  <string name="panel_category_summary">Panel színkorrekciós módjai</string>
+  <string name="off_mode_title">Ki</string>
+  <string name="tile_panel_mode">Panel módok</string>
+  <string name="tile_hbm_mode">Nagy fényerő módok</string>
+  <string name="wake_entry">Ébresztés</string>
+</resources>
diff --git a/DeviceParts/res/values-hy/strings.xml b/DeviceParts/res/values-hy/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-hy/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-in/strings.xml b/DeviceParts/res/values-in/strings.xml
new file mode 100644
index 0000000..5193a74
--- /dev/null
+++ b/DeviceParts/res/values-in/strings.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+  <string name="app_name">Oneplus 5</string>
+  <string name="category_vibrator">Vibrator</string>
+  <string name="vib_strength_title_head">Kekuatan</string>
+  <string name="vib_strength_summary_head">Tentukan kekuatan vibrator</string>
+  <string name="vib_test">Uji</string>
+  <string name="advanced_settings">Maju</string>
+  <string name="category_slider">Slider</string>
+  <string name="slider_mode_title">Mode slider</string>
+  <string name="buttons_title">Tombol</string>
+  <string name="swap_back_recents_title">Tukar kembali dan tekan tombol</string>
+  <string name="graphics_title">Grafis</string>
+  <string name="srgb_mode_title">mode sRGB</string>
+  <string name="hbm_mode_title">Mode kecerahan tinggi</string>
+  <string name="proxi_summary_head">Periksa sensor jarak untuk penanganan isyarat dan sensor sidik jari</string>
+  <string name="proxi_title_head">Cek jarak</string>
+  <string name="slider_mode_off">Mati</string>
+  <string name="slider_mode_vibrate">Bergetar</string>
+  <string name="slider_mode_silent">Diam</string>
+  <string name="slider_mode_priority">Hanya prioritas</string>
+  <string name="slider_mode_alarm">Hanya alarm</string>
+  <string name="slider_mode_dnd">Keheningan total</string>
+  <string name="slider_mode_title_top">Posisi teratas</string>
+  <string name="slider_mode_title_center">Posisi pusat</string>
+  <string name="slider_mode_title_bottom">Posisi bawah</string>
+  <string name="dci_mode_title">Mode gammut warna yang lebar</string>
+  <string name="Night_mode_title">Mode malam</string>
+  <string name="choose_app">Pilih aplikasi</string>
+  <string name="category_double_swipe_gesture">Gerakan kedua</string>
+  <string name="category_circle_gesture">O isyarat</string>
+  <string name="category_down_arrow_gesture">Gerakan V</string>
+  <string name="category_up_arrow_gesture">Sebuah isyarat</string>
+  <string name="category_left_arrow_gesture">&lt; sikap</string>
+  <string name="category_right_arrow_gesture">&gt; sikap</string>
+  <string name="torch_entry">Senter</string>
+  <string name="disabled_entry">Cacat</string>
+  <string name="camera_entry">Kamera</string>
+  <string name="music_play_entry">Putar / jeda musik</string>
+  <string name="music_prev_entry">Lintasan sebelumnya</string>
+  <string name="music_next_entry">Lagu berikutnya</string>
+  <string name="not_ready_summary">Menyelesaikan...</string>
+  <string name="resolve_failed_summary">Gagal menyelesaikan aplikasi</string>
+  <string name="category_down_swipe_gesture">Gesek ke bawah</string>
+  <string name="category_up_swipe_gesture">Gesek</string>
+  <string name="category_left_swipe_gesture">Gesek ke kiri</string>
+  <string name="category_right_swipe_gesture">Gesek kanan</string>
+  <string name="doze_category_title">Tampilan sekitar</string>
+  <string name="doze_category_summary">Nyalakan layar saat Anda menerima notifikasi</string>
+  <string name="wave_check_summary">Kedipkan pemberitahuan pada gelombang tangan</string>
+  <string name="wave_check_title">Gelombang tangan</string>
+  <string name="tilt_check_summary">Kesipkan pemberitahuan saat perangkat diambil</string>
+  <string name="tilt_check_title">Angkat</string>
+  <string name="pocket_check_summary">Kedipkan pemberitahuan untuk dihapus dari saku</string>
+  <string name="pocket_check_title">Saku</string>
+  <string name="ambient_display_enable">Tampilan sekeliling harus diaktifkan pada pengaturan tampilan</string>
+</resources>
diff --git a/DeviceParts/res/values-it/strings.xml b/DeviceParts/res/values-it/strings.xml
new file mode 100644
index 0000000..eec8d16
--- /dev/null
+++ b/DeviceParts/res/values-it/strings.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+  <string name="app_name">Oneplus 5</string>
+  <string name="category_gestures_title">Gesture del dispositivo</string>
+  <string name="fp_gesture_title">Gesture sul sensore d\'impronte</string>
+  <string name="category_vibrator">Vibrazione</string>
+  <string name="vib_strength_title_head">Intensità</string>
+  <string name="vib_strength_summary_head">Definisci l\'intensità della vibrazione</string>
+  <string name="vib_test">Prova</string>
+  <string name="advanced_settings">Avanzato</string>
+  <string name="category_slider">Slider</string>
+  <string name="slider_mode_title">Modalità slider</string>
+  <string name="buttons_title">Pulsanti</string>
+  <string name="swap_back_recents_title">Scambia il pulsante indietro e recenti</string>
+  <string name="graphics_title">Grafica</string>
+  <string name="srgb_mode_title">Modalità sRGB</string>
+  <string name="hbm_mode_title">Modalità alta luminosità</string>
+  <string name="proxi_summary_head">Controlla il sensore di prossimità per eventuali gesture e il sensore di impronte digitali</string>
+  <string name="proxi_title_head">Controllo di prossimità</string>
+  <string name="slider_mode_off">Disattivo</string>
+  <string name="slider_mode_vibrate">Vibrazione</string>
+  <string name="slider_mode_silent">Silenzioso</string>
+  <string name="slider_mode_priority">Solo con priorità</string>
+  <string name="slider_mode_alarm">Solo sveglie</string>
+  <string name="slider_mode_dnd">Silenzio totale</string>
+  <string name="slider_mode_title_top">Posizione superiore</string>
+  <string name="slider_mode_title_center">Posizione centrale</string>
+  <string name="slider_mode_title_bottom">Posizione inferiore</string>
+  <string name="dci_mode_title">Modalità di colore larga gammut</string>
+  <string name="Night_mode_title">Modalità notte</string>
+  <string name="choose_app">Scegli app</string>
+  <string name="category_double_swipe_gesture">Gesture doppio swipe</string>
+  <string name="offscreen_gesture_title">Gesture a schermo spento</string>
+  <string name="category_circle_gesture">Gesture disegna un cerchio</string>
+  <string name="category_down_arrow_gesture">Gesture disegna una V</string>
+  <string name="category_up_arrow_gesture">Gesture disegna una A</string>
+  <string name="category_left_arrow_gesture">&lt; gesture</string>
+  <string name="category_right_arrow_gesture">&gt; gesture</string>
+  <string name="category_gestures_summary">Configura le azioni delle gesture</string>
+  <string name="torch_entry">Torcia</string>
+  <string name="disabled_entry">Disabilitato</string>
+  <string name="camera_entry">Fotocamera</string>
+  <string name="music_play_entry">Riproduci o metti in pausa la musica</string>
+  <string name="music_prev_entry">Brano precedente</string>
+  <string name="music_next_entry">Brano successivo</string>
+  <string name="not_ready_summary">Risolvendo...</string>
+  <string name="resolve_failed_summary">Risoluzione di app non riuscita</string>
+  <string name="category_down_swipe_gesture">Swipe in basso</string>
+  <string name="category_up_swipe_gesture">Swipe in alto</string>
+  <string name="category_left_swipe_gesture">Swipe a sinistra</string>
+  <string name="category_right_swipe_gesture">Swipe a destra</string>
+  <string name="category_fp_down_swipe_gesture">Scorrimento verso il basso</string>
+  <string name="category_fp_up_swipe_gesture">Scorrimento verso l\'alto</string>
+  <string name="category_fp_right_swipe_gesture">Scorrimento verso destra</string>
+  <string name="category_fp_left_swipe_gesture">Scorrimento verso sinistra</string>
+  <string name="fp_swipe_down_switch_summary_head">Scorrimento verso il basso per le notifiche</string>
+  <string name="fp_swipe_down_switch_title_head">Scorrimento verso il basso</string>
+  <string name="doze_category_title">Display ambient</string>
+  <string name="doze_category_summary">Riattiva lo schermo quando ricevi le notifiche</string>
+  <string name="wave_check_summary">Mostra le notifiche al passaggio della mano</string>
+  <string name="wave_check_title">Movimento della mano</string>
+  <string name="tilt_check_summary">Mostra le notifiche al sollevamento</string>
+  <string name="tilt_check_title">Sollevamento</string>
+  <string name="pocket_check_summary">Mostra le notifiche quando togli dalla tasca</string>
+  <string name="pocket_check_title">Tasca</string>
+  <string name="ambient_display_enable">Il display ambient deve essere abilitato dalle impostazioni del display</string>
+  <string name="panel_category_title">Modalità schermo</string>
+  <string name="panel_category_summary">Modalità per la correzione dei colori</string>
+  <string name="off_mode_title">Disattivo</string>
+  <string name="tile_panel_mode">Modalità schermo</string>
+  <string name="tile_hbm_mode">Modalità alta luminosità</string>
+  <string name="wake_entry">Sveglia</string>
+</resources>
diff --git a/DeviceParts/res/values-iw/strings.xml b/DeviceParts/res/values-iw/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-iw/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-ja/strings.xml b/DeviceParts/res/values-ja/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-ja/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-ka/strings.xml b/DeviceParts/res/values-ka/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-ka/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-km/strings.xml b/DeviceParts/res/values-km/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-km/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-ko/strings.xml b/DeviceParts/res/values-ko/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-ko/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-lo-rLA/strings.xml b/DeviceParts/res/values-lo-rLA/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-lo-rLA/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-lt/strings.xml b/DeviceParts/res/values-lt/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-lt/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-lv/strings.xml b/DeviceParts/res/values-lv/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-lv/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-mn/strings.xml b/DeviceParts/res/values-mn/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-mn/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-ms/strings.xml b/DeviceParts/res/values-ms/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-ms/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-nb/strings.xml b/DeviceParts/res/values-nb/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-nb/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-ne/strings.xml b/DeviceParts/res/values-ne/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-ne/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-nl/strings.xml b/DeviceParts/res/values-nl/strings.xml
new file mode 100644
index 0000000..b4925c3
--- /dev/null
+++ b/DeviceParts/res/values-nl/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+  <string name="category_vibrator">Vibrator</string>
+  <string name="vib_strength_title_head">Sterkte</string>
+  <string name="vib_strength_summary_head">De sterkte van de vibrator aanpassen</string>
+  <string name="vib_test">Test</string>
+  <string name="advanced_settings">Geavanceerd</string>
+  <string name="buttons_title">Knoppen</string>
+</resources>
diff --git a/DeviceParts/res/values-pl/strings.xml b/DeviceParts/res/values-pl/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-pl/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-pt-rBR/strings.xml b/DeviceParts/res/values-pt-rBR/strings.xml
new file mode 100644
index 0000000..ce304d6
--- /dev/null
+++ b/DeviceParts/res/values-pt-rBR/strings.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+  <string name="category_vibrator">Vibração</string>
+  <string name="vib_strength_title_head">Intensidade</string>
+  <string name="vib_strength_summary_head">Definir a intensidade da vibração</string>
+  <string name="vib_test">Testar</string>
+  <string name="advanced_settings">Avançado</string>
+  <string name="category_slider">Interruptor</string>
+  <string name="slider_mode_title">Modo do interruptor</string>
+  <string name="buttons_title">Botões</string>
+  <string name="swap_back_recents_title">Inverter botões \"voltar\" e \"aplicativos recentes\"</string>
+  <string name="graphics_title">Gráficos</string>
+  <string name="srgb_mode_title">Modo sRGB</string>
+  <string name="hbm_mode_title">Modo de alto brilho</string>
+  <string name="proxi_summary_head">Verifique o sensor de proximidade para manusear o gesto e sensor de impressão digital</string>
+  <string name="proxi_title_head">Verificação de proximidade</string>
+  <string name="slider_mode_off">Desligado</string>
+  <string name="slider_mode_vibrate">Vibrar</string>
+  <string name="slider_mode_silent">Silencioso</string>
+  <string name="slider_mode_priority">Prioridade apenas</string>
+  <string name="slider_mode_alarm">Somente alarmes</string>
+  <string name="slider_mode_dnd">Silêncio total</string>
+  <string name="slider_mode_title_top">Posição superior</string>
+  <string name="slider_mode_title_center">Posição central</string>
+  <string name="slider_mode_title_bottom">Posição inferior</string>
+  <string name="choose_app">Selecionar aplicativo</string>
+  <string name="category_up_arrow_gesture">Gesto A</string>
+  <string name="category_left_arrow_gesture">Gesto &lt;</string>
+  <string name="category_right_arrow_gesture">Gesto &gt;</string>
+</resources>
diff --git a/DeviceParts/res/values-pt-rPT/strings.xml b/DeviceParts/res/values-pt-rPT/strings.xml
new file mode 100644
index 0000000..3e3ca2a
--- /dev/null
+++ b/DeviceParts/res/values-pt-rPT/strings.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+  <string name="app_name">Oneplus 5</string>
+  <string name="category_gestures_title">Gestos de dispositivo</string>
+  <string name="fp_gesture_title">Gestos de scanner de impressão digital</string>
+  <string name="category_vibrator">Vibração</string>
+  <string name="vib_strength_title_head">Intensidade</string>
+  <string name="vib_strength_summary_head">Definir a intensidade da vibração</string>
+  <string name="vib_test">Testar</string>
+  <string name="advanced_settings">Preferências Avançadas</string>
+  <string name="category_slider">Menu deslizante</string>
+  <string name="slider_mode_title">Modo menu deslizante</string>
+  <string name="buttons_title">Botões</string>
+  <string name="swap_back_recents_title">Trocar o botão de voltar e recentes</string>
+  <string name="graphics_title">Gráficos</string>
+  <string name="srgb_mode_title">modo sRGB</string>
+  <string name="hbm_mode_title">Modo de brilho alto</string>
+  <string name="proxi_summary_head">Verifique o sensor de proximidade para a manipulação de gesto e sensor de impressão digital</string>
+  <string name="proxi_title_head">Verificação de proximidade</string>
+  <string name="slider_mode_off">Desligado</string>
+  <string name="slider_mode_vibrate">Vibração</string>
+  <string name="slider_mode_silent">Silêncio</string>
+  <string name="slider_mode_priority">Apenas prioridade</string>
+  <string name="slider_mode_alarm">Só alarmes</string>
+  <string name="slider_mode_dnd">Silêncio total</string>
+  <string name="slider_mode_title_top">Posição superior</string>
+  <string name="slider_mode_title_center">Posição central</string>
+  <string name="slider_mode_title_bottom">Posição inferior</string>
+  <string name="dci_mode_title">Modo de cor (DCI-P3)</string>
+  <string name="Night_mode_title">Modo nocturno</string>
+  <string name="choose_app">Escolher aplicação</string>
+  <string name="category_double_swipe_gesture">II gesto</string>
+  <string name="offscreen_gesture_title">Gestos com ecrã desligado</string>
+  <string name="category_circle_gesture">O gesto</string>
+  <string name="category_down_arrow_gesture">V gesto</string>
+  <string name="category_up_arrow_gesture">A gesto</string>
+  <string name="category_left_arrow_gesture">&lt; gesto</string>
+  <string name="category_right_arrow_gesture">&gt; gesto</string>
+  <string name="category_gestures_summary">Configurar ações de gesto</string>
+  <string name="torch_entry">Lanterna</string>
+  <string name="disabled_entry">Desligado</string>
+  <string name="camera_entry">Câmara</string>
+  <string name="music_play_entry">Reproduzir/pausar música</string>
+  <string name="music_prev_entry">Faixa anterior</string>
+  <string name="music_next_entry">Próxima faixa</string>
+  <string name="not_ready_summary">A resolver...</string>
+  <string name="resolve_failed_summary">Resolver aplicação falhou</string>
+  <string name="category_down_swipe_gesture">Deslizar para baixo</string>
+  <string name="category_up_swipe_gesture">Deslizar para cima</string>
+  <string name="category_left_swipe_gesture">Deslizar para a esquerda</string>
+  <string name="category_right_swipe_gesture">Deslizar para a direita</string>
+  <string name="category_fp_down_swipe_gesture">Deslizar para baixo na impressão digital</string>
+  <string name="category_fp_up_swipe_gesture">Deslizar para cima na impressão digital</string>
+  <string name="category_fp_right_swipe_gesture">Deslizar para a direita na impressão digital</string>
+  <string name="category_fp_left_swipe_gesture">Deslizar para a esquerda na impressão digital</string>
+  <string name="fp_swipe_down_switch_summary_head">Notificação padrão de impressões digitais ao deslizar para baixo</string>
+  <string name="fp_swipe_down_switch_title_head">Gesto deslizante para baixo na impressão digital</string>
+  <string name="doze_category_title">Ambient Display</string>
+  <string name="doze_category_summary">Acordar o ecrã quando receber notificações</string>
+  <string name="wave_check_summary">Mostrar notificações ao passar a mão</string>
+  <string name="wave_check_title">Passar a mão</string>
+  <string name="tilt_check_summary">Mostrar notificações quando se levanta o dispositivo</string>
+  <string name="tilt_check_title">Levantamento</string>
+  <string name="pocket_check_summary">Mostrar notificações ao retirar do bolso</string>
+  <string name="pocket_check_title">Bolso</string>
+  <string name="ambient_display_enable">Ambient display deve ser habilitada nas configurações de exibição</string>
+  <string name="panel_category_title">Modos do painel</string>
+  <string name="panel_category_summary">Correcção de côr para os modos do painel</string>
+  <string name="off_mode_title">Desligada</string>
+  <string name="tile_panel_mode">Modos do painel</string>
+  <string name="tile_hbm_mode">Modos de luminosidade alta</string>
+  <string name="wake_entry">Acordar</string>
+</resources>
diff --git a/DeviceParts/res/values-rm/strings.xml b/DeviceParts/res/values-rm/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-rm/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-ro/strings.xml b/DeviceParts/res/values-ro/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-ro/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-ru/strings.xml b/DeviceParts/res/values-ru/strings.xml
new file mode 100644
index 0000000..f1cc45e
--- /dev/null
+++ b/DeviceParts/res/values-ru/strings.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+  <string name="app_name">OnePlus 5</string>
+  <string name="category_gestures_title">Жесты устройства</string>
+  <string name="fp_gesture_title">Жесты сканера отпечатков пальцев</string>
+  <string name="category_vibrator">Вибрация</string>
+  <string name="vib_strength_title_head">Сила</string>
+  <string name="vib_strength_summary_head">Настройте силу вибрации</string>
+  <string name="vib_test">Проверить</string>
+  <string name="advanced_settings">Дополнительно</string>
+  <string name="category_slider">Ползунок</string>
+  <string name="slider_mode_title">Режим ползунка</string>
+  <string name="buttons_title">Кнопки</string>
+  <string name="swap_back_recents_title">Поменять местами кнопки \"Назад\" и \"Недавние\"</string>
+  <string name="graphics_title">Оформление</string>
+  <string name="srgb_mode_title">Режим sRGB</string>
+  <string name="hbm_mode_title">Режим повышенной яркости</string>
+  <string name="proxi_summary_head">Проверить датчики жестов и отпечатков пальцев</string>
+  <string name="proxi_title_head">Проверка датчика приближения</string>
+  <string name="slider_mode_off">Выкл.</string>
+  <string name="slider_mode_vibrate">Вибрация</string>
+  <string name="slider_mode_silent">Без звука</string>
+  <string name="slider_mode_priority">Только важные</string>
+  <string name="slider_mode_alarm">Только будильники</string>
+  <string name="slider_mode_dnd">Полная тишина</string>
+  <string name="slider_mode_title_top">Верхнее положение</string>
+  <string name="slider_mode_title_center">Среднее положение</string>
+  <string name="slider_mode_title_bottom">Нижнее положение</string>
+  <string name="dci_mode_title">Режим широкой цветовой гаммы</string>
+  <string name="Night_mode_title">Ночной режим</string>
+  <string name="choose_app">Выбрать приложение</string>
+  <string name="category_double_swipe_gesture">Жест ll</string>
+  <string name="offscreen_gesture_title">Жесты на выключенном экране</string>
+  <string name="category_circle_gesture">Жест O</string>
+  <string name="category_down_arrow_gesture">Жест V</string>
+  <string name="category_up_arrow_gesture">Жест A</string>
+  <string name="category_left_arrow_gesture">Жест &lt;</string>
+  <string name="category_right_arrow_gesture">Жест &gt;</string>
+  <string name="category_gestures_summary">Настроить действия жестов</string>
+  <string name="torch_entry">Фонарик</string>
+  <string name="disabled_entry">Выключено</string>
+  <string name="camera_entry">Камера</string>
+  <string name="music_play_entry">Воспр. или остановка музыки</string>
+  <string name="music_prev_entry">Предыдущий трек</string>
+  <string name="music_next_entry">Следующий трек</string>
+  <string name="not_ready_summary">Получение разрешения...</string>
+  <string name="resolve_failed_summary">Ошибка получения разрешения приложения</string>
+  <string name="category_down_swipe_gesture">Провести вниз</string>
+  <string name="category_up_swipe_gesture">Провести вверх</string>
+  <string name="category_left_swipe_gesture">Провести влево</string>
+  <string name="category_right_swipe_gesture">Провести вправо</string>
+  <string name="category_fp_down_swipe_gesture">Отпечаток пальца вниз</string>
+  <string name="category_fp_up_swipe_gesture">Отпечаток пальца вверх</string>
+  <string name="category_fp_right_swipe_gesture">Отпечаток пальца вправо</string>
+  <string name="category_fp_left_swipe_gesture">Отпечаток пальца влево</string>
+  <string name="fp_swipe_down_switch_summary_head">Уведомление по умолчанию при свайпе вниз по сканеру отпечатков пальцев</string>
+  <string name="fp_swipe_down_switch_title_head">Свайп вниз по сканеру отпечатков пальцев</string>
+  <string name="doze_category_title">Активный экран</string>
+  <string name="doze_category_summary">Включение экрана при получении уведомлений</string>
+  <string name="wave_check_summary">Пульсирующие уведомления при проведении рукой над телефоном</string>
+  <string name="wave_check_title">Провести рукой над телефоном</string>
+  <string name="tilt_check_summary">Пульсирующие уведомления при поднятии телефона</string>
+  <string name="tilt_check_title">Поднятие</string>
+  <string name="pocket_check_summary">Пульсирующие уведомления при извлечении из кармана</string>
+  <string name="pocket_check_title">Карман</string>
+  <string name="ambient_display_enable">Активный экран должен быть включен в настройках экрана</string>
+  <string name="panel_category_title">Режимы панели</string>
+  <string name="panel_category_summary">Режимы цветокоррекции панели</string>
+  <string name="off_mode_title">Выкл.</string>
+  <string name="tile_panel_mode">Режимы панели</string>
+  <string name="tile_hbm_mode">Режимы повышенной яркости</string>
+  <string name="wake_entry">Пробуждение</string>
+</resources>
diff --git a/DeviceParts/res/values-si/strings.xml b/DeviceParts/res/values-si/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-si/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-sk/strings.xml b/DeviceParts/res/values-sk/strings.xml
new file mode 100644
index 0000000..014c0f6
--- /dev/null
+++ b/DeviceParts/res/values-sk/strings.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+  <string name="app_name">Oneplus 5</string>
+  <string name="category_gestures_title">Gestá zariadenia</string>
+  <string name="fp_gesture_title">Gestá skeneru odtlačkov prstov</string>
+  <string name="category_vibrator">Vibrovanie</string>
+  <string name="vib_strength_title_head">Sila</string>
+  <string name="vib_strength_summary_head">Určenie sily vibrovania</string>
+  <string name="vib_test">Skúška</string>
+  <string name="advanced_settings">Rozšírené</string>
+  <string name="category_slider">Posuvník</string>
+  <string name="slider_mode_title">Režim posuvníka</string>
+  <string name="buttons_title">Tlačidlá</string>
+  <string name="swap_back_recents_title">Prehodiť tlačidlá späť a nedávne</string>
+  <string name="graphics_title">Grafika</string>
+  <string name="srgb_mode_title">Režim sRGB</string>
+  <string name="hbm_mode_title">Režim vysokého jasu</string>
+  <string name="proxi_summary_head">Kontrola senzoru priblíženia na ovládanie gest a snímača odtlačkov prstov</string>
+  <string name="proxi_title_head">Kontrola senzora priblíženia</string>
+  <string name="slider_mode_off">Vypnutý</string>
+  <string name="slider_mode_vibrate">Vibrovanie</string>
+  <string name="slider_mode_silent">Tichý</string>
+  <string name="slider_mode_priority">Iba prioritné</string>
+  <string name="slider_mode_alarm">Iba budíky</string>
+  <string name="slider_mode_dnd">Úplné ticho</string>
+  <string name="slider_mode_title_top">Horná pozícia</string>
+  <string name="slider_mode_title_center">Stredná pozícia</string>
+  <string name="slider_mode_title_bottom">Spodná pozícia</string>
+  <string name="dci_mode_title">Režim širokého spektra farieb</string>
+  <string name="Night_mode_title">Nočný režim</string>
+  <string name="choose_app">Zvoliť aplikáciu</string>
+  <string name="category_double_swipe_gesture">Gesto II</string>
+  <string name="offscreen_gesture_title">Gestá pri vypnutej obrazovke</string>
+  <string name="category_circle_gesture">Gesto O</string>
+  <string name="category_down_arrow_gesture">Gesto V</string>
+  <string name="category_up_arrow_gesture">Gesto A</string>
+  <string name="category_left_arrow_gesture">Gesto &lt;</string>
+  <string name="category_right_arrow_gesture">Gesto &gt;</string>
+  <string name="category_gestures_summary">Konfigurácia akcií gest</string>
+  <string name="torch_entry">Baterka</string>
+  <string name="disabled_entry">Vypnuté</string>
+  <string name="camera_entry">Fotoaparát</string>
+  <string name="music_play_entry">Prehrávanie / pozastavenie hudby</string>
+  <string name="music_prev_entry">Predchádzajúca skladba</string>
+  <string name="music_next_entry">Ďalšia skladba</string>
+  <string name="not_ready_summary">Riešenie...</string>
+  <string name="resolve_failed_summary">Riešenie aplikácie zlyhalo</string>
+  <string name="category_down_swipe_gesture">Potiahnutie dolu</string>
+  <string name="category_up_swipe_gesture">Potiahnutie nahor</string>
+  <string name="category_left_swipe_gesture">Potiahnutie vľavo</string>
+  <string name="category_right_swipe_gesture">Potiahnutie vpravo</string>
+  <string name="category_fp_down_swipe_gesture">Odtlačok prsta potiahnutie dolu</string>
+  <string name="category_fp_up_swipe_gesture">Odtlačok prsta potiahnutie nahor</string>
+  <string name="category_fp_right_swipe_gesture">Odtlačok prsta potiahnutie vpravo</string>
+  <string name="category_fp_left_swipe_gesture">Odtlačok prsta potiahnutie vľavo</string>
+  <string name="fp_swipe_down_switch_summary_head">Predvolené upozornenie odtlačku prsta pri potiahnutí prstom nadol</string>
+  <string name="fp_swipe_down_switch_title_head">Odtlačok prsta gesto potiahnutia dolu</string>
+  <string name="doze_category_title">Ambientny displej</string>
+  <string name="doze_category_summary">Prebudiť obrazovku po prijatí upozornenia</string>
+  <string name="wave_check_summary">Zobraziť upozornenia pri mávnutí rukou</string>
+  <string name="wave_check_title">Mávnutie rukou</string>
+  <string name="tilt_check_summary">Zobraziť upozornenia pri zdvihnutí zariadenia</string>
+  <string name="tilt_check_title">Zdvihnutie zariadenia</string>
+  <string name="pocket_check_summary">Zobraziť upozornenia pri vybratí zariadenia z vrecka</string>
+  <string name="pocket_check_title">Vrecko</string>
+  <string name="ambient_display_enable">V nastaveniach obrazovky musí byť zapnutý Ambientny displej</string>
+  <string name="panel_category_title">Režimy panelu</string>
+  <string name="panel_category_summary">Režimy korekcie farieb panelu</string>
+  <string name="off_mode_title">Vyp.</string>
+  <string name="tile_panel_mode">Režimy panelu</string>
+  <string name="tile_hbm_mode">Režimy vysokého jasu</string>
+  <string name="wake_entry">Prebudenie</string>
+</resources>
diff --git a/DeviceParts/res/values-sl/strings.xml b/DeviceParts/res/values-sl/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-sl/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-sr/strings.xml b/DeviceParts/res/values-sr/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-sr/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-sv/strings.xml b/DeviceParts/res/values-sv/strings.xml
new file mode 100644
index 0000000..63a1c69
--- /dev/null
+++ b/DeviceParts/res/values-sv/strings.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+  <string name="category_vibrator">Vibrator</string>
+  <string name="vib_strength_title_head">Styrka</string>
+  <string name="vib_strength_summary_head">Definiera styrkan på vibratorn</string>
+  <string name="vib_test">Test</string>
+  <string name="advanced_settings">Avancerad</string>
+  <string name="buttons_title">Knappar</string>
+  <string name="swap_back_recents_title">Växla tillbaka och senaste-knappar</string>
+  <string name="graphics_title">Grafik</string>
+  <string name="srgb_mode_title">sRGB-läge</string>
+  <string name="slider_mode_off">Av</string>
+  <string name="slider_mode_vibrate">Vibrera</string>
+  <string name="slider_mode_silent">Tyst</string>
+  <string name="slider_mode_alarm">Endast alarm</string>
+  <string name="slider_mode_dnd">Total tystnad</string>
+  <string name="slider_mode_title_top">Topp-placering</string>
+  <string name="slider_mode_title_bottom">Bottenläget</string>
+  <string name="choose_app">Välj app</string>
+  <string name="category_up_arrow_gesture">En gest</string>
+  <string name="category_left_arrow_gesture">&lt; gest</string>
+  <string name="category_right_arrow_gesture">&gt; gest</string>
+</resources>
diff --git a/DeviceParts/res/values-sw/strings.xml b/DeviceParts/res/values-sw/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-sw/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-th/strings.xml b/DeviceParts/res/values-th/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-th/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-tl/strings.xml b/DeviceParts/res/values-tl/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-tl/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-tr/strings.xml b/DeviceParts/res/values-tr/strings.xml
new file mode 100644
index 0000000..9d43e6c
--- /dev/null
+++ b/DeviceParts/res/values-tr/strings.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+  <string name="app_name">Oneplus 5</string>
+  <string name="category_gestures_title">Cihaz hareketleri</string>
+  <string name="fp_gesture_title">Parmak izi tarayıcı hareketleri</string>
+  <string name="category_vibrator">Titreşim motoru</string>
+  <string name="vib_strength_title_head">Kuvvet</string>
+  <string name="vib_strength_summary_head">Titreşim motorunun kuvvetini tayin edin</string>
+  <string name="vib_test">Tecrübe et</string>
+  <string name="advanced_settings">İleri seviye</string>
+  <string name="category_slider">Kaydırma çubuğu</string>
+  <string name="slider_mode_title">Kaydırma çubuğu modu</string>
+  <string name="buttons_title">Düğmeler</string>
+  <string name="swap_back_recents_title">Geri ve son uygulamalar düğmesini mübadele edin</string>
+  <string name="graphics_title">Grafikler</string>
+  <string name="srgb_mode_title">sRGB modu</string>
+  <string name="hbm_mode_title">Yüksek parlaklık modu</string>
+  <string name="proxi_summary_head">Hareketi ve parmak izi sensörünü idare etmek için yakınlık sensörünü denetle</string>
+  <string name="proxi_title_head">Yakınlık denetimi</string>
+  <string name="slider_mode_off">Kapalı</string>
+  <string name="slider_mode_vibrate">Titreşim</string>
+  <string name="slider_mode_silent">Sessiz</string>
+  <string name="slider_mode_priority">Sadece öncelik</string>
+  <string name="slider_mode_alarm">Sadece alarmlar</string>
+  <string name="slider_mode_dnd">Tamamen sessiz</string>
+  <string name="slider_mode_title_top">Üst konum</string>
+  <string name="slider_mode_title_center">Merkezî konum</string>
+  <string name="slider_mode_title_bottom">Alt konum</string>
+  <string name="dci_mode_title">Geniş renk gamutu modu</string>
+  <string name="Night_mode_title">Gece modu</string>
+  <string name="choose_app">Uygulama seçin</string>
+  <string name="category_double_swipe_gesture">II hareketi</string>
+  <string name="offscreen_gesture_title">Kapalı ekran hareketleri</string>
+  <string name="category_circle_gesture">O hareketi</string>
+  <string name="category_down_arrow_gesture">V hareketi</string>
+  <string name="category_up_arrow_gesture">A hareketi</string>
+  <string name="category_left_arrow_gesture">&lt; hareketi</string>
+  <string name="category_right_arrow_gesture">&gt; hareketi</string>
+  <string name="category_gestures_summary">Hareket eylemlerini ayarlayın</string>
+  <string name="torch_entry">Fener</string>
+  <string name="disabled_entry">Devre dışı</string>
+  <string name="camera_entry">Kamera</string>
+  <string name="music_play_entry">Müziği oynat veyâ duraklat</string>
+  <string name="music_prev_entry">Evvelki parça</string>
+  <string name="music_next_entry">Sonraki parça</string>
+  <string name="not_ready_summary">Tahlil ediliyor...</string>
+  <string name="resolve_failed_summary">Uygulama tahlil edilemedi</string>
+  <string name="category_down_swipe_gesture">Aşağı kaydır</string>
+  <string name="category_up_swipe_gesture">Yukarı kaydır</string>
+  <string name="category_left_swipe_gesture">Sola kaydır</string>
+  <string name="category_right_swipe_gesture">Sağa kaydır</string>
+  <string name="category_fp_down_swipe_gesture">Parmağı Aşağı Kaydırma</string>
+  <string name="category_fp_up_swipe_gesture">Parmağı Yukarı Kaydırma</string>
+  <string name="category_fp_right_swipe_gesture">Parmağı Sağa Kaydırma</string>
+  <string name="category_fp_left_swipe_gesture">Parmağı Sola Kaydırma</string>
+  <string name="fp_swipe_down_switch_summary_head">Varsayılan parmağı aşağı kaydırma hareketi bildirimi</string>
+  <string name="fp_swipe_down_switch_title_head">Parmağı aşağı kaydırma hareketi</string>
+  <string name="doze_category_title">Ortam ekranı</string>
+  <string name="doze_category_summary">Bildirim aldığınızda ekranı uyandırın</string>
+  <string name="wave_check_summary">Bildirimleri elimi salladığımda göster</string>
+  <string name="wave_check_title">El sallama</string>
+  <string name="tilt_check_summary">Bildirimleri cihazı elime aldığımda göster</string>
+  <string name="tilt_check_title">Ele alma</string>
+  <string name="pocket_check_summary">Bildirimleri cihazı cebimdem çıkardığımda göster</string>
+  <string name="pocket_check_title">Cep</string>
+  <string name="ambient_display_enable">Ekran ayarlarındaki ortam ekranı etkinleştirilmelidir</string>
+  <string name="panel_category_title">Panel modları</string>
+  <string name="panel_category_summary">Panel rengini düzeltme modları</string>
+  <string name="off_mode_title">Kapalı</string>
+  <string name="tile_panel_mode">Panel modları</string>
+  <string name="tile_hbm_mode">Yüksek parlaklık modları</string>
+  <string name="wake_entry">Uyanma</string>
+</resources>
diff --git a/DeviceParts/res/values-uk/strings.xml b/DeviceParts/res/values-uk/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-uk/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-vi/strings.xml b/DeviceParts/res/values-vi/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-vi/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-zh-rCN/strings.xml b/DeviceParts/res/values-zh-rCN/strings.xml
new file mode 100644
index 0000000..cc95305
--- /dev/null
+++ b/DeviceParts/res/values-zh-rCN/strings.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+  <string name="app_name">Oneplus 5</string>
+  <string name="category_gestures_title">设备手势</string>
+  <string name="fp_gesture_title">指纹扫描手势</string>
+  <string name="category_vibrator">振动</string>
+  <string name="vib_strength_title_head">强度</string>
+  <string name="vib_strength_summary_head">设置振动强度</string>
+  <string name="vib_test">测试</string>
+  <string name="advanced_settings">高级选项</string>
+  <string name="category_slider">滑块</string>
+  <string name="slider_mode_title">滑块模式</string>
+  <string name="buttons_title">按钮</string>
+  <string name="swap_back_recents_title">交换 返回/最近任务 按键</string>
+  <string name="graphics_title">图形</string>
+  <string name="srgb_mode_title">sRGB 模式</string>
+  <string name="hbm_mode_title">高亮模式</string>
+  <string name="proxi_summary_head">处理手势和指纹传感器前检查近距离感器</string>
+  <string name="proxi_title_head">接近检查</string>
+  <string name="slider_mode_off">关闭</string>
+  <string name="slider_mode_vibrate">振动</string>
+  <string name="slider_mode_silent">静音</string>
+  <string name="slider_mode_priority">仅优先打扰</string>
+  <string name="slider_mode_alarm">仅闹钟</string>
+  <string name="slider_mode_dnd">完全静音</string>
+  <string name="slider_mode_title_top">顶部位置</string>
+  <string name="slider_mode_title_center">中心位置</string>
+  <string name="slider_mode_title_bottom">底部位置</string>
+  <string name="dci_mode_title">广色域模式</string>
+  <string name="Night_mode_title">夜间模式</string>
+  <string name="choose_app">选择应用</string>
+  <string name="category_double_swipe_gesture">II 手势</string>
+  <string name="offscreen_gesture_title">熄屏手势</string>
+  <string name="category_circle_gesture">O 手势</string>
+  <string name="category_down_arrow_gesture">V 手势</string>
+  <string name="category_up_arrow_gesture">A 手势</string>
+  <string name="category_left_arrow_gesture">&lt; 手势</string>
+  <string name="category_right_arrow_gesture">&gt; 手势</string>
+  <string name="category_gestures_summary">配置手势操作</string>
+  <string name="torch_entry">手电筒</string>
+  <string name="disabled_entry">禁用</string>
+  <string name="camera_entry">相机</string>
+  <string name="music_play_entry">播放/暂停音乐</string>
+  <string name="music_prev_entry">上一首</string>
+  <string name="music_next_entry">下一首</string>
+  <string name="not_ready_summary">处理中...</string>
+  <string name="resolve_failed_summary">处理应用程序失败</string>
+  <string name="category_down_swipe_gesture">向下滑动</string>
+  <string name="category_up_swipe_gesture">向上滑动</string>
+  <string name="category_left_swipe_gesture">向左滑动</string>
+  <string name="category_right_swipe_gesture">向右滑动</string>
+  <string name="category_fp_down_swipe_gesture">指纹向下滑动</string>
+  <string name="category_fp_up_swipe_gesture">指纹向上滑动</string>
+  <string name="category_fp_right_swipe_gesture">指纹向右滑动</string>
+  <string name="category_fp_left_swipe_gesture">指纹向左滑动</string>
+  <string name="fp_swipe_down_switch_summary_head">向下滑动时默认的指纹通知</string>
+  <string name="fp_swipe_down_switch_title_head">向下滑动指纹的手势</string>
+  <string name="doze_category_title">主动显示</string>
+  <string name="doze_category_summary">收到通知时点亮屏幕</string>
+  <string name="wave_check_summary">手电波脉冲通知</string>
+  <string name="tilt_check_summary">设备拾取时的脉冲通知</string>
+  <string name="tilt_check_title">拿起</string>
+  <string name="pocket_check_summary">从口袋里取出时的脉冲通知</string>
+  <string name="pocket_check_title">口袋</string>
+  <string name="ambient_display_enable">在显示设置中必须启用Ambient display</string>
+  <string name="panel_category_title">面板模式</string>
+  <string name="panel_category_summary">面板颜色校正模式</string>
+  <string name="off_mode_title">关闭</string>
+  <string name="tile_panel_mode">面板模式</string>
+  <string name="tile_hbm_mode">高亮模式</string>
+  <string name="wake_entry">唤醒</string>
+</resources>
diff --git a/DeviceParts/res/values-zh-rHK/strings.xml b/DeviceParts/res/values-zh-rHK/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-zh-rHK/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-zh-rTW/strings.xml b/DeviceParts/res/values-zh-rTW/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-zh-rTW/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values-zu/strings.xml b/DeviceParts/res/values-zu/strings.xml
new file mode 100644
index 0000000..b622661
--- /dev/null
+++ b/DeviceParts/res/values-zu/strings.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Generated by crowdin.com-->
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources></resources>
diff --git a/DeviceParts/res/values/config.xml b/DeviceParts/res/values/config.xml
new file mode 100644
index 0000000..d396095
--- /dev/null
+++ b/DeviceParts/res/values/config.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--  Copyright (C) 2016 The OmniROM Project
+
+  This program is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ -->
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+    <bool name="config_device_has_hw_nav_buttons">false</bool>
+
+</resources>
diff --git a/DeviceParts/res/values/strings.xml b/DeviceParts/res/values/strings.xml
new file mode 100644
index 0000000..b8caa3f
--- /dev/null
+++ b/DeviceParts/res/values/strings.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string name="app_name">Oneplus 5</string>
+    <string name="category_gestures_title">Device gestures</string>
+    <string name="fp_gesture_title">Fingerprint scanner gestures</string>
+    <string name="category_vibrator">Vibrator</string>
+    <string name="vib_strength_title_head">Strength</string>
+    <string name="vib_strength_summary_head">Define the strength of the vibrator</string>
+    <string name="vib_test">Test</string>
+    <string name="advanced_settings">Advanced</string>
+    <string name="category_slider">Slider</string>
+    <string name="slider_mode_title">Slider mode</string>
+    <string name="buttons_title">Buttons</string>
+    <string name="swap_back_recents_summary"></string>
+    <string name="swap_back_recents_title">Swap back and recents button</string>
+    <string name="graphics_title">Graphics</string>
+    <string name="srgb_mode_summary"></string>
+    <string name="srgb_mode_title">sRGB mode</string>
+    <string name="hbm_mode_summary"></string>
+    <string name="hbm_mode_title">High brightness mode</string>
+    <string name="adaptive_mode_title">Adaptive mode</string>
+    <string name="oneplus_mode_title">OnePlus mode</string>
+    <string name="proxi_summary_head">Check proximity sensor for handling gesture and fingerprint sensor</string>
+    <string name="proxi_title_head">Proximity check</string>
+    <string name="off_screen_gesture_feedback_summary_head">Enable haptic feedback for gestures</string>
+    <string name="off_screen_gesture_feedback_title_head">Haptic feedback</string>
+    <string name="slider_mode_off">Off</string>
+    <string name="slider_mode_flashlight">Flashlight</string>
+    <string name="slider_mode_vibrate">Vibrate</string>
+    <string name="slider_mode_silent">Silent</string>
+    <string name="slider_mode_priority">Priority only</string>
+    <string name="slider_mode_alarm">Alarms only</string>
+    <string name="slider_mode_zen">Do not disturb</string>
+    <string name="slider_mode_title_top">Top position</string>
+    <string name="slider_mode_title_center">Center position</string>
+    <string name="slider_mode_title_bottom">Bottom position</string>
+    <string name="dci_mode_summary"></string>
+    <string name="dci_mode_title">Wide color gammut mode</string>
+    <string name="Night_mode_summary"></string>
+    <string name="Night_mode_title">Night mode</string>
+    <string name="otg_switch_summary">Enable/Disable USB-OTG support</string>
+    <string name="otg_switch_title">USB-OTG support</string>
+
+    <string name="choose_app">Choose app</string>
+    <string name="category_double_swipe_gesture">II gesture</string>
+    <string name="offscreen_gesture_title">Offscreen gestures</string>
+    <string name="category_circle_gesture">O gesture</string>
+    <string name="category_down_arrow_gesture">V gesture</string>
+    <string name="category_up_arrow_gesture">A gesture</string>
+    <string name="category_left_arrow_gesture">&lt; gesture</string>
+    <string name="category_right_arrow_gesture">&gt; gesture</string>
+    <string name="category_gestures_summary">Configure gesture actions</string>
+    <string name="torch_entry">Flashlight</string>
+    <string name="disabled_entry">Disabled</string>
+    <string name="camera_entry">Camera</string>
+    <string name="music_play_entry">Play / pause music</string>
+    <string name="music_prev_entry">Prev track</string>
+    <string name="music_next_entry">Next track</string>
+    <string name="volume_up">Raise volume</string>
+    <string name="volume_down">Lower volume</string>
+    <string name="browse_scroll_up">Scroll up</string>
+    <string name="browse_scroll_down">Scroll down</string>
+    <string name="navigate_back">Back</string>
+    <string name="navigate_home">Home</string>
+    <string name="navigate_recent">Recent</string>
+    <string name="not_ready_summary">Resolving...</string>
+    <string name="resolve_failed_summary">Resolving app failed</string>
+    <string name="category_down_swipe_gesture">Down swipe</string>
+    <string name="category_up_swipe_gesture">Up swipe</string>
+    <string name="category_left_swipe_gesture">Left swipe</string>
+    <string name="category_right_swipe_gesture">Right swipe</string>
+    <string name="category_fp_down_swipe_gesture">Fingerprint down swipe</string>
+    <string name="category_fp_up_swipe_gesture">Fingerprint up swipe</string>
+    <string name="category_fp_right_swipe_gesture">Fingerprint right swipe</string>
+    <string name="category_fp_left_swipe_gesture">Fingerprint left swipe</string>
+    <string name="category_fp_long_press_gesture">Fingerprint long press</string>
+    <string name="fp_swipe_down_switch_summary_head">Use long press gesture to expand notifications</string>
+    <string name="fp_swipe_down_switch_title_head">Fingerprint long press gesture</string>
+
+    <string name="doze_category_title">Ambient display</string>
+    <string name="doze_category_summary">Wake screen when you receive notifications</string>
+    <string name="wave_check_summary">Pulse notifications on hand wave</string>
+    <string name="wave_check_title">Hand wave</string>
+    <string name="tilt_check_summary">Pulse notifications when device is picked up</string>
+    <string name="tilt_check_title">Pick up</string>
+    <string name="pocket_check_summary">Pulse notifications on removal from pocket</string>
+    <string name="pocket_check_title">Pocket</string>
+    <string name="ambient_display_enable">Ambient display must be enabled in display settings</string>
+
+    <string name="panel_category_title">Panel modes</string>
+    <string name="panel_category_summary">Modes for panel color correction</string>
+    <string name="off_mode_title">Off</string>
+    <string name="tile_panel_mode">Panel modes</string>
+    <string name="tile_hbm_mode">High brightness modes</string>
+    <string name="wake_entry">Wakeup</string>
+</resources>
diff --git a/DeviceParts/res/values/styles.xml b/DeviceParts/res/values/styles.xml
new file mode 100644
index 0000000..ae909bd
--- /dev/null
+++ b/DeviceParts/res/values/styles.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014-2017 The OmniROM Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<resources>
+    <style name="AppTheme" parent="@android:style/Theme.DeviceDefault.Settings">
+        <item name="preferenceTheme">@style/PreferenceTheme</item>
+    </style>
+
+    <style name="PreferenceTheme" parent="@style/PreferenceThemeOverlay.SettingsBase">
+    </style>
+</resources>
diff --git a/DeviceParts/res/xml/doze_settings.xml b/DeviceParts/res/xml/doze_settings.xml
new file mode 100644
index 0000000..13c2037
--- /dev/null
+++ b/DeviceParts/res/xml/doze_settings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2014-2016 The OmniROM 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">
+    <SwitchPreference
+        android:key="wave_check"
+        android:summary="@string/wave_check_summary"
+        android:title="@string/wave_check_title"
+        android:persistent="false" />
+    <SwitchPreference
+        android:key="pocket_check"
+        android:summary="@string/pocket_check_summary"
+        android:title="@string/pocket_check_title"
+        android:persistent="false" />
+    <SwitchPreference
+        android:key="tilt_check"
+        android:summary="@string/tilt_check_summary"
+        android:title="@string/tilt_check_title"
+        android:persistent="false" />
+    <Preference
+        android:key="footer"
+        android:summary="@string/ambient_display_enable"
+        android:persistent="false"
+        android:icon="@drawable/ic_info_outline_24dp" />
+</PreferenceScreen>
diff --git a/DeviceParts/res/xml/gesture_settings.xml b/DeviceParts/res/xml/gesture_settings.xml
new file mode 100644
index 0000000..c7ef445
--- /dev/null
+++ b/DeviceParts/res/xml/gesture_settings.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2017 The OmniROM 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">
+
+    <SwitchPreference
+        android:key="proxi"
+        android:summary="@string/proxi_summary_head"
+        android:title="@string/proxi_title_head"
+        android:persistent="false"
+        android:defaultValue="true" />
+
+    <PreferenceCategory
+        android:title="@string/fp_gesture_title"
+        android:key="key_fp_gesture_category" >
+
+        <Preference
+            android:key="gesture_settings"
+            android:title="@string/fp_swipe_down_switch_title_head"
+            android:summary="@string/fp_swipe_down_switch_summary_head" >
+            <intent android:action="android.intent.action.MAIN"
+                    android:targetPackage="com.android.settings"
+                    android:targetClass="com.android.settings.Settings$SwipeToNotificationSuggestionActivity" />
+        </Preference>
+
+        <org.omnirom.device.AppSelectListPreference
+            android:key="fp_long_press_gesture_app"
+            android:title="@string/category_fp_long_press_gesture"
+            android:persistent="false"/>
+    </PreferenceCategory>
+
+    <PreferenceCategory
+        android:title="@string/offscreen_gesture_title">
+
+        <org.omnirom.device.AppSelectListPreference
+            android:key="circle_gesture_app"
+            android:title="@string/category_circle_gesture"
+            android:persistent="false" />
+
+        <org.omnirom.device.AppSelectListPreference
+            android:key="double_swipe_gesture_app"
+            android:title="@string/category_double_swipe_gesture"
+            android:persistent="false" />
+
+        <org.omnirom.device.AppSelectListPreference
+            android:key="left_arrow_gesture_app"
+            android:title="@string/category_left_arrow_gesture"
+            android:persistent="false"/>
+
+        <org.omnirom.device.AppSelectListPreference
+            android:key="right_arrow_gesture_app"
+            android:title="@string/category_right_arrow_gesture"
+            android:persistent="false"/>
+
+        <org.omnirom.device.AppSelectListPreference
+            android:key="up_arrow_gesture_app"
+            android:title="@string/category_up_arrow_gesture"
+            android:persistent="false" />
+
+        <org.omnirom.device.AppSelectListPreference
+            android:key="down_arrow_gesture_app"
+            android:title="@string/category_down_arrow_gesture"
+            android:persistent="false"/>
+
+        <org.omnirom.device.AppSelectListPreference
+            android:key="down_swipe_gesture_app"
+            android:title="@string/category_down_swipe_gesture"
+            android:persistent="false"/>
+
+        <org.omnirom.device.AppSelectListPreference
+            android:key="up_swipe_gesture_app"
+            android:title="@string/category_up_swipe_gesture"
+            android:persistent="false"/>
+
+        <org.omnirom.device.AppSelectListPreference
+            android:key="left_swipe_gesture_app"
+            android:title="@string/category_left_swipe_gesture"
+            android:persistent="false"/>
+
+        <org.omnirom.device.AppSelectListPreference
+            android:key="right_swipe_gesture_app"
+            android:title="@string/category_right_swipe_gesture"
+            android:persistent="false"/>
+
+    </PreferenceCategory>
+</PreferenceScreen>
diff --git a/DeviceParts/res/xml/main.xml b/DeviceParts/res/xml/main.xml
new file mode 100644
index 0000000..58377c4
--- /dev/null
+++ b/DeviceParts/res/xml/main.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2014-2016 The OmniROM 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">
+    <Preference
+        android:key="gesture_category"
+        android:title="@string/category_gestures_title"
+        android:summary="@string/category_gestures_summary"
+        android:persistent="false" >
+        <intent android:action="android.intent.action.MAIN"
+                android:targetPackage="org.omnirom.device"
+                android:targetClass="org.omnirom.device.GestureSettingsActivity" />
+    </Preference>
+
+    <Preference
+        android:key="doze_category"
+        android:title="@string/doze_category_title"
+        android:summary="@string/doze_category_summary"
+        android:persistent="false" >
+        <intent android:action="android.intent.action.MAIN"
+                android:targetPackage="org.omnirom.device"
+                android:targetClass="org.omnirom.device.DozeSettingsActivity" />
+    </Preference>
+
+</PreferenceScreen>
diff --git a/DeviceParts/src/org/omnirom/device/AppSelectListPreference.java b/DeviceParts/src/org/omnirom/device/AppSelectListPreference.java
new file mode 100644
index 0000000..984afa8
--- /dev/null
+++ b/DeviceParts/src/org/omnirom/device/AppSelectListPreference.java
@@ -0,0 +1,422 @@
+/*
+* Copyright (C) 2017 The OmniROM Project
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+*/
+package org.omnirom.device;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.graphics.drawable.Drawable;
+import android.os.Handler;
+import android.os.Message;
+import android.support.v7.preference.PreferenceViewHolder;
+import android.support.v14.preference.PreferenceDialogFragment;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+
+import com.android.settingslib.CustomDialogPreference;
+
+public class AppSelectListPreference extends CustomDialogPreference {
+
+    private static String TAG = "AppSelectListPreference";
+
+    public static final String TORCH_ENTRY = "torch";
+    public static final String DISABLED_ENTRY = "disabled";
+    public static final String CAMERA_ENTRY = "camera";
+    public static final String MUSIC_PLAY_ENTRY = "music_play";
+    public static final String MUSIC_PREV_ENTRY = "music_prev";
+    public static final String MUSIC_NEXT_ENTRY = "music_next";
+    public static final String WAKE_ENTRY = "wake";
+    public static final String VOLUME_UP_ENTRY = "volume_up";
+    public static final String VOLUME_DOWN_ENTRY = "volume_down";
+    public static final String BROWSE_SCROLL_DOWN_ENTRY = "browse_scroll_down";
+    public static final String BROWSE_SCROLL_UP_ENTRY = "browse_scroll_up";
+    public static final String NAVIGATE_BACK_ENTRY = "navigate_back";
+    public static final String NAVIGATE_HOME_ENTRY = "navigate_home";
+    public static final String NAVIGATE_RECENT_ENTRY = "navigate_recent";
+
+    private AppSelectListAdapter mAdapter;
+    private Drawable mAppIconDrawable;
+    private int mAppIconResourceId;
+    private CharSequence mTitle;
+    private String mValue;
+    private PackageManager mPm;
+    private List<PackageItem> mInstalledPackages = new LinkedList<PackageItem>();
+
+    public static class PackageItem implements Comparable<PackageItem> {
+        public final CharSequence mTitle;
+        public final int mAppIconResourceId;
+        public final ComponentName mComponentName;
+        public final String mValue;
+
+        PackageItem(CharSequence title, int iconResourceId, ComponentName componentName) {
+            mTitle = title;
+            mAppIconResourceId = iconResourceId;
+            mComponentName = componentName;
+            mValue = componentName.flattenToString();
+        }
+
+        PackageItem(CharSequence title, int iconResourceId, String value) {
+            mTitle = title;
+            mAppIconResourceId = iconResourceId;
+            mComponentName = null;
+            mValue = value;
+        }
+
+        @Override
+        public int compareTo(PackageItem another) {
+            return mTitle.toString().toUpperCase().compareTo(another.mTitle.toString().toUpperCase());
+        }
+
+        @Override
+        public int hashCode() {
+            return mValue.hashCode();
+        }
+
+        @Override
+        public boolean equals(Object another) {
+            if (another == null || !(another instanceof PackageItem)) {
+                return false;
+            }
+            return mValue.equals(((PackageItem) another).mValue);
+        }
+    }
+
+    public class AppSelectListAdapter extends BaseAdapter {
+        private LayoutInflater mInflater;
+
+        public AppSelectListAdapter(Context context) {
+            mInflater = LayoutInflater.from(context);
+        }
+
+        @Override
+        public int getCount() {
+            return mInstalledPackages.size();
+        }
+
+        @Override
+        public PackageItem getItem(int position) {
+            return mInstalledPackages.get(position);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return mInstalledPackages.get(position).hashCode();
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            ViewHolder holder;
+            if (convertView != null) {
+                holder = (ViewHolder) convertView.getTag();
+            } else {
+                convertView = mInflater.inflate(R.layout.applist_preference_icon, null, false);
+                holder = new ViewHolder();
+                convertView.setTag(holder);
+                holder.title = (TextView) convertView.findViewById(R.id.title);
+                holder.icon = (ImageView) convertView.findViewById(R.id.icon);
+            }
+
+            PackageItem applicationInfo = getItem(position);
+            holder.title.setText(applicationInfo.mTitle);
+            if (applicationInfo.mAppIconResourceId != 0) {
+                holder.icon.setImageResource(applicationInfo.mAppIconResourceId);
+            } else {
+                Drawable d = resolveAppIcon(applicationInfo);
+                holder.icon.setImageDrawable(d);
+            }
+            return convertView;
+        }
+
+        private PackageItem resolveApplication(ComponentName componentName) {
+            for (PackageItem item : mInstalledPackages) {
+                if (item.mComponentName != null && item.mComponentName.equals(componentName)) {
+                    return item;
+                }
+            }
+            return null;
+        }
+
+        private class ViewHolder {
+            TextView title;
+            TextView summary;
+            ImageView icon;
+        }
+    }
+
+    public AppSelectListPreference(Context context, AttributeSet attrs) {
+        super(context, attrs);
+        init();
+    }
+
+    public AppSelectListPreference(Context context, int color) {
+        super(context, null);
+        init();
+    }
+
+    public void setPackageList(List<PackageItem> installedPackages) {
+        mInstalledPackages.clear();
+        mInstalledPackages.addAll(installedPackages);
+        addSpecialApps();
+        mAdapter.notifyDataSetChanged();
+        updatePreferenceViews();
+    }
+
+    private void init() {
+        mPm = getContext().getPackageManager();
+        setDialogLayoutResource(R.layout.preference_dialog_applist);
+        setLayoutResource(R.layout.preference_app_select);
+        setNegativeButtonText(android.R.string.cancel);
+        setPositiveButtonText(null);
+        setDialogTitle(R.string.choose_app);
+        setDialogIcon(null);
+        mAdapter = new AppSelectListAdapter(getContext());
+    }
+
+    private void addSpecialApps() {
+        PackageItem cameraItem = new PackageItem(getContext().getResources().getString(R.string.camera_entry),
+                R.drawable.ic_camera, CAMERA_ENTRY);
+        mInstalledPackages.add(0, cameraItem);
+
+        PackageItem torchItem = new PackageItem(getContext().getResources().getString(R.string.torch_entry),
+                R.drawable.ic_flashlight, TORCH_ENTRY);
+        mInstalledPackages.add(0, torchItem);
+
+        PackageItem musicNextItem = new PackageItem(getContext().getResources().getString(R.string.music_next_entry),
+                R.drawable.ic_music_next, MUSIC_NEXT_ENTRY);
+        mInstalledPackages.add(0, musicNextItem);
+
+        PackageItem musicPrevItem = new PackageItem(getContext().getResources().getString(R.string.music_prev_entry),
+                R.drawable.ic_music_prev, MUSIC_PREV_ENTRY);
+        mInstalledPackages.add(0, musicPrevItem);
+
+        PackageItem musicPlayItem = new PackageItem(getContext().getResources().getString(R.string.music_play_entry),
+                R.drawable.ic_music_play, MUSIC_PLAY_ENTRY);
+        mInstalledPackages.add(0, musicPlayItem);
+
+        PackageItem wakeItem = new PackageItem(getContext().getResources().getString(R.string.wake_entry),
+                R.drawable.ic_wakeup, WAKE_ENTRY);
+        mInstalledPackages.add(0, wakeItem);
+
+        PackageItem volumeUpItem = new PackageItem(
+                getContext().getResources().getString(R.string.volume_up),
+                R.drawable.ic_settings_sound, VOLUME_UP_ENTRY);
+        mInstalledPackages.add(0, volumeUpItem);
+
+        PackageItem volumeDownItem = new PackageItem(
+                getContext().getResources().getString(R.string.volume_down),
+                R.drawable.ic_settings_sound, VOLUME_DOWN_ENTRY);
+        mInstalledPackages.add(0, volumeDownItem);
+
+        PackageItem browseScrollDownItem = new PackageItem(
+                getContext().getResources().getString(R.string.browse_scroll_down),
+                R.drawable.arrow_collapse_down, BROWSE_SCROLL_DOWN_ENTRY);
+        mInstalledPackages.add(0, browseScrollDownItem);
+
+        PackageItem browseScrollUpItem = new PackageItem(
+                getContext().getResources().getString(R.string.browse_scroll_up),
+                R.drawable.arrow_collapse_up, BROWSE_SCROLL_UP_ENTRY);
+        mInstalledPackages.add(0, browseScrollUpItem);
+
+        PackageItem navigateBackItem = new PackageItem(
+                getContext().getResources().getString(R.string.navigate_back),
+                R.drawable.back, NAVIGATE_BACK_ENTRY);
+        mInstalledPackages.add(0, navigateBackItem);
+
+        PackageItem navigateHomeItem = new PackageItem(
+                getContext().getResources().getString(R.string.navigate_home),
+                R.drawable.home, NAVIGATE_HOME_ENTRY);
+        mInstalledPackages.add(0, navigateHomeItem);
+
+        PackageItem navigateRecentItem = new PackageItem(
+                getContext().getResources().getString(R.string.navigate_recent),
+                R.drawable.recent, NAVIGATE_RECENT_ENTRY);
+        mInstalledPackages.add(0, navigateRecentItem);
+        
+        PackageItem disabledItem = new PackageItem(getContext().getResources().getString(R.string.disabled_entry),
+                R.drawable.ic_disabled, DISABLED_ENTRY);
+        mInstalledPackages.add(0, disabledItem);
+    }
+
+    @Override
+    protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) {
+        super.onSetInitialValue(restorePersistedValue, defaultValue);
+        if (mTitle != null) {
+            setSummary(mTitle);
+        } else {
+            setSummary(getContext().getResources().getString(R.string.not_ready_summary));
+        }
+        mAppIconResourceId = R.drawable.ic_disabled;
+        setIcon(mAppIconResourceId);
+    }
+
+    @Override
+    protected void onBindDialogView(View view) {
+        super.onBindDialogView(view);
+
+        final ListView list = (ListView) view.findViewById(R.id.applist);
+        list.setAdapter(mAdapter);
+        list.setOnItemClickListener(new OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+                PackageItem info = (PackageItem) parent.getItemAtPosition(position);
+                mValue = info.mValue;
+                if (shouldPersist()) {
+                    persistString(mValue);
+                }
+                mTitle = info.mTitle;
+                mAppIconDrawable = null;
+                mAppIconResourceId = 0;
+                if (info.mComponentName != null) {
+                    mAppIconDrawable = resolveAppIcon(info);
+                } else {
+                    mAppIconResourceId = info.mAppIconResourceId;
+                }
+
+                updatePreferenceViews();
+                callChangeListener(mValue);
+                getDialog().dismiss();
+            }
+        });
+    }
+
+    private void updatePreferenceViews() {
+        String name = null;
+        if (shouldPersist()) {
+            name = getPersistedString(null);
+        } else {
+            name = mValue;
+        }
+        mAppIconResourceId = R.drawable.ic_disabled;
+
+        if (name != null) {
+            mAppIconDrawable = null;
+            if (name.equals(DISABLED_ENTRY)) {
+                mTitle = getContext().getResources().getString(R.string.disabled_entry);
+                mAppIconResourceId = R.drawable.ic_disabled;
+            } else if (name.equals(TORCH_ENTRY)) {
+                mTitle = getContext().getResources().getString(R.string.torch_entry);
+                mAppIconResourceId = R.drawable.ic_flashlight;
+            } else if (name.equals(CAMERA_ENTRY)) {
+                mTitle = getContext().getResources().getString(R.string.camera_entry);
+                mAppIconResourceId = R.drawable.ic_camera;
+            } else if (name.equals(MUSIC_PLAY_ENTRY)) {
+                mTitle = getContext().getResources().getString(R.string.music_play_entry);
+                mAppIconResourceId = R.drawable.ic_music_play;
+            } else if (name.equals(MUSIC_NEXT_ENTRY)) {
+                mTitle = getContext().getResources().getString(R.string.music_next_entry);
+                mAppIconResourceId = R.drawable.ic_music_next;
+            } else if (name.equals(MUSIC_PREV_ENTRY)) {
+                mTitle = getContext().getResources().getString(R.string.music_prev_entry);
+                mAppIconResourceId = R.drawable.ic_music_prev;
+            } else if (name.equals(WAKE_ENTRY)) {
+                mTitle = getContext().getResources().getString(R.string.wake_entry);
+                mAppIconResourceId = R.drawable.ic_wakeup;
+            } else if (name.equals(VOLUME_UP_ENTRY)) {
+                mTitle = getContext().getResources().getString(R.string.volume_up);
+                mAppIconResourceId = R.drawable.ic_settings_sound;
+            } else if (name.equals(VOLUME_DOWN_ENTRY)) {
+                mTitle = getContext().getResources().getString(R.string.volume_down);
+                mAppIconResourceId = R.drawable.ic_settings_sound;
+            } else if (name.equals(BROWSE_SCROLL_DOWN_ENTRY)) {
+                mTitle = getContext().getResources().getString(R.string.browse_scroll_down);
+                mAppIconResourceId = R.drawable.arrow_collapse_down;
+            } else if (name.equals(BROWSE_SCROLL_UP_ENTRY)) {
+                mTitle = getContext().getResources().getString(R.string.browse_scroll_up);
+                mAppIconResourceId = R.drawable.arrow_collapse_up;
+            } else if (name.equals(NAVIGATE_BACK_ENTRY)) {
+                mTitle = getContext().getResources().getString(R.string.navigate_back);
+                mAppIconResourceId = R.drawable.back;
+            } else if (name.equals(NAVIGATE_HOME_ENTRY)) {
+                mTitle = getContext().getResources().getString(R.string.navigate_home);
+                mAppIconResourceId = R.drawable.home;
+            } else if (name.equals(NAVIGATE_RECENT_ENTRY)) {
+                mTitle = getContext().getResources().getString(R.string.navigate_recent);
+                mAppIconResourceId = R.drawable.recent;
+            } else {
+                ComponentName componentName = ComponentName.unflattenFromString(name);
+                PackageItem item = mAdapter.resolveApplication(componentName);
+                if (item != null) {
+                    mTitle = item.mTitle;
+                    mAppIconDrawable = resolveAppIcon(item);
+                } else {
+                    mTitle = getContext().getResources().getString(R.string.resolve_failed_summary);
+                }
+            }
+        } else {
+            mTitle = getContext().getResources().getString(R.string.disabled_entry);
+            mAppIconResourceId = R.drawable.ic_disabled;
+        }
+
+        setSummary(mTitle);
+        if (mAppIconDrawable != null) {
+            setIcon(mAppIconDrawable);
+        } else {
+            setIcon(mAppIconResourceId);
+        }
+    }
+
+    private Drawable getDefaultActivityIcon() {
+        return getContext().getResources().getDrawable(android.R.drawable.sym_def_app_icon);
+    }
+
+    public String getValue() {
+        return mValue;
+    }
+
+    public void setValue(String value) {
+        mValue = value;
+    }
+
+    private Drawable resolveAppIcon(PackageItem item) {
+        Drawable appIcon = null;
+        try {
+            appIcon = mPm.getActivityIcon(item.mComponentName);
+        } catch (PackageManager.NameNotFoundException e) {
+        }
+        if (appIcon == null) {
+            appIcon = getDefaultActivityIcon();
+        }
+        return appIcon;
+    }
+
+    public static class AppSelectListPreferenceDialogFragment
+            extends CustomDialogPreference.CustomPreferenceDialogFragment {
+        public static CustomDialogPreference.CustomPreferenceDialogFragment
+                newInstance(String key) {
+            return CustomDialogPreference.CustomPreferenceDialogFragment.newInstance(key);
+        }
+    }
+}
diff --git a/DeviceParts/src/org/omnirom/device/DeviceSettings.java b/DeviceParts/src/org/omnirom/device/DeviceSettings.java
new file mode 100644
index 0000000..e14b291
--- /dev/null
+++ b/DeviceParts/src/org/omnirom/device/DeviceSettings.java
@@ -0,0 +1,62 @@
+/*
+* Copyright (C) 2016 The OmniROM Project
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+*/
+package org.omnirom.device;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.res.Resources;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v14.preference.PreferenceFragment;
+import android.support.v7.preference.ListPreference;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceCategory;
+import android.support.v7.preference.PreferenceScreen;
+import android.support.v7.preference.TwoStatePreference;
+import android.provider.Settings;
+import android.text.TextUtils;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
+import android.widget.ListView;
+import android.util.Log;
+
+public class DeviceSettings extends PreferenceFragment implements
+        Preference.OnPreferenceChangeListener {
+
+    public static final String SLIDER_DEFAULT_VALUE = "2,1,0";
+
+    public static final String KEY_SETTINGS_PREFIX = "device_setting_";
+
+    @Override
+    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+        setPreferencesFromResource(R.xml.main, rootKey);
+
+    }
+
+    @Override
+    public boolean onPreferenceTreeClick(Preference preference) {
+        return super.onPreferenceTreeClick(preference);
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        return true;
+    }
+}
diff --git a/DeviceParts/src/org/omnirom/device/DeviceSettingsActivity.java b/DeviceParts/src/org/omnirom/device/DeviceSettingsActivity.java
new file mode 100644
index 0000000..b3ab2ff
--- /dev/null
+++ b/DeviceParts/src/org/omnirom/device/DeviceSettingsActivity.java
@@ -0,0 +1,65 @@
+/*
+* Copyright (C) 2017 The OmniROM Project
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+*/
+package org.omnirom.device;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.app.Fragment;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.support.v14.preference.PreferenceFragment;
+import android.support.v7.preference.PreferenceManager;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+
+public class DeviceSettingsActivity extends Activity {
+
+    private DeviceSettings mDeviceSettingsFragment;
+    
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        getActionBar().setDisplayHomeAsUpEnabled(true);
+
+        Fragment fragment = getFragmentManager().findFragmentById(android.R.id.content);
+        if (fragment == null) {
+            mDeviceSettingsFragment = new DeviceSettings();
+            getFragmentManager().beginTransaction()
+                .add(android.R.id.content, mDeviceSettingsFragment)
+                .commit();
+        } else {
+            mDeviceSettingsFragment = (DeviceSettings) fragment;
+        }
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+        case android.R.id.home:
+            finish();
+            return true;
+        default:
+            break;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+}
diff --git a/DeviceParts/src/org/omnirom/device/DozeSettings.java b/DeviceParts/src/org/omnirom/device/DozeSettings.java
new file mode 100644
index 0000000..4721e85
--- /dev/null
+++ b/DeviceParts/src/org/omnirom/device/DozeSettings.java
@@ -0,0 +1,112 @@
+/*
+* Copyright (C) 2017 The OmniROM Project
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+*/
+package org.omnirom.device;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.res.Resources;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v14.preference.PreferenceFragment;
+import android.support.v7.preference.ListPreference;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceCategory;
+import android.support.v7.preference.PreferenceScreen;
+import android.support.v7.preference.TwoStatePreference;
+import android.provider.Settings;
+import android.text.TextUtils;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
+import android.widget.ListView;
+import android.util.Log;
+
+public class DozeSettings extends PreferenceFragment  {
+
+    private static final String KEY_WAVE_CHECK = "wave_check";
+    private static final String KEY_POCKET_CHECK = "pocket_check";
+    private static final String KEY_TILT_CHECK = "tilt_check";
+    private static final String KEY_FOOTER = "footer";
+
+    private boolean mUseTiltCheck;
+    private boolean mUseWaveCheck;
+    private boolean mUsePocketCheck;
+
+    @Override
+    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+        setPreferencesFromResource(R.xml.doze_settings, rootKey);
+
+        getDozeSettings();
+
+        TwoStatePreference waveSwitch = (TwoStatePreference) findPreference(KEY_WAVE_CHECK);
+        waveSwitch.setChecked(mUseWaveCheck);
+        waveSwitch.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+            @Override
+            public boolean onPreferenceChange(Preference preference, Object newValue) {
+                mUseWaveCheck = (Boolean) newValue;
+                setDozeSettings();
+                return true;
+            }
+        });
+        TwoStatePreference pocketSwitch = (TwoStatePreference) findPreference(KEY_POCKET_CHECK);
+        pocketSwitch.setChecked(mUsePocketCheck);
+        pocketSwitch.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+            @Override
+            public boolean onPreferenceChange(Preference preference, Object newValue) {
+                mUsePocketCheck = (Boolean) newValue;
+                setDozeSettings();
+                return true;
+            }
+        });
+        TwoStatePreference tiltSwitch = (TwoStatePreference) findPreference(KEY_TILT_CHECK);
+        tiltSwitch.setChecked(mUseTiltCheck);
+        tiltSwitch.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+            @Override
+            public boolean onPreferenceChange(Preference preference, Object newValue) {
+                mUseTiltCheck = (Boolean) newValue;
+                setDozeSettings();
+                return true;
+            }
+        });
+        Preference footer = findPreference(KEY_FOOTER);
+        if (isAmbientDisplayEnabled()) {
+            getPreferenceScreen().removePreference(footer);
+        }
+    }
+
+    private void getDozeSettings() {
+        String value = Settings.System.getString(getContext().getContentResolver(),
+                    Settings.System.OMNI_DEVICE_FEATURE_SETTINGS);
+        if (!TextUtils.isEmpty(value)) {
+            String[] parts = value.split(":");
+            mUseWaveCheck = Boolean.valueOf(parts[0]);
+            mUsePocketCheck = Boolean.valueOf(parts[1]);
+            mUseTiltCheck = Boolean.valueOf(parts[2]);
+        }
+    }
+
+    private void setDozeSettings() {
+        String newValue = String.valueOf(mUseWaveCheck) + ":" + String.valueOf(mUsePocketCheck) + ":" + String.valueOf(mUseTiltCheck);
+        Settings.System.putString(getContext().getContentResolver(), Settings.System.OMNI_DEVICE_FEATURE_SETTINGS, newValue);
+    }
+
+    private boolean isAmbientDisplayEnabled() {
+        return Settings.Secure.getInt(getContext().getContentResolver(), Settings.Secure.DOZE_ENABLED, 1) == 1;
+    }
+}
diff --git a/DeviceParts/src/org/omnirom/device/DozeSettingsActivity.java b/DeviceParts/src/org/omnirom/device/DozeSettingsActivity.java
new file mode 100644
index 0000000..dae6ce8
--- /dev/null
+++ b/DeviceParts/src/org/omnirom/device/DozeSettingsActivity.java
@@ -0,0 +1,65 @@
+/*
+* Copyright (C) 2017 The OmniROM Project
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+*/
+package org.omnirom.device;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.app.Fragment;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.support.v14.preference.PreferenceFragment;
+import android.support.v7.preference.PreferenceManager;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+
+public class DozeSettingsActivity extends Activity {
+
+    private DozeSettings mDozeSettingsFragment;
+    
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        getActionBar().setDisplayHomeAsUpEnabled(true);
+
+        Fragment fragment = getFragmentManager().findFragmentById(android.R.id.content);
+        if (fragment == null) {
+            mDozeSettingsFragment = new DozeSettings();
+            getFragmentManager().beginTransaction()
+                .add(android.R.id.content, mDozeSettingsFragment)
+                .commit();
+        } else {
+            mDozeSettingsFragment = (DozeSettings) fragment;
+        }
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+        case android.R.id.home:
+            finish();
+            return true;
+        default:
+            break;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+}
diff --git a/DeviceParts/src/org/omnirom/device/GestureSettings.java b/DeviceParts/src/org/omnirom/device/GestureSettings.java
new file mode 100644
index 0000000..00e1d99
--- /dev/null
+++ b/DeviceParts/src/org/omnirom/device/GestureSettings.java
@@ -0,0 +1,364 @@
+/*
+* Copyright (C) 2017 The OmniROM Project
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+*/
+package org.omnirom.device;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.res.Resources;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.support.v14.preference.PreferenceFragment;
+import android.support.v7.preference.ListPreference;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceCategory;
+import android.support.v7.preference.PreferenceScreen;
+import android.support.v7.preference.TwoStatePreference;
+import android.provider.Settings;
+import android.text.TextUtils;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
+import android.widget.ListView;
+import android.util.Log;
+import static android.provider.Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED;
+import android.os.UserHandle;
+
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+
+public class GestureSettings extends PreferenceFragment implements
+        Preference.OnPreferenceChangeListener {
+
+    public static final String KEY_PROXI_SWITCH = "proxi";
+    public static final String KEY_OFF_SCREEN_GESTURE_FEEDBACK_SWITCH = "off_screen_gesture_feedback";
+    public static final String KEY_DOUBLE_SWIPE_APP = "double_swipe_gesture_app";
+    public static final String KEY_CIRCLE_APP = "circle_gesture_app";
+    public static final String KEY_DOWN_ARROW_APP = "down_arrow_gesture_app";
+    public static final String KEY_UP_ARROW_APP = "up_arrow_gesture_app";
+    public static final String KEY_LEFT_ARROW_APP = "left_arrow_gesture_app";
+    public static final String KEY_RIGHT_ARROW_APP = "right_arrow_gesture_app";
+    public static final String KEY_DOWN_SWIPE_APP = "down_swipe_gesture_app";
+    public static final String KEY_UP_SWIPE_APP = "up_swipe_gesture_app";
+    public static final String KEY_LEFT_SWIPE_APP = "left_swipe_gesture_app";
+    public static final String KEY_RIGHT_SWIPE_APP = "right_swipe_gesture_app";
+    public static final String KEY_FP_GESTURE_CATEGORY = "key_fp_gesture_category";
+    public static final String KEY_FP_GESTURE_DEFAULT_CATEGORY = "gesture_settings";
+
+    public static final String FP_GESTURE_LONG_PRESS_APP = "fp_long_press_gesture_app";
+
+    public static final String DEVICE_GESTURE_MAPPING_0 = "device_gesture_mapping_0_0";
+    public static final String DEVICE_GESTURE_MAPPING_1 = "device_gesture_mapping_1_0";
+    public static final String DEVICE_GESTURE_MAPPING_2 = "device_gesture_mapping_2_0";
+    public static final String DEVICE_GESTURE_MAPPING_3 = "device_gesture_mapping_3_0";
+    public static final String DEVICE_GESTURE_MAPPING_4 = "device_gesture_mapping_4_0";
+    public static final String DEVICE_GESTURE_MAPPING_5 = "device_gesture_mapping_5_0";
+    public static final String DEVICE_GESTURE_MAPPING_6 = "device_gesture_mapping_6_0";
+    public static final String DEVICE_GESTURE_MAPPING_7 = "device_gesture_mapping_7_0";
+    public static final String DEVICE_GESTURE_MAPPING_8 = "device_gesture_mapping_8_0";
+    public static final String DEVICE_GESTURE_MAPPING_9 = "device_gesture_mapping_9_0";
+    public static final String DEVICE_GESTURE_MAPPING_10 = "device_gesture_mapping_10_0";
+
+    private TwoStatePreference mProxiSwitch;
+    private TwoStatePreference mFpSwipeDownSwitch;
+    private AppSelectListPreference mDoubleSwipeApp;
+    private AppSelectListPreference mCircleApp;
+    private AppSelectListPreference mDownArrowApp;
+    private AppSelectListPreference mUpArrowApp;
+    private AppSelectListPreference mLeftArrowApp;
+    private AppSelectListPreference mRightArrowApp;
+    private AppSelectListPreference mDownSwipeApp;
+    private AppSelectListPreference mUpSwipeApp;
+    private AppSelectListPreference mLeftSwipeApp;
+    private AppSelectListPreference mRightSwipeApp;
+    private AppSelectListPreference mFPDownSwipeApp;
+    private AppSelectListPreference mFPUpSwipeApp;
+    private AppSelectListPreference mFPRightSwipeApp;
+    private AppSelectListPreference mFPLeftSwipeApp;
+    private AppSelectListPreference mFPLongPressApp;
+    private PreferenceCategory fpGestures;
+    private boolean mFpDownSwipe;
+    private List<AppSelectListPreference.PackageItem> mInstalledPackages = new LinkedList<AppSelectListPreference.PackageItem>();
+    private PackageManager mPm;
+
+    @Override
+    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+        setPreferencesFromResource(R.xml.gesture_settings, rootKey);
+        mPm = getContext().getPackageManager();
+
+        mProxiSwitch = (TwoStatePreference) findPreference(KEY_PROXI_SWITCH);
+        mProxiSwitch.setChecked(Settings.System.getInt(getContext().getContentResolver(),
+                Settings.System.OMNI_DEVICE_PROXI_CHECK_ENABLED, 1) != 0);
+
+        mDoubleSwipeApp = (AppSelectListPreference) findPreference(KEY_DOUBLE_SWIPE_APP);
+        mDoubleSwipeApp.setEnabled(isGestureSupported(KEY_DOUBLE_SWIPE_APP));
+        String value = Settings.System.getString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_0);
+        mDoubleSwipeApp.setValue(value);
+        mDoubleSwipeApp.setOnPreferenceChangeListener(this);
+
+        mCircleApp = (AppSelectListPreference) findPreference(KEY_CIRCLE_APP);
+        mCircleApp.setEnabled(isGestureSupported(KEY_CIRCLE_APP));
+        value = Settings.System.getString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_1);
+        mCircleApp.setValue(value);
+        mCircleApp.setOnPreferenceChangeListener(this);
+
+        mDownArrowApp = (AppSelectListPreference) findPreference(KEY_DOWN_ARROW_APP);
+        mDownArrowApp.setEnabled(isGestureSupported(KEY_DOWN_ARROW_APP));
+        value = Settings.System.getString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_2);
+        mDownArrowApp.setValue(value);
+        mDownArrowApp.setOnPreferenceChangeListener(this);
+
+        mUpArrowApp = (AppSelectListPreference) findPreference(KEY_UP_ARROW_APP);
+        mUpArrowApp.setEnabled(isGestureSupported(KEY_UP_ARROW_APP));
+        value = Settings.System.getString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_3);
+        mUpArrowApp.setValue(value);
+        mUpArrowApp.setOnPreferenceChangeListener(this);
+
+        mLeftArrowApp = (AppSelectListPreference) findPreference(KEY_LEFT_ARROW_APP);
+        mLeftArrowApp.setEnabled(isGestureSupported(KEY_LEFT_ARROW_APP));
+        value = Settings.System.getString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_4);
+        mLeftArrowApp.setValue(value);
+        mLeftArrowApp.setOnPreferenceChangeListener(this);
+
+        mRightArrowApp = (AppSelectListPreference) findPreference(KEY_RIGHT_ARROW_APP);
+        mRightArrowApp.setEnabled(isGestureSupported(KEY_RIGHT_ARROW_APP));
+        value = Settings.System.getString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_5);
+        mRightArrowApp.setValue(value);
+        mRightArrowApp.setOnPreferenceChangeListener(this);
+
+        mDownSwipeApp = (AppSelectListPreference) findPreference(KEY_DOWN_SWIPE_APP);
+        mDownSwipeApp.setEnabled(isGestureSupported(KEY_DOWN_SWIPE_APP));
+        value = Settings.System.getString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_6);
+        mDownSwipeApp.setValue(value);
+        mDownSwipeApp.setOnPreferenceChangeListener(this);
+
+        mUpSwipeApp = (AppSelectListPreference) findPreference(KEY_UP_SWIPE_APP);
+        mUpSwipeApp.setEnabled(isGestureSupported(KEY_UP_SWIPE_APP));
+        value = Settings.System.getString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_7);
+        mUpSwipeApp.setValue(value);
+        mUpSwipeApp.setOnPreferenceChangeListener(this);
+
+        mLeftSwipeApp = (AppSelectListPreference) findPreference(KEY_LEFT_SWIPE_APP);
+        mLeftSwipeApp.setEnabled(isGestureSupported(KEY_LEFT_SWIPE_APP));
+        value = Settings.System.getString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_8);
+        mLeftSwipeApp.setValue(value);
+        mLeftSwipeApp.setOnPreferenceChangeListener(this);
+
+        mRightSwipeApp = (AppSelectListPreference) findPreference(KEY_RIGHT_SWIPE_APP);
+        mRightSwipeApp.setEnabled(isGestureSupported(KEY_RIGHT_SWIPE_APP));
+        value = Settings.System.getString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_9);
+        mRightSwipeApp.setValue(value);
+        mRightSwipeApp.setOnPreferenceChangeListener(this);
+
+        mFPLongPressApp = (AppSelectListPreference) findPreference(FP_GESTURE_LONG_PRESS_APP);
+        mFPLongPressApp.setEnabled(true);
+        value = Settings.System.getString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_10);
+        mFPLongPressApp.setValue(value);
+        mFPLongPressApp.setOnPreferenceChangeListener(this);
+
+        new FetchPackageInformationTask().execute();
+    }
+
+    private boolean areSystemNavigationKeysEnabled() {
+        return Settings.Secure.getInt(getContext().getContentResolver(),
+               Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, 0) == 1;
+    }
+
+    @Override
+    public boolean onPreferenceTreeClick(Preference preference) {
+        if (preference == mProxiSwitch) {
+            Settings.System.putInt(getContext().getContentResolver(),
+                    Settings.System.OMNI_DEVICE_PROXI_CHECK_ENABLED, mProxiSwitch.isChecked() ? 1 : 0);
+            return true;
+        }
+        return super.onPreferenceTreeClick(preference);
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        if (preference == mDoubleSwipeApp) {
+            String value = (String) newValue;
+            boolean gestureDisabled = value.equals(AppSelectListPreference.DISABLED_ENTRY);
+            setGestureEnabled(KEY_DOUBLE_SWIPE_APP, !gestureDisabled);
+            Settings.System.putString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_0, value);
+        } else if (preference == mCircleApp) {
+            String value = (String) newValue;
+            boolean gestureDisabled = value.equals(AppSelectListPreference.DISABLED_ENTRY);
+            setGestureEnabled(KEY_CIRCLE_APP, !gestureDisabled);
+            Settings.System.putString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_1, value);
+        } else if (preference == mDownArrowApp) {
+            String value = (String) newValue;
+            boolean gestureDisabled = value.equals(AppSelectListPreference.DISABLED_ENTRY);
+            setGestureEnabled(KEY_DOWN_ARROW_APP, !gestureDisabled);
+            Settings.System.putString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_2, value);
+        } else if (preference == mUpArrowApp) {
+            String value = (String) newValue;
+            boolean gestureDisabled = value.equals(AppSelectListPreference.DISABLED_ENTRY);
+            setGestureEnabled(KEY_UP_ARROW_APP, !gestureDisabled);
+            Settings.System.putString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_3, value);
+        } else if (preference == mLeftArrowApp) {
+            String value = (String) newValue;
+            boolean gestureDisabled = value.equals(AppSelectListPreference.DISABLED_ENTRY);
+            setGestureEnabled(KEY_LEFT_ARROW_APP, !gestureDisabled);
+            Settings.System.putString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_4, value);
+        } else if (preference == mRightArrowApp) {
+            String value = (String) newValue;
+            boolean gestureDisabled = value.equals(AppSelectListPreference.DISABLED_ENTRY);
+            setGestureEnabled(KEY_RIGHT_ARROW_APP, !gestureDisabled);
+            Settings.System.putString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_5, value);
+        } else if (preference == mDownSwipeApp) {
+            String value = (String) newValue;
+            boolean gestureDisabled = value.equals(AppSelectListPreference.DISABLED_ENTRY);
+            setGestureEnabled(KEY_DOWN_SWIPE_APP, !gestureDisabled);
+            Settings.System.putString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_6, value);
+        } else if (preference == mUpSwipeApp) {
+            String value = (String) newValue;
+            boolean gestureDisabled = value.equals(AppSelectListPreference.DISABLED_ENTRY);
+            setGestureEnabled(KEY_UP_SWIPE_APP, !gestureDisabled);
+            Settings.System.putString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_7, value);
+        } else if (preference == mLeftSwipeApp) {
+            String value = (String) newValue;
+            boolean gestureDisabled = value.equals(AppSelectListPreference.DISABLED_ENTRY);
+            setGestureEnabled(KEY_LEFT_SWIPE_APP, !gestureDisabled);
+            Settings.System.putString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_8, value);
+        } else if (preference == mRightSwipeApp) {
+            String value = (String) newValue;
+            boolean gestureDisabled = value.equals(AppSelectListPreference.DISABLED_ENTRY);
+            setGestureEnabled(KEY_RIGHT_SWIPE_APP, !gestureDisabled);
+            Settings.System.putString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_9, value);
+        } else if (preference == mFPLongPressApp) {
+            String value = (String) newValue;
+            Settings.System.putString(getContext().getContentResolver(), DEVICE_GESTURE_MAPPING_10, value);
+        }
+        return true;
+    }
+
+    public static String getGestureFile(String key) {
+        switch(key) {
+            case KEY_CIRCLE_APP:
+                return "/proc/touchpanel/letter_o_enable";
+            case KEY_DOUBLE_SWIPE_APP:
+                return "/proc/touchpanel/double_swipe_enable";
+            case KEY_DOWN_ARROW_APP:
+                return "/proc/touchpanel/down_arrow_enable";
+            case KEY_UP_ARROW_APP:
+                return "/proc/touchpanel/up_arrow_enable";
+            case KEY_LEFT_ARROW_APP:
+                return "/proc/touchpanel/left_arrow_enable";
+            case KEY_RIGHT_ARROW_APP:
+                return "/proc/touchpanel/right_arrow_enable";
+            case KEY_DOWN_SWIPE_APP:
+                return "/proc/touchpanel/down_swipe_enable";
+            case KEY_UP_SWIPE_APP:
+                return "/proc/touchpanel/up_swipe_enable";
+            case KEY_LEFT_SWIPE_APP:
+                return "/proc/touchpanel/left_swipe_enable";
+            case KEY_RIGHT_SWIPE_APP:
+                return "/proc/touchpanel/right_swipe_enable";
+        }
+        return null;
+    }
+
+    private boolean isGestureSupported(String key) {
+        return Utils.fileWritable(getGestureFile(key));
+    }
+
+    private void setGestureEnabled(String key, boolean enabled) {
+        Utils.writeValue(getGestureFile(key), enabled ? "1" : "0");
+    }
+
+    @Override
+    public void onDisplayPreferenceDialog(Preference preference) {
+        if (!(preference instanceof AppSelectListPreference)) {
+            super.onDisplayPreferenceDialog(preference);
+            return;
+        }
+        DialogFragment fragment =
+                AppSelectListPreference.AppSelectListPreferenceDialogFragment
+                        .newInstance(preference.getKey());
+        fragment.setTargetFragment(this, 0);
+        fragment.show(getFragmentManager(), "dialog_preference");
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        if (mFPDownSwipeApp != null) {
+            mFPDownSwipeApp.setEnabled(!areSystemNavigationKeysEnabled());
+        }
+        if (mFPUpSwipeApp != null) {
+            mFPUpSwipeApp.setEnabled(!areSystemNavigationKeysEnabled());
+        }
+    }
+
+    private void loadInstalledPackages() {
+        final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
+        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
+        List<ResolveInfo> installedAppsInfo = mPm.queryIntentActivities(mainIntent, 0);
+
+        for (ResolveInfo info : installedAppsInfo) {
+            ActivityInfo activity = info.activityInfo;
+            ApplicationInfo appInfo = activity.applicationInfo;
+            ComponentName componentName = new ComponentName(appInfo.packageName, activity.name);
+            CharSequence label = null;
+            try {
+                label = activity.loadLabel(mPm);
+            } catch (Exception e) {
+            }
+            if (label != null) {
+                final AppSelectListPreference.PackageItem item = new AppSelectListPreference.PackageItem(activity.loadLabel(mPm), 0, componentName);
+                mInstalledPackages.add(item);
+            }
+        }
+        Collections.sort(mInstalledPackages);
+    }
+
+    private class FetchPackageInformationTask extends AsyncTask<Void, Void, Void> {
+        public FetchPackageInformationTask() {
+        }
+
+        @Override
+        protected Void doInBackground(Void... params) {
+            loadInstalledPackages();
+            return null;
+        }
+
+        @Override
+        protected void onPostExecute(Void feed) {
+            mDoubleSwipeApp.setPackageList(mInstalledPackages);
+            mCircleApp.setPackageList(mInstalledPackages);
+            mDownArrowApp.setPackageList(mInstalledPackages);
+            mUpArrowApp.setPackageList(mInstalledPackages);
+            mLeftArrowApp.setPackageList(mInstalledPackages);
+            mRightArrowApp.setPackageList(mInstalledPackages);
+            mDownSwipeApp.setPackageList(mInstalledPackages);
+            mUpSwipeApp.setPackageList(mInstalledPackages);
+            mLeftSwipeApp.setPackageList(mInstalledPackages);
+            mRightSwipeApp.setPackageList(mInstalledPackages);
+            mFPLongPressApp.setPackageList(mInstalledPackages);
+        }
+    }
+}
diff --git a/DeviceParts/src/org/omnirom/device/GestureSettingsActivity.java b/DeviceParts/src/org/omnirom/device/GestureSettingsActivity.java
new file mode 100644
index 0000000..7d744ad
--- /dev/null
+++ b/DeviceParts/src/org/omnirom/device/GestureSettingsActivity.java
@@ -0,0 +1,66 @@
+/*
+* Copyright (C) 2017 The OmniROM Project
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+*/
+package org.omnirom.device;
+
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.app.Fragment;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.support.v14.preference.PreferenceFragment;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceManager;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+
+public class GestureSettingsActivity extends Activity {
+
+    private GestureSettings mGestureSettingsFragment;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        getActionBar().setDisplayHomeAsUpEnabled(true);
+
+        Fragment fragment = getFragmentManager().findFragmentById(android.R.id.content);
+        if (fragment == null) {
+            mGestureSettingsFragment = new GestureSettings();
+            getFragmentManager().beginTransaction()
+                .add(android.R.id.content, mGestureSettingsFragment)
+                .commit();
+        } else {
+            mGestureSettingsFragment = (GestureSettings) fragment;
+        }
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+        case android.R.id.home:
+            finish();
+            return true;
+        default:
+            break;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+}
diff --git a/DeviceParts/src/org/omnirom/device/KeyHandler.java b/DeviceParts/src/org/omnirom/device/KeyHandler.java
new file mode 100644
index 0000000..c591afa
--- /dev/null
+++ b/DeviceParts/src/org/omnirom/device/KeyHandler.java
@@ -0,0 +1,603 @@
+/*
+* Copyright (C) 2016 The OmniROM Project
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+*/
+package org.omnirom.device;
+
+import android.app.ActivityManagerNative;
+import android.app.NotificationManager;
+import android.content.BroadcastReceiver;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.database.ContentObserver;
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
+import android.media.IAudioService;
+import android.media.AudioManager;
+import android.media.session.MediaSessionLegacyHelper;
+import android.net.Uri;
+import android.text.TextUtils;
+import android.os.FileObserver;
+import android.os.Handler;
+import android.os.Message;
+import android.os.PowerManager;
+import android.os.PowerManager.WakeLock;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.os.SystemClock;
+import android.os.SystemProperties;
+import android.os.UEventObserver;
+import android.os.UserHandle;
+import android.os.VibrationEffect;
+import android.os.Vibrator;
+import android.provider.Settings;
+import android.provider.Settings.Global;
+import android.telecom.PhoneAccountHandle;
+import android.telecom.TelecomManager;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.HapticFeedbackConstants;
+import android.view.WindowManagerGlobal;
+
+import com.android.internal.util.omni.DeviceKeyHandler;
+import com.android.internal.util.omni.PackageUtils;
+import com.android.internal.util.ArrayUtils;
+import com.android.internal.util.omni.OmniUtils;
+import org.omnirom.omnilib.utils.OmniVibe;
+import com.android.internal.statusbar.IStatusBarService;
+
+public class KeyHandler implements DeviceKeyHandler {
+
+    private static final String TAG = "KeyHandler";
+    private static final boolean DEBUG = true;
+    private static final boolean DEBUG_SENSOR = true;
+
+    protected static final int GESTURE_REQUEST = 1;
+    private static final int GESTURE_WAKELOCK_DURATION = 2000;
+
+    private static final int GESTURE_CIRCLE_SCANCODE = 250;
+    private static final int GESTURE_V_SCANCODE = 252;
+    private static final int GESTURE_II_SCANCODE = 251;
+    private static final int GESTURE_LEFT_V_SCANCODE = 253;
+    private static final int GESTURE_RIGHT_V_SCANCODE = 254;
+    private static final int GESTURE_A_SCANCODE = 255;
+    private static final int GESTURE_RIGHT_SWIPE_SCANCODE = 63;
+    private static final int GESTURE_LEFT_SWIPE_SCANCODE = 64;
+    private static final int GESTURE_DOWN_SWIPE_SCANCODE = 65;
+    private static final int GESTURE_UP_SWIPE_SCANCODE = 66;
+
+    private static final int KEY_DOUBLE_TAP = 143;
+    private static final int KEY_HOME = 102;
+    private static final int KEY_BACK = 158;
+    private static final int KEY_RECENTS = 580;
+    private static final int KEY_SLIDER_TOP = 601;
+    private static final int KEY_SLIDER_CENTER = 602;
+    private static final int KEY_SLIDER_BOTTOM = 603;
+
+    private static final int MIN_PULSE_INTERVAL_MS = 2500;
+    private static final String DOZE_INTENT = "com.android.systemui.doze.pulse";
+    private static final int HANDWAVE_MAX_DELTA_MS = 1000;
+    private static final int POCKET_MIN_DELTA_MS = 5000;
+    private static final int FP_GESTURE_LONG_PRESS = 305;
+
+    private static final int[] sSupportedGestures = new int[]{
+        GESTURE_II_SCANCODE,
+        GESTURE_CIRCLE_SCANCODE,
+        GESTURE_V_SCANCODE,
+        GESTURE_A_SCANCODE,
+        GESTURE_LEFT_V_SCANCODE,
+        GESTURE_RIGHT_V_SCANCODE,
+        GESTURE_DOWN_SWIPE_SCANCODE,
+        GESTURE_UP_SWIPE_SCANCODE,
+        GESTURE_LEFT_SWIPE_SCANCODE,
+        GESTURE_RIGHT_SWIPE_SCANCODE,
+        KEY_DOUBLE_TAP,
+        KEY_SLIDER_TOP,
+        KEY_SLIDER_CENTER,
+        KEY_SLIDER_BOTTOM,
+        FP_GESTURE_LONG_PRESS
+    };
+
+    private static final int[] sProxiCheckedGestures = new int[]{
+        GESTURE_II_SCANCODE,
+        GESTURE_CIRCLE_SCANCODE,
+        GESTURE_V_SCANCODE,
+        GESTURE_A_SCANCODE,
+        GESTURE_LEFT_V_SCANCODE,
+        GESTURE_RIGHT_V_SCANCODE,
+        GESTURE_DOWN_SWIPE_SCANCODE,
+        GESTURE_UP_SWIPE_SCANCODE,
+        GESTURE_LEFT_SWIPE_SCANCODE,
+        GESTURE_RIGHT_SWIPE_SCANCODE,
+        KEY_DOUBLE_TAP
+    };
+
+    protected final Context mContext;
+    private final PowerManager mPowerManager;
+    private EventHandler mEventHandler;
+    private WakeLock mGestureWakeLock;
+    private Handler mHandler = new Handler();
+    private SettingsObserver mSettingsObserver;
+    private static boolean mButtonDisabled;
+    private final NotificationManager mNoMan;
+    private final AudioManager mAudioManager;
+    private SensorManager mSensorManager;
+    private boolean mProxyIsNear;
+    private boolean mUseProxiCheck;
+    private Sensor mTiltSensor;
+    private boolean mUseTiltCheck;
+    private boolean mProxyWasNear;
+    private long mProxySensorTimestamp;
+    private boolean mUseWaveCheck;
+    private Sensor mPocketSensor;
+    private boolean mUsePocketCheck;
+    private boolean mFPcheck;
+    private boolean mDispOn;
+    private boolean isFpgesture;
+    private boolean isOPCameraAvail;
+    private boolean mRestoreUser;
+    private boolean mToggleTorch = false;
+    private boolean mTorchState = false;
+
+    private SensorEventListener mProximitySensor = new SensorEventListener() {
+        @Override
+        public void onSensorChanged(SensorEvent event) {
+            mProxyIsNear = event.values[0] == 1;
+            if (DEBUG_SENSOR) Log.i(TAG, "mProxyIsNear = " + mProxyIsNear + " mProxyWasNear = " + mProxyWasNear);
+            if (mUseWaveCheck || mUsePocketCheck) {
+                if (mProxyWasNear && !mProxyIsNear) {
+                    long delta = SystemClock.elapsedRealtime() - mProxySensorTimestamp;
+                    if (DEBUG_SENSOR) Log.i(TAG, "delta = " + delta);
+                    if (mUseWaveCheck && delta < HANDWAVE_MAX_DELTA_MS) {
+                        launchDozePulse();
+                    }
+                    if (mUsePocketCheck && delta > POCKET_MIN_DELTA_MS) {
+                        launchDozePulse();
+                    }
+                }
+                mProxySensorTimestamp = SystemClock.elapsedRealtime();
+                mProxyWasNear = mProxyIsNear;
+            }
+        }
+
+        @Override
+        public void onAccuracyChanged(Sensor sensor, int accuracy) {
+        }
+    };
+
+    private SensorEventListener mTiltSensorListener = new SensorEventListener() {
+        @Override
+        public void onSensorChanged(SensorEvent event) {
+            if (event.values[0] == 1) {
+                launchDozePulse();
+            }
+        }
+
+        @Override
+        public void onAccuracyChanged(Sensor sensor, int accuracy) {
+        }
+    };
+
+    private class SettingsObserver extends ContentObserver {
+        SettingsObserver(Handler handler) {
+            super(handler);
+        }
+
+        void observe() {
+            mContext.getContentResolver().registerContentObserver(Settings.System.getUriFor(
+                    Settings.System.OMNI_DEVICE_PROXI_CHECK_ENABLED),
+                    false, this);
+            mContext.getContentResolver().registerContentObserver(Settings.System.getUriFor(
+                    Settings.System.OMNI_DEVICE_FEATURE_SETTINGS),
+                    false, this);
+            update();
+            updateDozeSettings();
+        }
+
+        @Override
+        public void onChange(boolean selfChange) {
+            update();
+        }
+
+        @Override
+        public void onChange(boolean selfChange, Uri uri) {
+            if (uri.equals(Settings.System.getUriFor(
+                    Settings.System.OMNI_DEVICE_FEATURE_SETTINGS))){
+                updateDozeSettings();
+                return;
+            }
+            update();
+        }
+
+        public void update() {
+            mUseProxiCheck = Settings.System.getIntForUser(
+                    mContext.getContentResolver(), Settings.System.OMNI_DEVICE_PROXI_CHECK_ENABLED, 1,
+                    UserHandle.USER_CURRENT) == 1;
+        }
+    }
+
+    private BroadcastReceiver mSystemStateReceiver = new BroadcastReceiver() {
+         @Override
+         public void onReceive(Context context, Intent intent) {
+             if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
+                 mDispOn = true;
+                 onDisplayOn();
+             } else if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
+                 mDispOn = false;
+                 onDisplayOff();
+             } else if (intent.getAction().equals(Intent.ACTION_USER_SWITCHED)) {
+                int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL);
+                if (userId == UserHandle.USER_SYSTEM && mRestoreUser) {
+                    if (DEBUG) Log.i(TAG, "ACTION_USER_SWITCHED to system");
+                    Startup.restoreAfterUserSwitch(context);
+                } else {
+                    mRestoreUser = true;
+                }
+             }
+         }
+    };
+
+    public KeyHandler(Context context) {
+        mContext = context;
+        mDispOn = true;
+        mEventHandler = new EventHandler();
+        mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
+        mGestureWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
+                "GestureWakeLock");
+        mSettingsObserver = new SettingsObserver(mHandler);
+        mSettingsObserver.observe();
+        mNoMan = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
+        mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
+        mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
+        //mTiltSensor = getSensor(mSensorManager, "oneplus.sensor.op_motion_detect");
+        mTiltSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_TILT_DETECTOR);
+        //mPocketSensor = getSensor(mSensorManager, "oneplus.sensor.pocket");
+        mPocketSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
+        IntentFilter systemStateFilter = new IntentFilter(Intent.ACTION_SCREEN_ON);
+        systemStateFilter.addAction(Intent.ACTION_SCREEN_OFF);
+        systemStateFilter.addAction(Intent.ACTION_USER_SWITCHED);
+        mContext.registerReceiver(mSystemStateReceiver, systemStateFilter);
+    }
+
+    private class EventHandler extends Handler {
+        @Override
+        public void handleMessage(Message msg) {
+        }
+    }
+
+    @Override
+    public boolean handleKeyEvent(KeyEvent event) {
+        if (event.getAction() != KeyEvent.ACTION_UP) {
+            return false;
+        }
+
+        isFpgesture = false;
+
+        if (DEBUG) Log.i(TAG, "nav_code= " + event.getScanCode());
+        int fpcode = event.getScanCode();
+        mFPcheck = canHandleKeyEvent(event);
+        String value = getGestureValueForFPScanCode(fpcode);
+        if (mFPcheck && mDispOn && !TextUtils.isEmpty(value) && !value.equals(AppSelectListPreference.DISABLED_ENTRY)){
+            isFpgesture = true;
+            if (!launchSpecialActions(value) && !isCameraLaunchEvent(event)) {
+                    OmniVibe.performHapticFeedbackLw(HapticFeedbackConstants.LONG_PRESS, false, mContext);
+                    Intent intent = createIntent(value);
+                    if (DEBUG) Log.i(TAG, "intent = " + intent);
+                    mContext.startActivity(intent);
+            }
+        }
+        return isFpgesture;
+    }
+
+    @Override
+    public boolean canHandleKeyEvent(KeyEvent event) {
+        return ArrayUtils.contains(sSupportedGestures, event.getScanCode());
+    }
+
+    @Override
+    public boolean isDisabledKeyEvent(KeyEvent event) {
+        boolean isProxyCheckRequired = mUseProxiCheck &&
+                ArrayUtils.contains(sProxiCheckedGestures, event.getScanCode());
+        if (mProxyIsNear && isProxyCheckRequired) {
+            if (DEBUG) Log.i(TAG, "isDisabledKeyEvent: blocked by proxi sensor - scanCode=" + event.getScanCode());
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public boolean isCameraLaunchEvent(KeyEvent event) {
+        if (event.getAction() != KeyEvent.ACTION_UP) {
+            return false;
+        }
+        if (mFPcheck) {
+            String value = getGestureValueForFPScanCode(event.getScanCode());
+            return !TextUtils.isEmpty(value) && value.equals(AppSelectListPreference.CAMERA_ENTRY);
+        } else {
+            String value = getGestureValueForScanCode(event.getScanCode());
+            return !TextUtils.isEmpty(value) && value.equals(AppSelectListPreference.CAMERA_ENTRY);
+        }
+    }
+
+    @Override
+    public boolean isWakeEvent(KeyEvent event){
+        if (event.getAction() != KeyEvent.ACTION_UP) {
+            return false;
+        }
+        String value = getGestureValueForScanCode(event.getScanCode());
+        if (!TextUtils.isEmpty(value) && value.equals(AppSelectListPreference.WAKE_ENTRY)) {
+            if (DEBUG) Log.i(TAG, "isWakeEvent " + event.getScanCode() + value);
+            return true;
+        }
+        return event.getScanCode() == KEY_DOUBLE_TAP;
+    }
+
+    @Override
+    public Intent isActivityLaunchEvent(KeyEvent event) {
+        if (event.getAction() != KeyEvent.ACTION_UP) {
+            return null;
+        }
+        String value = getGestureValueForScanCode(event.getScanCode());
+        if (!TextUtils.isEmpty(value) && !value.equals(AppSelectListPreference.DISABLED_ENTRY)) {
+            if (DEBUG) Log.i(TAG, "isActivityLaunchEvent " + event.getScanCode() + value);
+            if (!launchSpecialActions(value)) {
+                OmniVibe.performHapticFeedbackLw(HapticFeedbackConstants.LONG_PRESS, false, mContext);
+                Intent intent = createIntent(value);
+                return intent;
+            }
+        }
+        return null;
+    }
+
+    private IAudioService getAudioService() {
+        IAudioService audioService = IAudioService.Stub
+                .asInterface(ServiceManager.checkService(Context.AUDIO_SERVICE));
+        if (audioService == null) {
+            Log.w(TAG, "Unable to find IAudioService interface.");
+        }
+        return audioService;
+    }
+
+    boolean isMusicActive() {
+        return mAudioManager.isMusicActive();
+    }
+
+    private void dispatchMediaKeyWithWakeLockToAudioService(int keycode) {
+        if (ActivityManagerNative.isSystemReady()) {
+            IAudioService audioService = getAudioService();
+            if (audioService != null) {
+                KeyEvent event = new KeyEvent(SystemClock.uptimeMillis(),
+                        SystemClock.uptimeMillis(), KeyEvent.ACTION_DOWN,
+                        keycode, 0);
+                dispatchMediaKeyEventUnderWakelock(event);
+                event = KeyEvent.changeAction(event, KeyEvent.ACTION_UP);
+                dispatchMediaKeyEventUnderWakelock(event);
+            }
+        }
+    }
+
+    private void dispatchMediaKeyEventUnderWakelock(KeyEvent event) {
+        if (ActivityManagerNative.isSystemReady()) {
+            MediaSessionLegacyHelper.getHelper(mContext).sendMediaButtonEvent(event, true);
+        }
+    }
+
+    private void onDisplayOn() {
+        if (DEBUG) Log.i(TAG, "Display on");
+        if (enableProxiSensor()) {
+            mSensorManager.unregisterListener(mProximitySensor, mPocketSensor);
+        }
+        if (mUseTiltCheck) {
+            mSensorManager.unregisterListener(mTiltSensorListener, mTiltSensor);
+        }
+    }
+
+    private void onDisplayOff() {
+        if (DEBUG) Log.i(TAG, "Display off");
+        if (enableProxiSensor()) {
+            mProxyWasNear = false;
+            mSensorManager.registerListener(mProximitySensor, mPocketSensor,
+                    SensorManager.SENSOR_DELAY_NORMAL);
+            mProxySensorTimestamp = SystemClock.elapsedRealtime();
+        }
+        if (mUseTiltCheck) {
+            mSensorManager.registerListener(mTiltSensorListener, mTiltSensor,
+                    SensorManager.SENSOR_DELAY_NORMAL);
+        }
+    }
+
+    private void disableTorch() {
+        if (mTorchState) {
+            mToggleTorch = true;
+            mTorchState = false;
+            toggleTorch();
+        }
+    }
+
+    private void toggleTorch() {
+        IStatusBarService service = getStatusBarService();
+        if (service != null) {
+            try {
+                if (mToggleTorch) {
+                    service.toggleCameraFlashState(mTorchState);
+                    mToggleTorch = false;
+                } else {
+                    service.toggleCameraFlash();
+                }
+            } catch (RemoteException e) {
+                // do nothing.
+            }
+        }
+    }
+
+    private Intent createIntent(String value) {
+        ComponentName componentName = ComponentName.unflattenFromString(value);
+        Intent intent = new Intent(Intent.ACTION_MAIN);
+        intent.addCategory(Intent.CATEGORY_LAUNCHER);
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+                | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
+        intent.setComponent(componentName);
+        return intent;
+    }
+
+    private boolean launchSpecialActions(String value) {
+        if (value.equals(AppSelectListPreference.TORCH_ENTRY)) {
+            mGestureWakeLock.acquire(GESTURE_WAKELOCK_DURATION);
+            toggleTorch();
+            OmniVibe.performHapticFeedbackLw(HapticFeedbackConstants.LONG_PRESS, false, mContext);
+            return true;
+        } else if (value.equals(AppSelectListPreference.MUSIC_PLAY_ENTRY)) {
+            mGestureWakeLock.acquire(GESTURE_WAKELOCK_DURATION);
+            OmniVibe.performHapticFeedbackLw(HapticFeedbackConstants.LONG_PRESS, false, mContext);
+            dispatchMediaKeyWithWakeLockToAudioService(KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE);
+            return true;
+        } else if (value.equals(AppSelectListPreference.MUSIC_NEXT_ENTRY)) {
+            if (isMusicActive()) {
+                mGestureWakeLock.acquire(GESTURE_WAKELOCK_DURATION);
+                OmniVibe.performHapticFeedbackLw(HapticFeedbackConstants.LONG_PRESS, false, mContext);
+                dispatchMediaKeyWithWakeLockToAudioService(KeyEvent.KEYCODE_MEDIA_NEXT);
+            }
+            return true;
+        } else if (value.equals(AppSelectListPreference.MUSIC_PREV_ENTRY)) {
+            if (isMusicActive()) {
+                mGestureWakeLock.acquire(GESTURE_WAKELOCK_DURATION);
+                OmniVibe.performHapticFeedbackLw(HapticFeedbackConstants.LONG_PRESS, false, mContext);
+                dispatchMediaKeyWithWakeLockToAudioService(KeyEvent.KEYCODE_MEDIA_PREVIOUS);
+            }
+            return true;
+        } else if (value.equals(AppSelectListPreference.VOLUME_UP_ENTRY)) {
+            OmniVibe.performHapticFeedbackLw(HapticFeedbackConstants.LONG_PRESS, false, mContext);
+            mAudioManager.adjustSuggestedStreamVolume(AudioManager.ADJUST_RAISE,AudioManager.USE_DEFAULT_STREAM_TYPE,AudioManager.FLAG_SHOW_UI);
+            return true;
+        } else if (value.equals(AppSelectListPreference.VOLUME_DOWN_ENTRY)) {
+            OmniVibe.performHapticFeedbackLw(HapticFeedbackConstants.LONG_PRESS, false, mContext);
+            mAudioManager.adjustSuggestedStreamVolume(AudioManager.ADJUST_LOWER,AudioManager.USE_DEFAULT_STREAM_TYPE,AudioManager.FLAG_SHOW_UI);
+            return true;
+        } else if (value.equals(AppSelectListPreference.BROWSE_SCROLL_DOWN_ENTRY)) {
+            OmniVibe.performHapticFeedbackLw(HapticFeedbackConstants.LONG_PRESS, false, mContext);
+            OmniUtils.sendKeycode(KeyEvent.KEYCODE_PAGE_DOWN);
+            return true;
+        } else if (value.equals(AppSelectListPreference.BROWSE_SCROLL_UP_ENTRY)) {
+            OmniVibe.performHapticFeedbackLw(HapticFeedbackConstants.LONG_PRESS, false, mContext);
+            OmniUtils.sendKeycode(KeyEvent.KEYCODE_PAGE_UP);
+            return true;
+        } else if (value.equals(AppSelectListPreference.NAVIGATE_BACK_ENTRY)) {
+            OmniVibe.performHapticFeedbackLw(HapticFeedbackConstants.LONG_PRESS, false, mContext);
+            OmniUtils.sendKeycode(KeyEvent.KEYCODE_BACK);
+            return true;
+        } else if (value.equals(AppSelectListPreference.NAVIGATE_HOME_ENTRY)) {
+            OmniVibe.performHapticFeedbackLw(HapticFeedbackConstants.LONG_PRESS, false, mContext);
+            OmniUtils.sendKeycode(KeyEvent.KEYCODE_HOME);
+            return true;
+        } else if (value.equals(AppSelectListPreference.NAVIGATE_RECENT_ENTRY)) {
+            OmniVibe.performHapticFeedbackLw(HapticFeedbackConstants.LONG_PRESS, false, mContext);
+            OmniUtils.sendKeycode(KeyEvent.KEYCODE_APP_SWITCH);
+            return true;
+        }
+        return false;
+    }
+
+    private String getGestureValueForScanCode(int scanCode) {
+        switch(scanCode) {
+            case GESTURE_II_SCANCODE:
+                return Settings.System.getStringForUser(mContext.getContentResolver(),
+                    GestureSettings.DEVICE_GESTURE_MAPPING_0, UserHandle.USER_CURRENT);
+            case GESTURE_CIRCLE_SCANCODE:
+                return Settings.System.getStringForUser(mContext.getContentResolver(),
+                    GestureSettings.DEVICE_GESTURE_MAPPING_1, UserHandle.USER_CURRENT);
+            case GESTURE_V_SCANCODE:
+                return Settings.System.getStringForUser(mContext.getContentResolver(),
+                    GestureSettings.DEVICE_GESTURE_MAPPING_2, UserHandle.USER_CURRENT);
+            case GESTURE_A_SCANCODE:
+                return Settings.System.getStringForUser(mContext.getContentResolver(),
+                    GestureSettings.DEVICE_GESTURE_MAPPING_3, UserHandle.USER_CURRENT);
+            case GESTURE_LEFT_V_SCANCODE:
+                return Settings.System.getStringForUser(mContext.getContentResolver(),
+                    GestureSettings.DEVICE_GESTURE_MAPPING_4, UserHandle.USER_CURRENT);
+            case GESTURE_RIGHT_V_SCANCODE:
+                return Settings.System.getStringForUser(mContext.getContentResolver(),
+                    GestureSettings.DEVICE_GESTURE_MAPPING_5, UserHandle.USER_CURRENT);
+            case GESTURE_DOWN_SWIPE_SCANCODE:
+                return Settings.System.getStringForUser(mContext.getContentResolver(),
+                    GestureSettings.DEVICE_GESTURE_MAPPING_6, UserHandle.USER_CURRENT);
+            case GESTURE_UP_SWIPE_SCANCODE:
+                return Settings.System.getStringForUser(mContext.getContentResolver(),
+                    GestureSettings.DEVICE_GESTURE_MAPPING_7, UserHandle.USER_CURRENT);
+            case GESTURE_LEFT_SWIPE_SCANCODE:
+                return Settings.System.getStringForUser(mContext.getContentResolver(),
+                    GestureSettings.DEVICE_GESTURE_MAPPING_8, UserHandle.USER_CURRENT);
+            case GESTURE_RIGHT_SWIPE_SCANCODE:
+                return Settings.System.getStringForUser(mContext.getContentResolver(),
+                    GestureSettings.DEVICE_GESTURE_MAPPING_9, UserHandle.USER_CURRENT);
+        }
+        return null;
+    }
+
+    private String getGestureValueForFPScanCode(int scanCode) {
+        if (FP_GESTURE_LONG_PRESS == scanCode) {
+            return Settings.System.getStringForUser(mContext.getContentResolver(),
+                   GestureSettings.DEVICE_GESTURE_MAPPING_10, UserHandle.USER_CURRENT);
+        }
+        return null;
+    }
+
+    private void launchDozePulse() {
+        if (DEBUG) Log.i(TAG, "Doze pulse");
+        mContext.sendBroadcastAsUser(new Intent(DOZE_INTENT),
+                new UserHandle(UserHandle.USER_CURRENT));
+    }
+
+    private boolean enableProxiSensor() {
+        return mUsePocketCheck || mUseWaveCheck || mUseProxiCheck;
+    }
+
+    private void updateDozeSettings() {
+        String value = Settings.System.getStringForUser(mContext.getContentResolver(),
+                    Settings.System.OMNI_DEVICE_FEATURE_SETTINGS,
+                    UserHandle.USER_CURRENT);
+        if (DEBUG) Log.i(TAG, "Doze settings = " + value);
+        if (!TextUtils.isEmpty(value)) {
+            String[] parts = value.split(":");
+            mUseWaveCheck = Boolean.valueOf(parts[0]);
+            mUsePocketCheck = Boolean.valueOf(parts[1]);
+            mUseTiltCheck = Boolean.valueOf(parts[2]);
+        }
+    }
+
+    protected static Sensor getSensor(SensorManager sm, String type) {
+        for (Sensor sensor : sm.getSensorList(Sensor.TYPE_ALL)) {
+            if (type.equals(sensor.getStringType())) {
+                return sensor;
+            }
+        }
+        return null;
+    }
+
+    IStatusBarService getStatusBarService() {
+        return IStatusBarService.Stub.asInterface(ServiceManager.getService("statusbar"));
+    }
+
+    @Override
+    public boolean getCustomProxiIsNear(SensorEvent event) {
+        return event.values[0] == 1;
+    }
+}
diff --git a/DeviceParts/src/org/omnirom/device/Startup.java b/DeviceParts/src/org/omnirom/device/Startup.java
new file mode 100644
index 0000000..5920134
--- /dev/null
+++ b/DeviceParts/src/org/omnirom/device/Startup.java
@@ -0,0 +1,141 @@
+/*
+* Copyright (C) 2013 The OmniROM Project
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+*/
+package org.omnirom.device;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.support.v7.preference.PreferenceManager;
+import android.provider.Settings;
+import android.text.TextUtils;
+
+public class Startup extends BroadcastReceiver {
+    private static void restore(String file, boolean enabled) {
+        if (file == null) {
+            return;
+        }
+        Utils.writeValue(file, enabled ? "1" : "0");
+    }
+
+    private static void restore(String file, String value) {
+        if (file == null) {
+            return;
+        }
+        Utils.writeValue(file, value);
+    }
+
+    private static String getGestureFile(String key) {
+        return GestureSettings.getGestureFile(key);
+    }
+
+    private void maybeImportOldSettings(Context context) {
+        boolean imported = Settings.System.getInt(context.getContentResolver(), "omni_device_setting_imported", 0) != 0;
+        if (!imported) {
+            Settings.System.putInt(context.getContentResolver(), "omni_device_setting_imported", 1);
+        }
+    }
+
+    @Override
+    public void onReceive(final Context context, final Intent bootintent) {
+        maybeImportOldSettings(context);
+        restoreAfterUserSwitch(context);
+    }
+
+    public static void restoreAfterUserSwitch(Context context) {
+        // double swipe -> music play
+        String mapping = GestureSettings.DEVICE_GESTURE_MAPPING_0;
+        String value = Settings.System.getString(context.getContentResolver(), mapping);
+        if (TextUtils.isEmpty(value)) {
+            value = AppSelectListPreference.MUSIC_PLAY_ENTRY;
+            Settings.System.putString(context.getContentResolver(), mapping, value);
+        }
+        boolean enabled = !value.equals(AppSelectListPreference.DISABLED_ENTRY);
+        restore(getGestureFile(GestureSettings.KEY_DOUBLE_SWIPE_APP), enabled);
+
+        // circle -> camera
+        mapping = GestureSettings.DEVICE_GESTURE_MAPPING_1;
+        value = Settings.System.getString(context.getContentResolver(), mapping);
+        if (TextUtils.isEmpty(value)) {
+            value = AppSelectListPreference.CAMERA_ENTRY;
+            Settings.System.putString(context.getContentResolver(), mapping, value);
+        }
+        enabled = !value.equals(AppSelectListPreference.DISABLED_ENTRY);
+        restore(getGestureFile(GestureSettings.KEY_CIRCLE_APP), enabled);
+
+        // down arrow -> flashlight
+        mapping = GestureSettings.DEVICE_GESTURE_MAPPING_2;
+        value = Settings.System.getString(context.getContentResolver(), mapping);
+        if (TextUtils.isEmpty(value)) {
+            value = AppSelectListPreference.TORCH_ENTRY;
+            Settings.System.putString(context.getContentResolver(), mapping, value);
+        }
+        enabled = !value.equals(AppSelectListPreference.DISABLED_ENTRY);
+        restore(getGestureFile(GestureSettings.KEY_DOWN_ARROW_APP), enabled);
+
+        // up arrow
+        value = Settings.System.getString(context.getContentResolver(), GestureSettings.DEVICE_GESTURE_MAPPING_3);
+        enabled = !TextUtils.isEmpty(value) && !value.equals(AppSelectListPreference.DISABLED_ENTRY);
+        restore(getGestureFile(GestureSettings.KEY_UP_ARROW_APP), enabled);
+
+        // left arrow -> music prev
+        mapping = GestureSettings.DEVICE_GESTURE_MAPPING_4;
+        value = Settings.System.getString(context.getContentResolver(), mapping);
+        if (TextUtils.isEmpty(value)) {
+            value = AppSelectListPreference.MUSIC_PREV_ENTRY;
+            Settings.System.putString(context.getContentResolver(), mapping, value);
+        }
+        enabled = !value.equals(AppSelectListPreference.DISABLED_ENTRY);
+        restore(getGestureFile(GestureSettings.KEY_LEFT_ARROW_APP), enabled);
+
+        // right arrow -> music next
+        mapping = GestureSettings.DEVICE_GESTURE_MAPPING_5;
+        value = Settings.System.getString(context.getContentResolver(), mapping);
+        if (TextUtils.isEmpty(value)) {
+            value = AppSelectListPreference.MUSIC_NEXT_ENTRY;
+            Settings.System.putString(context.getContentResolver(), mapping, value);
+        }
+        enabled = !value.equals(AppSelectListPreference.DISABLED_ENTRY);
+        restore(getGestureFile(GestureSettings.KEY_RIGHT_ARROW_APP), enabled);
+
+        // down swipe
+        value = Settings.System.getString(context.getContentResolver(), GestureSettings.DEVICE_GESTURE_MAPPING_6);
+        enabled = !TextUtils.isEmpty(value) && !value.equals(AppSelectListPreference.DISABLED_ENTRY);
+        restore(getGestureFile(GestureSettings.KEY_DOWN_SWIPE_APP), enabled);
+
+        // up swipe
+        value = Settings.System.getString(context.getContentResolver(), GestureSettings.DEVICE_GESTURE_MAPPING_7);
+        enabled = !TextUtils.isEmpty(value) && !value.equals(AppSelectListPreference.DISABLED_ENTRY);
+        restore(getGestureFile(GestureSettings.KEY_UP_SWIPE_APP), enabled);
+
+        // left swipe
+        value = Settings.System.getString(context.getContentResolver(), GestureSettings.DEVICE_GESTURE_MAPPING_8);
+        enabled = !TextUtils.isEmpty(value) && !value.equals(AppSelectListPreference.DISABLED_ENTRY);
+        restore(getGestureFile(GestureSettings.KEY_LEFT_SWIPE_APP), enabled);
+
+        // right swipe
+        value = Settings.System.getString(context.getContentResolver(), GestureSettings.DEVICE_GESTURE_MAPPING_9);
+        enabled = !TextUtils.isEmpty(value) && !value.equals(AppSelectListPreference.DISABLED_ENTRY);
+        restore(getGestureFile(GestureSettings.KEY_RIGHT_SWIPE_APP), enabled);
+
+        // fp down swipe
+        value = Settings.System.getString(context.getContentResolver(), GestureSettings.DEVICE_GESTURE_MAPPING_10);
+        enabled = !TextUtils.isEmpty(value) && !value.equals(AppSelectListPreference.DISABLED_ENTRY);
+        restore(getGestureFile(GestureSettings.FP_GESTURE_LONG_PRESS_APP), enabled);
+    }
+}
diff --git a/DeviceParts/src/org/omnirom/device/Utils.java b/DeviceParts/src/org/omnirom/device/Utils.java
new file mode 100644
index 0000000..389246f
--- /dev/null
+++ b/DeviceParts/src/org/omnirom/device/Utils.java
@@ -0,0 +1,104 @@
+/*
+* Copyright (C) 2013 The OmniROM Project
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*
+*/
+package org.omnirom.device;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.BufferedReader;
+import java.io.FileReader;
+
+public class Utils {
+
+    /**
+     * Write a string value to the specified file.
+     * @param filename      The filename
+     * @param value         The value
+     */
+    public static void writeValue(String filename, String value) {
+        if (filename == null) {
+            return;
+        }
+        try {
+            FileOutputStream fos = new FileOutputStream(new File(filename));
+            fos.write(value.getBytes());
+            fos.flush();
+            fos.close();
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * Check if the specified file exists.
+     * @param filename      The filename
+     * @return              Whether the file exists or not
+     */
+    public static boolean fileExists(String filename) {
+        if (filename == null) {
+            return false;
+        }
+        return new File(filename).exists();
+    }
+
+    public static boolean fileWritable(String filename) {
+        return fileExists(filename) && new File(filename).canWrite();
+    }
+
+    public static String readLine(String filename) {
+        if (filename == null) {
+            return null;
+        }
+        BufferedReader br = null;
+        String line = null;
+        try {
+            br = new BufferedReader(new FileReader(filename), 1024);
+            line = br.readLine();
+        } catch (IOException e) {
+            return null;
+        } finally {
+            if (br != null) {
+                try {
+                    br.close();
+                } catch (IOException e) {
+                    // ignore
+                }
+            }
+        }
+        return line;
+    }
+
+    public static boolean getFileValueAsBoolean(String filename, boolean defValue) {
+        String fileValue = readLine(filename);
+        if(fileValue!=null){
+            return (fileValue.equals("0")?false:true);
+        }
+        return defValue;
+    }
+
+    public static String getFileValue(String filename, String defValue) {
+        String fileValue = readLine(filename);
+        if(fileValue!=null){
+            return fileValue;
+        }
+        return defValue;
+    }
+}
diff --git a/device.mk b/device.mk
index 998b3de..95a8964 100755
--- a/device.mk
+++ b/device.mk
@@ -72,6 +72,10 @@
     animation.txt \
     font_charger.png
 
+# DeviceParts
+PRODUCT_PACKAGES += \
+    DeviceParts
+
 # Display
 PRODUCT_PACKAGES += \
     libion \
diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml
index 7cf588f..09e7f1b 100644
--- a/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/overlay/frameworks/base/core/res/res/values/config.xml
@@ -315,6 +315,10 @@
     <!-- enable doze powersaving mode -->
     <bool name="config_enableAutoPowerModes">true</bool>
 
+    <!-- Control whether the always on display mode is enabled by default. This value will be used
+         during initialization when the setting is still null. -->
+    <bool name="config_dozeAlwaysOnEnabled">false</bool>
+
     <!-- Control the behavior when the user long presses the home button.
         0 - Nothing
         1 - Recent apps view in SystemUI
@@ -394,4 +398,11 @@
 
     <!-- Is the notification LED intrusive? Used to decide if there should be a disable option -->
     <bool name="config_intrusiveNotificationLed">true</bool>
+
+    <!-- The list absolute paths of jar/apk files containing the device specific handlers,
+        delimited by File.pathSeparator, which defaults to ":" on Android  -->
+    <string name="config_deviceKeyHandlerLib" translatable="false">/system/priv-app/DeviceParts/DeviceParts.apk</string>
+    <!-- Full qualified name of the class that implements
+        com.android.internal.os.DeviceKeyHandler interface. -->
+    <string name="config_deviceKeyHandlerClass" translatable="false">org.omnirom.device.KeyHandler</string>
 </resources>
