diff --git a/XiaomiParts/.idea/XiaomiParts.iml b/XiaomiParts/.idea/XiaomiParts.iml
new file mode 100644
index 00000000..765dd4ae
--- /dev/null
+++ b/XiaomiParts/.idea/XiaomiParts.iml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/XiaomiParts/.idea/encodings.xml b/XiaomiParts/.idea/encodings.xml
new file mode 100644
index 00000000..15a15b21
--- /dev/null
+++ b/XiaomiParts/.idea/encodings.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/XiaomiParts/.idea/libraries/android_support_v7_preference_intermediates.xml b/XiaomiParts/.idea/libraries/android_support_v7_preference_intermediates.xml
new file mode 100644
index 00000000..441f0a63
--- /dev/null
+++ b/XiaomiParts/.idea/libraries/android_support_v7_preference_intermediates.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/XiaomiParts/.idea/misc.xml b/XiaomiParts/.idea/misc.xml
new file mode 100644
index 00000000..6695719f
--- /dev/null
+++ b/XiaomiParts/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/XiaomiParts/.idea/modules.xml b/XiaomiParts/.idea/modules.xml
new file mode 100644
index 00000000..d8d3e372
--- /dev/null
+++ b/XiaomiParts/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/XiaomiParts/.idea/vcs.xml b/XiaomiParts/.idea/vcs.xml
new file mode 100644
index 00000000..6c0b8635
--- /dev/null
+++ b/XiaomiParts/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/XiaomiParts/.idea/workspace.xml b/XiaomiParts/.idea/workspace.xml
new file mode 100644
index 00000000..a678ed4f
--- /dev/null
+++ b/XiaomiParts/.idea/workspace.xml
@@ -0,0 +1,565 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1562075939956
+
+
+ 1562075939956
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Android
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1.8
+
+
+
+
+
+
+
+
+
+
+
+ XiaomiParts
+
+
+
+
+
+
+
+
+
+
+
+ android-support-v7-preference_intermediates
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/XiaomiParts/Android.mk b/XiaomiParts/Android.mk
new file mode 100644
index 00000000..76462740
--- /dev/null
+++ b/XiaomiParts/Android.mk
@@ -0,0 +1,38 @@
+LOCAL_PATH := $(call my-dir)
+ifeq ($(BOARD_VENDOR_PLATFORM),xiaomi-sdm660)
+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 := XiaomiParts
+LOCAL_CERTIFICATE := platform
+LOCAL_PRIVILEGED_MODULE := true
+LOCAL_PRIVATE_PLATFORM_APIS := 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/XiaomiParts/res))) \
+ $(wildcard $(foreach dir, $(DEVICE_PACKAGE_OVERLAYS), \
+ $(addprefix $(dir)/, packages/apps/XiaomiParts/res))))
+
+LOCAL_RESOURCE_DIR := $(package_resource_overlays) $(LOCAL_RESOURCE_DIR)
+
+LOCAL_PROGUARD_ENABLED := disabled
+LOCAL_DEX_PREOPT := false
+
+include frameworks/base/packages/SettingsLib/common.mk
+
+include $(BUILD_PACKAGE)
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
+endif
diff --git a/XiaomiParts/AndroidManifest.xml b/XiaomiParts/AndroidManifest.xml
new file mode 100644
index 00000000..0031bdfb
--- /dev/null
+++ b/XiaomiParts/AndroidManifest.xml
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/XiaomiParts/gen/org/lineageos/settings/device/BuildConfig.java b/XiaomiParts/gen/org/lineageos/settings/device/BuildConfig.java
new file mode 100644
index 00000000..70f6221a
--- /dev/null
+++ b/XiaomiParts/gen/org/lineageos/settings/device/BuildConfig.java
@@ -0,0 +1,8 @@
+/*___Generated_by_IDEA___*/
+
+package org.lineageos.settings.device;
+
+/* This stub is only used by the IDE. It is NOT the BuildConfig class actually packed into the APK */
+public final class BuildConfig {
+ public final static boolean DEBUG = Boolean.parseBoolean(null);
+}
\ No newline at end of file
diff --git a/XiaomiParts/gen/org/lineageos/settings/device/Manifest.java b/XiaomiParts/gen/org/lineageos/settings/device/Manifest.java
new file mode 100644
index 00000000..fa5d2e48
--- /dev/null
+++ b/XiaomiParts/gen/org/lineageos/settings/device/Manifest.java
@@ -0,0 +1,7 @@
+/*___Generated_by_IDEA___*/
+
+package org.lineageos.settings.device;
+
+/* This stub is only used by the IDE. It is NOT the Manifest class actually packed into the APK */
+public final class Manifest {
+}
\ No newline at end of file
diff --git a/XiaomiParts/gen/org/lineageos/settings/device/R.java b/XiaomiParts/gen/org/lineageos/settings/device/R.java
new file mode 100644
index 00000000..20cd02e5
--- /dev/null
+++ b/XiaomiParts/gen/org/lineageos/settings/device/R.java
@@ -0,0 +1,7 @@
+/*___Generated_by_IDEA___*/
+
+package org.lineageos.settings.device;
+
+/* This stub is only used by the IDE. It is NOT the R class actually packed into the APK */
+public final class R {
+}
\ No newline at end of file
diff --git a/XiaomiParts/res/drawable/action_presets.xml b/XiaomiParts/res/drawable/action_presets.xml
new file mode 100644
index 00000000..5e9b32ca
--- /dev/null
+++ b/XiaomiParts/res/drawable/action_presets.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/XiaomiParts/res/drawable/action_reset.xml b/XiaomiParts/res/drawable/action_reset.xml
new file mode 100644
index 00000000..28e7f8f4
--- /dev/null
+++ b/XiaomiParts/res/drawable/action_reset.xml
@@ -0,0 +1,9 @@
+
+
+
\ No newline at end of file
diff --git a/XiaomiParts/res/drawable/round_build_24.xml b/XiaomiParts/res/drawable/round_build_24.xml
new file mode 100755
index 00000000..fbf1d172
--- /dev/null
+++ b/XiaomiParts/res/drawable/round_build_24.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/XiaomiParts/res/drawable/spectrum_balance.xml b/XiaomiParts/res/drawable/spectrum_balance.xml
new file mode 100644
index 00000000..90560a3f
--- /dev/null
+++ b/XiaomiParts/res/drawable/spectrum_balance.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
diff --git a/XiaomiParts/res/layout/custom_seekbar_preference_dialog.xml b/XiaomiParts/res/layout/custom_seekbar_preference_dialog.xml
new file mode 100644
index 00000000..6979b1e9
--- /dev/null
+++ b/XiaomiParts/res/layout/custom_seekbar_preference_dialog.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/XiaomiParts/res/layout/preference_custom_seekbar.xml b/XiaomiParts/res/layout/preference_custom_seekbar.xml
new file mode 100644
index 00000000..1c729900
--- /dev/null
+++ b/XiaomiParts/res/layout/preference_custom_seekbar.xml
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/XiaomiParts/res/menu/menu_reset.xml b/XiaomiParts/res/menu/menu_reset.xml
new file mode 100644
index 00000000..38600424
--- /dev/null
+++ b/XiaomiParts/res/menu/menu_reset.xml
@@ -0,0 +1,15 @@
+
\ No newline at end of file
diff --git a/XiaomiParts/res/values-ar-rSA/strings.xml b/XiaomiParts/res/values-ar-rSA/strings.xml
new file mode 100644
index 00000000..ea23a422
--- /dev/null
+++ b/XiaomiParts/res/values-ar-rSA/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ محسن صوت Mi
+ تحسين جودة الصوت
+ اختيار نوع سماعة الرأس
+ اختر إعداد
+
+ الافتراضي
+ Mi Earbuds
+ Mi In-Ear (2013)
+ Mi Piston-1
+ عام
+ عامة In-Ear
+ إصدار رئيسي
+ Mi Piston-2
+ إصدار قياسي
+ سماعات رأس Mi
+ إصدار شبابي
+ إصدار اللون
+ Mi In-Ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ إلغاء الضوضاء Mi Type-C
+ إلغاء الضوضاء Mi 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+ الافتراضي
+ روك
+ جاز
+ بوب
+ كلاسيك
+ هيب هوب
+ إيقاع
+ الكتروني
+ الريف
+ رقص
+ معدن
+
diff --git a/XiaomiParts/res/values-as-rIN/strings.xml b/XiaomiParts/res/values-as-rIN/strings.xml
new file mode 100644
index 00000000..bb9928de
--- /dev/null
+++ b/XiaomiParts/res/values-as-rIN/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi ধ্বনি পৰিবৰ্ধক
+ অডিঅ\' গুণমান অনুকূলিত কৰক
+ হেডফোনৰ প্ৰকাৰ পচন্দ কৰক
+ এটা প্ৰিছেট পচন্দ কৰক
+
+ ডিফ\'ল্ট
+ Mi ইয়েৰবাড
+ Mi ইন-ইয়েৰ (2013)
+ Mi পিষ্টন-1
+ সাধাৰণ
+ সাধাৰণ ইন-ইয়েৰ
+ প্ৰাথমিক সংস্কৰণ
+ Mi পিষ্টন-2
+ মান্য সংস্কৰণ
+ Mi হেডফোন
+ যুৱ সংস্কৰণ
+ ৰঙীণ সংস্কৰণ
+ Mi ইন-ইয়েৰ
+ Mi কেপচুল
+ Mi ইন-ইয়েৰ প্ৰ\'
+ Mi আৰাম
+ Mi কোলাহল বাতিলকৰণ টাইপ-C
+ Mi কোলাহল বাতিলকৰণ 3.5মি.মি.
+ Mi হাফ ইন ইয়েৰ
+ Mi ইন-ইয়েৰ 2
+ Mi ইয়েৰফোন বেছিক
+ Mi ইয়েৰফোন
+
+ ডিফ\'ল্ট
+ ৰক
+ জাজ
+ পপ
+ ক্লাছিকেল
+ হিপ হপ
+ ব্লুজ
+ ইলেকট্ৰনিক
+ কাণ্ট্ৰি
+ নৃত্য
+ মেটেল
+
diff --git a/XiaomiParts/res/values-az-rAZ/strings.xml b/XiaomiParts/res/values-az-rAZ/strings.xml
new file mode 100644
index 00000000..bdaba192
--- /dev/null
+++ b/XiaomiParts/res/values-az-rAZ/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi Səs Gücləndirici
+ Səs keyfiyyətini optimallaşdır
+ Qulaqlıq növünü seçin
+ Ön tənzimləmə seçin
+
+ Varsayılan
+ Mi Qulaqlıqları
+ Mi Qulaq-İçi (2013)
+ Mi Piston-1
+ Ümumi
+ Ümumi Qulaq-İçi
+ Sadə versiya
+ Mi Piston-2
+ Standart versiya
+ Mi Qulaqlıqları
+ Gənc versiyası
+ Rəngli versiyası
+ Mi Qulaq-İçi
+ Mi Kapsul
+ Mi Qulaq-İçi Pro
+ Mi Rahatlıq
+ Mi Səs-küy Əngəlləmə Type-C
+ Mi Səs-küy Əngəlləmə 3.5mm
+ Mi Yarı Qulaq-içi
+ Mi Qulaq-İçi 2
+ Mi Qulaqlıq Sadə
+ Mi Qulaqlıq
+
+ Varsayılan
+ Rok
+ Caz
+ Pop
+ Klassik
+ Hip Hop
+ Blyuz
+ Elektronik
+ Kantri
+ Rəqs
+ Metal
+
diff --git a/XiaomiParts/res/values-be-rBY/strings.xml b/XiaomiParts/res/values-be-rBY/strings.xml
new file mode 100644
index 00000000..4f596caf
--- /dev/null
+++ b/XiaomiParts/res/values-be-rBY/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Паляпшэнне гуку Mi
+ Паляпшэнне якасці гуку
+ Выберыце тып навушнікаў
+ Выбар усталёўкі
+
+ Па змаўчанні
+ Mi-навушнікі
+ Mi In-Ear (2013)
+ Mi-пістоны 1
+ Звычайныя навушнікі
+ Звычайныя ўкладышы
+ Звыч. пістоны
+ Mi-пістоны 2
+ Стандартная версія
+ Mi навушнікі
+ Моладзевая версія
+ Каляровае версія
+ Mi-укладышы
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Mi Noise Cancelling Type-C
+ Mi Noise Cancelling 3.5mm
+ Mi-укладышы
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+ Па змаўчанні
+ Рок
+ Джаз
+ Поп
+ Класіка
+ Хіп-хоп
+ Блюз
+ Электра
+ Кантры
+ Танцавальная
+ Метал
+
diff --git a/XiaomiParts/res/values-bg-rBG/strings.xml b/XiaomiParts/res/values-bg-rBG/strings.xml
new file mode 100644
index 00000000..fd892563
--- /dev/null
+++ b/XiaomiParts/res/values-bg-rBG/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Използване на MiSound enhancer
+ Оптимизиране качеството на звука
+ Вид слушалки
+ Избери предв. зададен
+
+ По подразбиране
+ Mi слушалки
+ Mi In-Ear (2013)
+ Mi piston-1
+ Обикновени слушалки
+ Обикновени \"тапи за уши\"
+ Обикновени
+ Mi piston-2
+ Стандартна версия
+ Mi Слушалки
+ Mi piston-youth
+ Цветно издание
+ Mi in-ear headphones
+ Mi капсула
+ Mi In-Ear Pro
+ Mi Комфорт
+ Mi шумопотискане Тип-C
+ Mi шумопотискане 3.5mm
+ Вградени слушалки Mi
+ Mi слушалки на две уши
+ Mi Слушалки
+ Mi Слушалки
+
+ По подразбиране
+ Рок
+ Джаз
+ Поп
+ Класика
+ Хип-Хоп
+ Блус
+ Електронна
+ Кънтри
+ Танцувална
+ Метъл
+
diff --git a/XiaomiParts/res/values-bn-rBD/strings.xml b/XiaomiParts/res/values-bn-rBD/strings.xml
new file mode 100644
index 00000000..812b7b13
--- /dev/null
+++ b/XiaomiParts/res/values-bn-rBD/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi সাউন্ড বিবর্ধক
+ অডিওয়ের গুণমান অপ্টিমাইজ করুন
+ হেডফোনের প্রকার চয়ন করুন
+ একটি প্রিসেট বাছুন
+
+ ডিফল্ট
+ Mi ইয়ারবাড
+ Mi ইন- ইয়ার(2013)
+ Mi পিসটন-১
+ সাধারণ
+ সাধারণত কানে
+ বেসিক সংস্করণ
+ Mi পিসটন-২
+ আদর্শ সংস্করণ
+ Mi হেডফোন
+ যুবা সংস্করণ
+ রঙ সম্পাদক
+ Mi ইন-ইয়ার
+ Mi ক্যাপসুল
+ Mi ইন ইয়ার প্রো
+ Mi কমফর্ট
+ Mi কোলাহল বাতিল টাইপ-C
+ Mi কোলাহল বাতিল (3.5মি. মি.)
+ Mi হাফ ইন ইয়ার
+ Mi ইন-ইয়ার 2
+ Mi ইয়ারফোন বেসিক
+ Mi ইয়েরফোন
+
+ ডিফল্ট
+ রক
+ জ্যাজ
+ পপ
+ ক্লাসিকাল
+ হিপ হপ
+ ব্লুজ
+ ইলেক্ট্রনিক
+ কান্ট্রি
+ নাচ
+ মেটাল
+
diff --git a/XiaomiParts/res/values-bs-rBA/strings.xml b/XiaomiParts/res/values-bs-rBA/strings.xml
new file mode 100644
index 00000000..c41bd564
--- /dev/null
+++ b/XiaomiParts/res/values-bs-rBA/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi Sound pojačivač
+ Optimizovanje kvaliteta zvuka
+ Odaberite vrstu slušalica
+ Izaberite postavljenje
+
+ Podrazumijevano
+ Mi Earbuds
+ Mi In-Ear (2013)
+ Mi Piston-1
+ Opšte
+ Opšte In-Ear
+ Osnovno izdanje
+ Mi Piston-2
+ Standardno izdanje
+ Mi slušalice
+ Izdanje za mlade
+ Izdanje u boji
+ Mi In-Ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Mi Noise otkazivanje buke tip-C
+ Mi Noise otkazivanje 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+ Podrazumijevano
+ Rok
+ Džez
+ Pop
+ Klasična
+ Hip hop
+ Bluz
+ Elektronska
+ Kantri
+ Dens
+ Metal
+
diff --git a/XiaomiParts/res/values-ca-rES/strings.xml b/XiaomiParts/res/values-ca-rES/strings.xml
new file mode 100644
index 00000000..856a6258
--- /dev/null
+++ b/XiaomiParts/res/values-ca-rES/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Potenciador de so Mi
+ Optimitza la qualitat d\'àudio
+ Seleccioneu el tipus d\'auriculars
+ Trieu una configuració per defecte
+
+ Per defecte
+ Mi
+ Mi In-Ear (2013)
+ Mi Piston-1
+ Normals
+ In-ear normals
+ Edició Bàsica
+ Mi Piston-2
+ Edició Estàndard
+ Mi Auriculars
+ Edició Jove
+ Edició de color
+ Mi in-ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Cancel·la sorolls Mi Tipus C
+ Cancel·la sorolls Mi 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Auriculars Mi Bàsic
+ Mi Auriculars
+
+ Per defecte
+ Rock
+ Jazz
+ Pop
+ Clàssica
+ Hip Hop
+ Blues
+ Electrònica
+ Country
+ Dance
+ Metall
+
diff --git a/XiaomiParts/res/values-cs-rCZ/strings.xml b/XiaomiParts/res/values-cs-rCZ/strings.xml
new file mode 100644
index 00000000..a1f34f7b
--- /dev/null
+++ b/XiaomiParts/res/values-cs-rCZ/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Vylepšení Mi Sound
+ Optimalizovat kvalitu zvuku
+ Typ sluchátek
+ Zvolit přednastavené
+
+ Výchozí
+ Mi pecky
+ Mi špunty (2013)
+ Mi Piston-1
+ Obyčejná
+ Běžné špunty
+ Základní edice
+ Mi Piston-2
+ Standardní edice
+ Mi sluchátka
+ Pro mladé
+ Barevná edice
+ Mi špunty
+ Mi kapsle
+ Mi špunty Pro
+ Mi Komfort
+ Mi Rušení hluku Typ-C
+ Mi Rušení hluku 3,5 mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+ Výchozí
+ Rock
+ Jazz
+ Pop
+ Klasická
+ Hip Hop
+ Blues
+ Elektronická
+ Country
+ Taneční
+ Metal
+
diff --git a/XiaomiParts/res/values-da-rDK/strings.xml b/XiaomiParts/res/values-da-rDK/strings.xml
new file mode 100644
index 00000000..f8a5d0c7
--- /dev/null
+++ b/XiaomiParts/res/values-da-rDK/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi Sound Enhancer
+ Optimer lydkvalitet
+ Vælg type hovedtelefon
+ Vælg en forindstilling
+
+ Standard
+ Mi ørepropper
+ Mi In-Ear (2013)
+ Mi Piston-1
+ Generelt
+ Generelt In-Ear
+ Basic Edition
+ Mi Piston-2
+ Standard Edition
+ Mi hovedtelefoner
+ Youth Edition
+ Color Edition
+ Mi in-ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Mi-støjreduktion type C
+ Mi-støjreduktion 3,5 mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi-hovedtelefoner grundlæggende
+ Mi-hovedtelefoner
+
+ Standard
+ Rock
+ Jazz
+ Pop
+ Klassisk
+ Hip Hop
+ Blues
+ Elektronisk
+ Countrymusik
+ Dans
+ Metal
+
diff --git a/XiaomiParts/res/values-de-rDE/strings.xml b/XiaomiParts/res/values-de-rDE/strings.xml
new file mode 100644
index 00000000..681a1b20
--- /dev/null
+++ b/XiaomiParts/res/values-de-rDE/strings.xml
@@ -0,0 +1,106 @@
+
+
+
+ Xiaomi Parts
+ Erweiterte Einstellungen
+ Display
+ Displaykalibierung
+ Stärke
+
+
+ Leistung
+ Leistung Einstellung
+ Wähle die Leistungstufe
+ Wähle die Leistungstufe
+
+ Performance
+ Energieeffizient
+ Gaming
+ Balance
+ Energiesparmodus
+ Haptisches Feedback
+
+
+ Mi Klangverbesserung
+ Audioqualität optimieren
+ Kopfhörertyp auswählen
+ Vorgabe auswählen
+
+ Standard
+ Mi Ohrhörer
+ Mi In Ear (2013)
+ Mi Piston 1
+ Allgemeine Earbuds
+ Allgemeine In Ear
+ Basis Edition
+ Mi Piston 2
+ Standard Edition
+ Mi Kopfhörer
+ Jugend Edition
+ Farbige Edition
+ Mi In Ear
+ Mi Capsule
+ Mi In Ear Pro
+ Mi Komfort
+ Mi-Geräuschunterdrückung (Typ-C)
+ Mi-Geräuschunterdrückung (3.5 mm)
+ Mi Half In Ear
+ Mi In Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+ Standard
+ Rock
+ Jazz
+ Pop
+ Klassisch
+ Hip Hop
+ Blues
+ Elektronik
+ Country
+ Dance
+ Metal
+
+ Display Farbeinstellungen
+ Bildschirm Kalibrierung
+ Beim Systemstart anwenden
+ An
+ Aus
+ Rot
+ Grün
+ Blau
+ Minimum
+ Sättigung
+ Kontrast
+ Farbeinstellungen
+ Farbwert
+ Farbton
+ Zurücksetzen
+ Voreinstellung auswählen
+ Standard
+ Tiefes Schwarz und Weiß
+ Extremes AMOLED
+ Warmes AMOLED
+ Kühles AMOLED
+ Naturfarben
+ Wähle neuen Wert
+ Standard Wert
+ Wert zwischen %1d und %2d
+ Inaktivitätsdisplay
+ Graustufen-Modus
+ Aktiviere Aufwecken mit Flip Cover
+ Schalte das Gerät AN und AUS mit einem magnetischen Flip Cover
+
diff --git a/XiaomiParts/res/values-el-rGR/strings.xml b/XiaomiParts/res/values-el-rGR/strings.xml
new file mode 100644
index 00000000..a954d0b8
--- /dev/null
+++ b/XiaomiParts/res/values-el-rGR/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Ενισχυτής Mi Ήχου
+ Βελτιστοποίηση ποιότητας ήχου
+ Επιλογή τύπου ακουστικών
+ Επιλογή προεπιλογής
+
+ Προεπιλογή
+ Mi Earbuds
+ Mi In-Ear (2013)
+ Mi Piston-1
+ Γενικά
+ Γενικά In-Ear
+ Basic Edition
+ Mi Piston-2
+ Standard Edition
+ Mi Headphones
+ Youth Edition
+ Color Edition
+ Mi In-Ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Ακύρωση Mi Θορύβου Type-C
+ Ακύρωση Mi Θορύβου 3.5mm
+ Mi Μισό στο Αυτί
+ Mi Μέσα στο Αυτί 2
+ Βασικά Ακουστικά Mi
+ Μi ακουστικά
+
+ Προεπιλογή
+ Ροκ
+ Τζάζ
+ Ποπ
+ Κλασσική
+ Χιπ Χοπ
+ Μπλουζ
+ Ηλεκτρόνικ
+ Κάντρι
+ Χορός
+ Μέταλ
+
diff --git a/XiaomiParts/res/values-es-rES/strings.xml b/XiaomiParts/res/values-es-rES/strings.xml
new file mode 100644
index 00000000..2237f5a8
--- /dev/null
+++ b/XiaomiParts/res/values-es-rES/strings.xml
@@ -0,0 +1,85 @@
+
+
+
+ Ajustes Xiaomi
+ Ajustes Extras de Xiaomi MI 6X/A2
+
+ Pantalla
+
+
+ Calibrar Color de Pantalla
+
+ Retroalimentación háptica
+ Fuerza
+
+
+ Rendimiento
+ Ajustes de Rendimiento
+ Elija su configuración de Rendimiento
+ Elija su configuración de Rendimiento
+
+
+ Rendimiento
+ Batería
+ Juego
+ Balance
+ Batería Extrema
+
+
+
+
+ Mi Sound Enhancer
+ Optimizar la calidad del audio
+ Selecciona el tipo de auriculares
+ Selecciona un preajuste
+
+
+ Predeterminado
+ Auriculares de tapón Mi
+ Mi Intrauriculares (2013)
+ Mi Piston-1
+ General
+ Intrauriculares genéricos
+ Edición básica
+ Mi Piston-2
+ Edición estándar
+ Auriculares Mi
+ Edición juvenil
+ Edición a color
+ Mi Intrauriculares
+ Mi Cápsula
+ Mi Intrauriculares Pro
+ Mi Comfort
+ Cancelación de Ruido Mi Tipo C
+ Cancelación de Ruido Mi 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+
+ Predeterminado
+ Rock
+ Jazz
+ Pop
+ Clásica
+ Hip Hop
+ Blues
+ Electrónica
+ Country
+ Dance
+ Metal
+
diff --git a/XiaomiParts/res/values-es-rMX/strings.xml b/XiaomiParts/res/values-es-rMX/strings.xml
new file mode 100644
index 00000000..2237f5a8
--- /dev/null
+++ b/XiaomiParts/res/values-es-rMX/strings.xml
@@ -0,0 +1,85 @@
+
+
+
+ Ajustes Xiaomi
+ Ajustes Extras de Xiaomi MI 6X/A2
+
+ Pantalla
+
+
+ Calibrar Color de Pantalla
+
+ Retroalimentación háptica
+ Fuerza
+
+
+ Rendimiento
+ Ajustes de Rendimiento
+ Elija su configuración de Rendimiento
+ Elija su configuración de Rendimiento
+
+
+ Rendimiento
+ Batería
+ Juego
+ Balance
+ Batería Extrema
+
+
+
+
+ Mi Sound Enhancer
+ Optimizar la calidad del audio
+ Selecciona el tipo de auriculares
+ Selecciona un preajuste
+
+
+ Predeterminado
+ Auriculares de tapón Mi
+ Mi Intrauriculares (2013)
+ Mi Piston-1
+ General
+ Intrauriculares genéricos
+ Edición básica
+ Mi Piston-2
+ Edición estándar
+ Auriculares Mi
+ Edición juvenil
+ Edición a color
+ Mi Intrauriculares
+ Mi Cápsula
+ Mi Intrauriculares Pro
+ Mi Comfort
+ Cancelación de Ruido Mi Tipo C
+ Cancelación de Ruido Mi 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+
+ Predeterminado
+ Rock
+ Jazz
+ Pop
+ Clásica
+ Hip Hop
+ Blues
+ Electrónica
+ Country
+ Dance
+ Metal
+
diff --git a/XiaomiParts/res/values-es/strings.xml b/XiaomiParts/res/values-es/strings.xml
new file mode 100644
index 00000000..84a34acb
--- /dev/null
+++ b/XiaomiParts/res/values-es/strings.xml
@@ -0,0 +1,116 @@
+
+
+
+ Ajustes Xiaomi
+ Ajustes Extras de Xiaomi MI 6X/A2
+
+ Pantalla
+
+
+ Calibrar Color de Pantalla
+
+ Retroalimentación háptica
+ Fuerza
+
+
+ Rendimiento
+ Ajustes de Rendimiento
+ Elija su configuración de Rendimiento
+ Elija su configuración de Rendimiento
+
+
+ Rendimiento
+ Batería
+ Juego
+ Balance
+ Batería Extrema
+
+
+
+
+ Mi Sound Enhancer
+ Optimizar la calidad del audio
+ Selecciona el tipo de auriculares
+ Selecciona un preajuste
+
+
+ Predeterminado
+ Auriculares de tapón Mi
+ Mi Intrauriculares (2013)
+ Mi Piston-1
+ General
+ Intrauriculares genéricos
+ Edición básica
+ Mi Piston-2
+ Edición estándar
+ Auriculares Mi
+ Edición juvenil
+ Edición a color
+ Mi Intrauriculares
+ Mi Cápsula
+ Mi Intrauriculares Pro
+ Mi Comfort
+ Cancelación de Ruido Mi Tipo C
+ Cancelación de Ruido Mi 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+
+ Predeterminado
+ Rock
+ Jazz
+ Pop
+ Clásica
+ Hip Hop
+ Blues
+ Electrónica
+ Country
+ Dance
+ Metal
+
+ Calibración del color de la pantalla
+ Calibración de pantalla
+ Encendido
+ Aplicar al inicio
+ Apagar
+ Rojo
+ Verde
+ Azul
+ Mínimo
+ Saturación
+ Valor
+ Contraste
+ Matiz
+ Ajustes de color
+ Reiniciar
+ ELija un nuevo valor
+
+
+ Seleccione Preset
+ Predeterminado
+ Versión 1
+ Versión 2
+ Versión 3
+ Triluminoso
+ Blanco y negro profundo
+ Profundo natural
+ Cool Amoled
+ Amoled Extremo
+ Calentar Amoled
+ Mamba híbrida
+
diff --git a/XiaomiParts/res/values-et-rEE/strings.xml b/XiaomiParts/res/values-et-rEE/strings.xml
new file mode 100644
index 00000000..8f4c1b23
--- /dev/null
+++ b/XiaomiParts/res/values-et-rEE/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi Heli Parandaja
+ Optimeerige heli kvaliteeti
+ Valige kõrvaklapitüüp
+ Valige eelsätestus
+
+ Vaikimisi
+ Mi Nööpkuularid
+ Mi Kõrvasisesed (2013)
+ Mi Piston-1
+ Üldidne
+ Üldised kõrvasisesed
+ Põhiväljalase
+ Mi Piston-2
+ Standardväljalase
+ Mi Kõrvaklapid
+ Noorte väljalase
+ Värviline väljalase
+ Mi Kõrvasisesed
+ Mi Kapsul
+ Mi Kõrvasisesed Pro
+ Mi Comfort
+ Mi müra tühistamise C-tüüp
+ Mi müra tühistamine 3.5mm
+ Kõrvasisene Mi Half
+ Kõrvasisene Mi 2
+ Mi Kõrvaklapid Basic
+ Mi Kõrvaklapid
+
+ Vaikimisi
+ Kivi
+ Džäss
+ Pop
+ Klassikaline
+ Hip Hop
+ Bluus
+ Elektrooniline
+ Riik
+ Tants
+ Metral
+
diff --git a/XiaomiParts/res/values-eu-rES/strings.xml b/XiaomiParts/res/values-eu-rES/strings.xml
new file mode 100644
index 00000000..995f1289
--- /dev/null
+++ b/XiaomiParts/res/values-eu-rES/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi Soinu indartzailea
+ Audio kalitatea optimizatu
+ Entzungailu mota aukeratu
+ Aurrez ezarritakoa aukeratu
+
+ Lehenetsia
+ Mi Audiofonoa
+ Mi In-Ear (2013)
+ Mi Pistoia-1
+ Orokorra
+ In-Ear orokorra
+ Oinarrizko Edizioa
+ Mi Pistoia-2
+ Edizio arrunta
+ Mi Entzungailuak
+ Gazte Edizioa
+ Kolore Edizioa
+ Mi In-Ear
+ Mi Kapsula
+ Mi In-Ear Pro
+ Mi Comfort
+ Mi Zarata Ezabagailua C-Mota
+ Mi Zarata Ezabagailua 3.5mm
+ Mi Half in Ear
+ Mi In-Ear 2
+ Mi oinarrizko entzungailuak
+ Mi entzungailuak
+
+ Lehenetsia
+ Rock
+ Jazz
+ Pop
+ Klasikoa
+ Hip Hop
+ Blues
+ Elektronikoa
+ Country
+ Dance
+ Metal
+
diff --git a/XiaomiParts/res/values-fa-rIR/strings.xml b/XiaomiParts/res/values-fa-rIR/strings.xml
new file mode 100644
index 00000000..bad1704c
--- /dev/null
+++ b/XiaomiParts/res/values-fa-rIR/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ تقویتکننده صدای Mi
+ بهینهسازی کیفیت صدا
+ نوع هدفونها را انتخاب کنید
+ یک مورد از پیش تعیین شده را انتخاب کنید
+
+ پیشفرض
+ ریز هدفون Mi
+ درون گوشی Mi (۲۰۱۳)
+ پیستون Mi-۱
+ عمومی
+ درون گوشی عمومی
+ نسخه پایه
+ پیستون Mi-۲
+ نسخه استاندارد
+ هدفون Mi
+ نسخه جوانان
+ نسخه رنگی
+ درون گوشی Mi
+ کپسول Mi
+ درون گوشی Mi حرفهای
+ Mi آسوده
+ کاهنده اختلال صدای Mi نوع C
+ کاهنده اختلال صدای Mi ۳.۵ میلیمتری
+ نیمدرون گوشی Mi
+ درون گوشی Mi ۲
+ هندزفریهای اصلی Mi
+ هندزفریهای Mi
+
+ پیشفرض
+ راک
+ جاز
+ پاپ
+ کلاسیک
+ هیپ هاپ
+ بلوز
+ الکترونیک
+ روستایی
+ رقص
+ متال
+
diff --git a/XiaomiParts/res/values-fi-rFI/strings.xml b/XiaomiParts/res/values-fi-rFI/strings.xml
new file mode 100644
index 00000000..34f11f30
--- /dev/null
+++ b/XiaomiParts/res/values-fi-rFI/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi Sound Enhancer
+ Optimoi äänenlaatua
+ Valitse kuuloke tyyppi
+ Valitse esiasetus
+
+ Oletus
+ Mi Earbuds
+ Mi In-Ear (2013)
+ Mi Piston-1
+ Yleinen
+ Yleinen kuuloke
+ Perusversio
+ Mi Piston-2
+ Vakioversio
+ Mi-kuulokkeet
+ Youth Edition
+ Color Edition
+ Mi In-Ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Mi Melunvaimennus Type-C
+ Mi Melunvaimennus 3,5 mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+ Oletus
+ Rock
+ Jazz
+ Pop
+ Klassinen
+ Hip Hop
+ Blues
+ Electronic
+ Kantri
+ Dance
+ Metalli
+
diff --git a/XiaomiParts/res/values-fr-rFR/strings.xml b/XiaomiParts/res/values-fr-rFR/strings.xml
new file mode 100644
index 00000000..0c8132ea
--- /dev/null
+++ b/XiaomiParts/res/values-fr-rFR/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Amélioration audio Mi
+ Optimiser la qualité audio
+ Sélectionnez le type d\'écouteurs
+ Choisir une présélection
+
+ Par défaut
+ Écouteurs Mi
+ Écouteurs intra Mi (2013)
+ Mi Piston-1
+ Générique
+ Intra générique
+ Édition basique
+ Mi Piston-2
+ Édition standard
+ Casque Mi
+ Édition Jeunesse
+ Édition colorée
+ Intra Mi
+ Mi Capsule
+ Intra Mi Pro
+ Mi Comfort
+ Mi Élimination de bruit Type C
+ Mi Élimination de bruit 3,5 mm
+ Mi Half in-Ear
+ Écouteurs intra Mi 2
+ Écouteurs Basiques Mi
+ Écouteurs Mi
+
+ Par défaut
+ Rock
+ Jazz
+ Pop
+ Classique
+ Hip Hop
+ Blues
+ Electronic
+ Country
+ Dance
+ Métal
+
diff --git a/XiaomiParts/res/values-gl-rES/strings.xml b/XiaomiParts/res/values-gl-rES/strings.xml
new file mode 100644
index 00000000..db8670e9
--- /dev/null
+++ b/XiaomiParts/res/values-gl-rES/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Potenciador Mi Sound
+ Optimizar a calidade do son
+ Seleccionar o tipo de auriculares
+ Elixir un predefinido
+
+ Predefinido
+ Mi Earbuds
+ Mi In-Ear (2013)
+ Mi Piston-1
+ Xeral
+ Manos libres xeral
+ Edición básica
+ Mi Piston-2
+ Edición estándar
+ Auriculares Mi
+ Edición mocidade
+ Edición a cor
+ Mi In-Ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Cancelación de Mi Noise TipoC
+ Cancelación de Mi Noise 3,5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Auriculares básicos Mi
+ Auriculares Mi
+
+ Predefinido
+ Rock
+ Jazz
+ Pop
+ Clásica
+ Hip Hop
+ Blues
+ Electrónica
+ Country
+ Dance
+ Metal
+
diff --git a/XiaomiParts/res/values-gu-rIN/strings.xml b/XiaomiParts/res/values-gu-rIN/strings.xml
new file mode 100644
index 00000000..fa7afc9b
--- /dev/null
+++ b/XiaomiParts/res/values-gu-rIN/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi સાઉન્ડ એન્હાંસર
+ ઑડિયો ગુણવત્તા ઑપ્ટિમાઇઝ કરો
+ હેડફોન પ્રકાર પસંદ કરો
+ પ્રીસેટ પસંદ કરો
+
+ ડિફૉલ્ટ
+ Mi ઇયરબડ
+ Mi ઇન-ઇઅર (2013)
+ માઇલ પિસ્ટન 1
+ સામાન્ય
+ સામાન્ય ઇન-ઇયર
+ મૂળભૂત આવૃત્તિ
+ માઇલ પિસ્ટન 2
+ સ્ટાન્ડર્ડ આવૃત્તિ
+ માઇલ હેડફોન
+ યુવા આવૃત્તિ
+ રંગ આવૃત્તિ
+ Mi ઇન-ઇયર
+ Mi કેપ્સ્યુલ
+ Mi ઇન-ઇઅર પ્રો
+ Mi આરામ
+ Mi Noise Cancelling Type-C
+ Mi Noise Cancelling 3.5mm
+ Mi Half In-Ear
+ Mi ઇન-ઇઅર 2
+ Mi ઇયરફોન બેઝિક
+ Mi ઇયરફોન
+
+ ડિફૉલ્ટ
+ રૉક
+ જૅઝ
+ પૉપ
+ ક્લાસિકલ
+ હિપ હોપ
+ બ્લૂઝ
+ ઇલેક્ટ્રોનિક
+ દેશ
+ નૃત્ય
+ મેટલ
+
diff --git a/XiaomiParts/res/values-ha-rHG/strings.xml b/XiaomiParts/res/values-ha-rHG/strings.xml
new file mode 100644
index 00000000..e9bcf110
--- /dev/null
+++ b/XiaomiParts/res/values-ha-rHG/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Kyautata Sautin Mi
+ Gyara kyaun sauti
+ Zabin irin na\'urar ji ta kunni
+ Zabi salon
+
+ Na asali
+ Mi Earbuds
+ Mi In-Ear (2013)
+ Mi Piston-1
+ Na Genaral
+ Na General In-Ear
+ Bugu Na asali
+ Mi Piston-2
+ Bugu na Daidai
+ Na\'urar kunni na Mi
+ Bugu na matasa
+ Bugu na launi
+ Mi In-Ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Sokewar Hayaniyar Mi Irin-C
+ Sokewar Hayaniyar Mi 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+ Na asali
+ Rock
+ Jazz
+ Pop
+ Gargajiya
+ Hip Hop
+ Blues
+ Elektronik
+ Ƙasa
+ Rawa
+ Mital
+
diff --git a/XiaomiParts/res/values-hi-rIN/strings.xml b/XiaomiParts/res/values-hi-rIN/strings.xml
new file mode 100644
index 00000000..21044f2f
--- /dev/null
+++ b/XiaomiParts/res/values-hi-rIN/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi ध्वनि एन्हांसर
+ ऑडियो गुणवत्ता ऑप्टिमाइज़ करें
+ हेडफोन प्रकार चुनें
+ पूर्व निर्धारित चुनें
+
+ डिफ़ॉल्ट
+ Mi इयरबड्स
+ Mi इन-ईयर (2013)
+ Mi पिस्टन-1
+ सामान्य
+ सामान्य इन-इयर
+ मूल संस्करण
+ Mi पिस्टन-2
+ मानक संस्करण
+ Mi हेडफोन्स
+ युवा संस्करण
+ रंग संस्करण
+ Mi इन-इयर
+ Mi कैपसूल
+ Mi इन-ईयर प्रो
+ Mi आराम
+ Mi नॉइज कैंसलिंग टाइप-C
+ Mi नॉइज कैंसलिंग 3.5mm
+ Mi हाल्फ इन ईयर
+ Mi इन-ईयर 2
+ Mi ईयरफ़ोन बेसिक
+ Mi ईयरफ़ोन्स
+
+ डिफ़ॉल्ट
+ रॉक
+ जैज़
+ पॉप
+ क्लॅसिकल
+ हिप हॉप
+ ब्लूज़
+ इलेक्ट्रॉनिक
+ कंट्री
+ डांस
+ मेटल
+
diff --git a/XiaomiParts/res/values-hr-rHR/strings.xml b/XiaomiParts/res/values-hr-rHR/strings.xml
new file mode 100644
index 00000000..f62d8e78
--- /dev/null
+++ b/XiaomiParts/res/values-hr-rHR/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi Sound Enhancer
+ Optimiziranje kvalitete zvuka
+ Odaberite vrstu slušalica
+ Odaberi podešenje
+
+ Zadano
+ Mi Earbuds
+ Mi In-Ear (2013)
+ Mi Piston-1
+ Općenite
+ Općenite In-Ear
+ Basic Edition
+ Mi Piston-2
+ Standard Edition
+ Mi Headphones
+ Youth Edition
+ Color Edition
+ Mi In-Ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Mi Noise otkazivanje buke tip-C
+ Mi Noise otkazivanje 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+ Zadano
+ Rock
+ Jazz
+ Pop
+ Classical
+ Hip Hop
+ Blues
+ Electronic
+ Country
+ Dance
+ Metal
+
diff --git a/XiaomiParts/res/values-hu-rHU/strings.xml b/XiaomiParts/res/values-hu-rHU/strings.xml
new file mode 100644
index 00000000..0204e4fb
--- /dev/null
+++ b/XiaomiParts/res/values-hu-rHU/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi Hangjavítás
+ Hangminőség optimalizálása
+ Fülhallgató típusa
+ Válasszon egy előbeállítást
+
+ Alapértelmezett
+ Mi Earbuds
+ Mi In-Ear (2013)
+ Mi Piston-1
+ Általános
+ Általános fülhallgató
+ Basic kiadás
+ Mi Piston-2
+ Standard kiadás
+ Mi fejhallgató
+ Youth kiadás
+ Színes kiadás
+ Mi fülhallgató
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Mi Zajcsökkentés Type-C
+ Mi Zajcsökkentés 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+ Alapértelmezett
+ Rock
+ Jazz
+ Pop
+ Klasszikus
+ Hip Hop
+ Blues
+ Elektronikus
+ Country
+ Dance
+ Metál
+
diff --git a/XiaomiParts/res/values-hy-rAM/strings.xml b/XiaomiParts/res/values-hy-rAM/strings.xml
new file mode 100644
index 00000000..c44eff7d
--- /dev/null
+++ b/XiaomiParts/res/values-hy-rAM/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi Ձայնի բարելավում
+ Օպտիմիզացնել ձայնի որակը
+ Ընտրել ականջակալների տեսակը
+ Ընտրել նախնական կարգավորում
+
+ Կանխադրված
+ Mi Earbuds
+ Mi ներդրվող (2013)
+ Mi Piston-1
+ Սովորական
+ Սովորական ներդրվող
+ Հիմնական տարբերակ
+ Mi Piston-2
+ Ստանդարտ տարբերակ
+ Mi ականջակալներ
+ Երիտասարդական տարբերակ
+ Գունավոր տարբերակ
+ Mi ներդրվող
+ Mi Capsule
+ Mi ներդրվող Pro
+ Mi Comfort
+ Mi Աղմուկի Չեղարկում Տիպ C
+ Mi Աղմուկի Չեղարկում 3.5մմ
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+ Կանխադրված
+ Ռոք
+ Ջազ
+ Փոփ
+ Դասական
+ Հիպ Հոփ
+ Բլյուզ
+ Էլեկտրոնային
+ Քանտրի
+ Պար
+ Մետալ
+
diff --git a/XiaomiParts/res/values-in-rID/strings.xml b/XiaomiParts/res/values-in-rID/strings.xml
new file mode 100644
index 00000000..37c9942c
--- /dev/null
+++ b/XiaomiParts/res/values-in-rID/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi Sound Enhancer
+ Optimalkan kualitas audio
+ Pilih tipe headphone
+ Pilih preset
+
+ Bawaan
+ Mi Earbuds
+ Mi In-Ear (2013)
+ Mi Piston-1
+ Umum
+ In-Ear umum
+ Edisi Basic
+ Mi Piston-2
+ Edisi standar
+ Mi Headphone
+ Edisi Youth
+ Edisi Warna
+ Mi In-Ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Mi Noise Cancelling Type-C
+ Mi Noise Cancelling 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphone
+
+ Bawaan
+ Rock
+ Jazz
+ Pop
+ Klasik
+ Hip Hop
+ Blues
+ Elektronik
+ Country
+ Dance
+ Metal
+
diff --git a/XiaomiParts/res/values-it-rIT/strings.xml b/XiaomiParts/res/values-it-rIT/strings.xml
new file mode 100644
index 00000000..1eecbb5a
--- /dev/null
+++ b/XiaomiParts/res/values-it-rIT/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Ottimizzazione Mi Sound
+ Ottimizza la qualità audio
+ Scegli il tipo di cuffie
+ Seleziona una preimpostazione
+
+ Predefinito
+ Auricolari Mi
+ Mi In-Ear (2013)
+ Mi Piston-1
+ Generiche
+ In-Ear generiche
+ Edizione base
+ Mi Piston-2
+ Edizione Standard
+ Cuffie Mi
+ Edizione Youth
+ Edizione Color
+ Mi In-Ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Cancellazione Rumore Mi Type-C
+ Cancellazione Rumore Mi 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Auricolari Mi Basic
+ Auricolari Mi
+
+ Predefinito
+ Rock
+ Jazz
+ Pop
+ Classica
+ Hip Hop
+ Blues
+ Elettronica
+ Country
+ Dance
+ Metal
+
diff --git a/XiaomiParts/res/values-iw-rIL/strings.xml b/XiaomiParts/res/values-iw-rIL/strings.xml
new file mode 100644
index 00000000..0de2986d
--- /dev/null
+++ b/XiaomiParts/res/values-iw-rIL/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ מגבר צלילים Mi
+ ייעול איכות השמע
+ בחר סוג אוזניות
+ בחירת הגדרה
+
+ ברירת מחדל
+ Mi Earbuds
+ Mi In-Ear (2013)
+ Mi Piston-1
+ כללי
+ In-Ear כללי
+ מהדורה בסיסית
+ Mi Piston-2
+ מהודרה רגילה
+ אוזניות Mi
+ מהדורת נוער
+ מהדורת צבע
+ Mi In-Ear
+ קפסולת Mi
+ Mi In-Ear Pro
+ Mi Comfort
+ ביטול רעשים של Mi Type-C
+ ביטול רעשים של Mi 3.5 מ\"מ
+ Mi Half in Ear
+ Mi In-Ear 2
+ Mi מיקרופון בסיסי
+ אוזניות Mi
+
+ ברירת מחדל
+ רוק
+ ג\'אז
+ פופ
+ קלאסית
+ היפ הופ
+ בלוז
+ אלקטרונית
+ קאנטרי
+ דאנס
+ מטאל
+
diff --git a/XiaomiParts/res/values-ja-rJP/strings.xml b/XiaomiParts/res/values-ja-rJP/strings.xml
new file mode 100644
index 00000000..6dc51b88
--- /dev/null
+++ b/XiaomiParts/res/values-ja-rJP/strings.xml
@@ -0,0 +1,141 @@
+
+
+
+ Xiaomi パーツ
+ 追加の設定
+
+ 画面
+
+
+ 画面の色補正
+
+
+ Xiaomi Doze
+ アンビエント画面
+
+ 振動フィードバック
+ 強さ
+
+
+ パフォーマンス
+ パフォーマンスの設定
+ パフォーマンス設定を選択して下さい
+ パフォーマンス設定を選択して下さい
+
+
+ 高性能
+ 省電力
+ ゲーム
+ バランス
+ 超省電力
+
+
+
+
+
+ 音楽
+
+
+ Mi サウンドエンハンサー
+ オーディオ品質を最適化
+ ヘッドフォンの種類を選択
+ プリセットを選択してください
+
+ デフォルト
+ Mi イヤーバッド
+ Mi インイヤー (2013)
+ Mi ピストン 1
+ 一般
+ 一般的なインイヤー型
+ ベーシック版
+ Mi ピストン 2
+ スタンダード版
+ Mi ヘッドフォン
+ 青春版
+ カラー版
+ Mi インイヤー
+ Mi カプセル
+ Mi インイヤー Pro
+ Mi コンフォート
+ Mi ノイズキャンセリング Type-C
+ Mi ノイズキャンセリング 3.5mm
+ Mi ハーフインイヤー
+ Mi インイヤー2
+ Mi イヤフォン ベーシック
+ Mi イヤホン
+
+ デフォルト
+ ロック
+ ジャズ
+ ポップ
+ クラシック
+ ヒップホップ
+ ブルース
+ エレクトロニック
+ カントリー
+ ダンス
+ メタル
+
+
+
+
+ 画面の色補正
+ 色の設定
+ 画面の補正
+
+ ON
+ OFF
+ 起動時に設定
+ 赤
+ 緑
+ 青
+ 最小
+ 彩度
+ 値
+ コントラスト
+ 色相
+ グレースケール画面
+
+ プリセットを選択
+
+ 既定
+ バージョン 1
+ バージョン 2
+ バージョン 3
+ トリルミナス
+ 深い黒と白
+ ディープナチュラル
+ 寒色 AMOLED
+ エクストリーム AMOLED
+ 暖色 AMOLED
+ Hybrid Mamba
+
+
+
+
+ @string/presets_dialog_title
+ リセット
+
+
+ 新しい値を選択して下さい
+ 既定値
+ 値は %1$d と %2$d の間です
+
+
+ フリップカバーの復帰
+ フリップカバーの復帰の有効化
+ マグネットフリップカバーでスリープ解除する
+
diff --git a/XiaomiParts/res/values-ka-rGE/strings.xml b/XiaomiParts/res/values-ka-rGE/strings.xml
new file mode 100644
index 00000000..ffba1203
--- /dev/null
+++ b/XiaomiParts/res/values-ka-rGE/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi ხმის გამაუმჯობესებელი
+ აუდიო ოპტიმიზაცია
+ ყურსასმენის ტიპის არჩევა
+ ნამზადის არჩევა
+
+ დათქმული
+ Mi ყურსასმენი
+ Mi ყურსასმენი (2013)
+ Mi Piston-1
+ მთავარი
+ მთავარი ყურსასმენი
+ ძირითადი ედიცია
+ Mi Piston-2
+ სტანდარტული ედიცია
+ Mi ყურსასმენები
+ ახალგაზრდული ედიცია
+ ფერადი ედიცია
+ Mi ყურს შიდა
+ Mi კაპსულა
+ Mi ყურსასმენი Pro
+ Mi Comfort-ი
+ Mi Noise Cancelling Type-C
+ Mi Noise Cancelling 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+ დათქმული
+ როკი
+ ჯაზი
+ პოპი
+ კლასიკური
+ ჰიპ ჰოპი
+ ბლუზი
+ ელექტრონული
+ ქვეყანა
+ ცეკვა
+ მეტალი
+
diff --git a/XiaomiParts/res/values-kk-rKZ/strings.xml b/XiaomiParts/res/values-kk-rKZ/strings.xml
new file mode 100644
index 00000000..522a0161
--- /dev/null
+++ b/XiaomiParts/res/values-kk-rKZ/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi дыбыс жақсарту
+ Mi дыбыс жақсарту
+ Құлаққап түрлері
+ Орнатуды таңдау
+
+ Әдепкі
+ Mi Earbuds (ішпектер)
+ Mi In-Ear (2013)
+ Mi Piston-1
+ Кәдімгі ішпектер
+ Кәдімгі арнаішілік
+ Mi Piston (базалық нұсқа)
+ Mi Piston-2
+ Mi Piston (стандартты нұсқа)
+ Mi Headphones (жапсырмалы)
+ Mi Piston (жастар нұсқасы)
+ Mi Piston (түсті нұсқа)
+ \"Mi In-Ear
+ Mi Capsule (капсулалық)
+ \"Mi In-Ear Pro
+ Mi Comfort
+ Mi Шуыл Болдырылмауда Type-C
+ Mi Шуыл Болдырылмауда 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+ Әдепкі
+ Рок
+ Джаз
+ Поп
+ Классикалық
+ Хип-Хоп
+ Блюз
+ Электро
+ Кантри
+ Би
+ Металл
+
diff --git a/XiaomiParts/res/values-km-rKH/strings.xml b/XiaomiParts/res/values-km-rKH/strings.xml
new file mode 100644
index 00000000..6fbb0d9f
--- /dev/null
+++ b/XiaomiParts/res/values-km-rKH/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi Sound Enhancer
+ បង្កើនប្រសិទ្ធភាពគុណភាពសម្លេង
+ ជ្រើសប្រភេទកាស
+ ជ្រើសកំណត់ជាមុន
+
+ លំនាំដើម
+ Mi Earbuds
+ Mi In-Ear (2013)
+ Mi Piston-1
+ ទូទៅ
+ General In-Ear
+ Basic Edition
+ Mi Piston-2
+ Standard Edition
+ កាស Mi ទាំងឡាយ
+ Youth Edition
+ Color Edition
+ Mi In-Ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ ការលុបសម្លេងMi ប្រភេទ -C
+ ការលុបសម្លេងMi 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear ២
+ មូលដ្ឋានកាសMi
+ កាស Mi
+
+ លំនាំដើម
+ ចង្វាក់រ៉ុក
+ ហ្សាស
+ ប៉ប់
+ បុរាណ
+ ហ៊ីបហប់
+ Blues
+ អេឡិចត្រូនិក
+ បែបជនបទ
+ រាំ
+ តន្ត្រីលោហៈ
+
diff --git a/XiaomiParts/res/values-kn-rIN/strings.xml b/XiaomiParts/res/values-kn-rIN/strings.xml
new file mode 100644
index 00000000..4935acff
--- /dev/null
+++ b/XiaomiParts/res/values-kn-rIN/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi ಧ್ವನಿ ಎನ್ಹ್ಯಾನ್ಸರ್
+ ಆಡಿಯೊ ಗುಣಮಟ್ಟ ಆಪ್ಟಿಮೈಸ್ ಮಾಡಿ
+ ಹೆಡ್ಫೋನ್ಗಳ ವಿಧವನ್ನು ಆರಿಸಿ
+ ಪ್ರೀಸೆಟ್ ಆರಿಸಿ
+
+ ಡೀಫಾಲ್ಟ್
+ Mi ಇಯರ್ಬಡ್ಸ್
+ Mi ಇನ್-ಇಯರ್ (2013)
+ Mi ಪಿಸ್ಟನ್-1
+ ಸಾಮಾನ್ಯ
+ ಸಾಮಾನ್ಯ ಇನ್-ಇಯರ್
+ ಮೂಲ ಆವೃತ್ತಿ
+ Mi ಪಿಸ್ಟನ್-2
+ ಪ್ರಮಾಣಿತ ಆವೃತ್ತಿ
+ Mi ಹೆಡ್ಫೋನ್ಗಳು
+ ಯುವ ಆವೃತ್ತಿ
+ ಬಣ್ಣದ ಆವೃತ್ತಿ
+ Mi ಇನ್-ಇಯರ್
+ Mi ಕ್ಯಾಪ್ಸೂಲ್
+ Mi ಇನ್-ಇಯರ್ ಪ್ರೋ
+ Mi ಕಂಫರ್ಟ್
+ Mi ಸದ್ದು ರದ್ದುಗೊಳಿಸುವಿಕೆ ಪ್ರಕಾರ-C
+ Mi ಸದ್ದು ರದ್ದುಗೊಳಿಸುವಿಕೆ 3.5mm
+ Mi ಹಾಫ್ ಇನ್ ಇಯರ್
+ Mi ಇನ್-ಇಯರ್ 2
+ Mi ಇಯರ್ಫೋನ್ಸ್ ಬೇಸಿಕ್
+ Mi ಇಯರ್ಫೋನ್ಗಳು
+
+ ಡೀಫಾಲ್ಟ್
+ ರಾಕ್
+ ಜಾಝ್
+ ಪಾಪ್
+ ಕ್ಲಾಸಿಕ್
+ ಹಿಪ್ ಹಾಪ್
+ ಬ್ಲೂಸ್
+ ಎಲೆಕ್ಟ್ರಾನಿಕ್
+ ದೇಶೀಯ
+ ಡ್ಯಾನ್ಸ್
+ ಮೆಟಲ್
+
diff --git a/XiaomiParts/res/values-ko-rKR/strings.xml b/XiaomiParts/res/values-ko-rKR/strings.xml
new file mode 100644
index 00000000..3fe9b34b
--- /dev/null
+++ b/XiaomiParts/res/values-ko-rKR/strings.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ 샤오미 설정
+ 기타 설정
+
+ 디스플레이
+
+
+ 디스플레이 컬러 캘리브레이션
+
+
+ Xiaomi Doze
+ 앰비언트 디스플레이
+
+ 햅틱 피드백
+ 세기
+
+
+ 성능
+ 성능 설정
+ 성능 설정 선택
+ 성능 설정 선택
+
+
+ 성능 향상
+ 배터리 향상
+ 게이밍 최적화
+ 균형 설정
+ 배터리 매우 향상
+
+
+
+
+
+ 오디오
+
+
+ Mi 사운드 강화
+ 음질 최적화
+ 헤드폰 유형 선택
+ 프리셋 선택
+
+ 기본
+ Mi 이어버드
+ Mi 인이어 (2013)
+ Mi 피스톤 1
+ 일반
+ 일반 이어폰
+ 기본 에디션
+ Mi 피스톤 2
+ 표준 에디션
+ Mi 헤드폰
+ 청소년 에디션
+ 컬러 에디션
+ Mi 이어폰
+ Mi 캡슐
+ Mi 인이어 프로
+ Mi Comfort
+ Mi 노이즈 캔슬링 Type-C
+ Mi 노이즈 캔슬링 3.5mm
+ Mi 하프 인이어
+ Mi 인이어 2
+ Mi 이어폰 베이직
+ Mi 이어폰
+
+ 기본
+ 락
+ 재즈
+ 팝
+ 클래식
+ 힙합
+ 블루스
+ 일렉트로닉
+ 컨트리
+ 댄스
+ 메탈
+
+ 디스플레이 컬러 캘리브레이션
+ 디스플레이 캘리브레이션
+ 활성화
+ 부팅 시 설정
+ 비활성화
+ 빨강
+ 초록
+ 파랑
+ 최소값
+ 채도
+ 명도
+ 대비
+ 색상
+ 컬러 설정
+ 초기화
+ 새 값 선택
+
+ 프리셋 선택
+
+ 기본값
+ 버전 1
+ 버전 2
+ 버전 3
+ 트리루미너스
+ 깊은 흑백의 색감
+ 진한 자연의 색감
+ 차가운 아몰레드 색감
+ 진한 아몰레드 색감
+ 따뜻한 아몰레드 색감
+ 하이브리드 맘바
+
diff --git a/XiaomiParts/res/values-lt-rLT/strings.xml b/XiaomiParts/res/values-lt-rLT/strings.xml
new file mode 100644
index 00000000..b00ee7ee
--- /dev/null
+++ b/XiaomiParts/res/values-lt-rLT/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ „Mi garso pagerinimas“
+ Optimizuoti garso kokybę
+ Pasirinkite ausinių tipą
+ Pasirinkti ruošinį
+
+ Numatytasis
+ Mi Ausinės
+ Mi In-Ear (2013)
+ Mi Piston-1
+ Įprastos ausinės
+ Paprastos įkišamos ausinės
+ Įprastos kamštinės
+ Mi Piston-2
+ Standartinis Leidimas
+ Mi Ausinės
+ Jaunimo Leidimas
+ Spalvų Leidimas
+ Mi Įkišamos ausinės
+ Mi Kapsulė
+ Mi In-Ear Pro
+ Mi Komfortas
+ „Mi“ triukšmo mažinimas (Tipas-C)
+ „Mi“ triukšmo mažinimas (3.5mm)
+ „Mi Half in Ear“
+ „Mi In-Ear 2“
+ Įprastos „Mi“ ausinės
+ „Mi“ ausinės
+
+ Numatytasis
+ Rokas
+ Džiazas
+ Pop
+ Klasika
+ Hiphopas
+ Bliuzas
+ Elektronika
+ Kantri
+ Šokių
+ Metalas
+
diff --git a/XiaomiParts/res/values-lv-rLV/strings.xml b/XiaomiParts/res/values-lv-rLV/strings.xml
new file mode 100644
index 00000000..790029d7
--- /dev/null
+++ b/XiaomiParts/res/values-lv-rLV/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi Sound Enhancer
+ Optimizēt audio kvalitāti
+ Izvēlieties austiņu tipu
+ Izvēlēties iestatījumus
+
+ Noklusējums
+ Mi Earbuds
+ Mi In-Ear (2013)
+ Mi Piston-1
+ Vispārīgi
+ Vispārīgas ausīs liekamas
+ Pamata modelis
+ Mi Piston-2
+ Standarta modelis
+ Mi Headphones
+ Jauniešu modelis
+ Krāsu modelis
+ Mi In-Ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Mi Trokšņu Slāpēšana Tips-C
+ Mi trokšņu slāpēšana 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+ Noklusējums
+ Roks
+ Džezs
+ Popmūzika
+ Klasiskā mūzika
+ Hiphops
+ Blūzs
+ Elektroniskā mūzika
+ Kantrī mūzika
+ Deju mūzika
+ Metāls
+
diff --git a/XiaomiParts/res/values-mk-rMK/strings.xml b/XiaomiParts/res/values-mk-rMK/strings.xml
new file mode 100644
index 00000000..3de52c52
--- /dev/null
+++ b/XiaomiParts/res/values-mk-rMK/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi Sound засилувач
+ Оптимизирај квалитет на звук
+ Избери вид слушалки
+ Изберете дефиниција
+
+ Стандардно
+ Mi “Earbuds“
+ Mi “In-Ear“ (2013)
+ Mi “Piston-1“
+ Обични
+ Обични “in-ear“
+ Обични слушалки
+ Mi “Piston-2“
+ Стандардни слушалки
+ Mi слушалки
+ Младешки слушалки
+ Слушалки во боја
+ Mi “In-Ear“
+ Mi “Capsule“
+ Mi “In-Ear Pro“
+ Mi “Comfort“
+ Mi Noise откажување бучава тип-C
+ Mi Noise откажување 3.5mm
+ Слушалки Mi Half In-Ear
+ Mi In-Ear 2
+ Mi основни слушалки
+ Mi слушалки
+
+ Стандардно
+ Рок
+ Џез
+ Поп
+ Класично
+ Хип Хоп
+ Блус
+ Електронска
+ Кантри
+ Денс
+ Метал
+
diff --git a/XiaomiParts/res/values-ml-rIN/strings.xml b/XiaomiParts/res/values-ml-rIN/strings.xml
new file mode 100644
index 00000000..3954a25d
--- /dev/null
+++ b/XiaomiParts/res/values-ml-rIN/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi ശബ്ദ എൻഹാൻസർ
+ ഓഡിയോ ഗുണനിലവാരം ഒപ്റ്റിമൈസുചെയ്യുക
+ ഹെഡ്ഫോൺ ടൈപ്പ് തിരഞ്ഞെടുക്കുക
+ ഒരു പ്രീസെറ്റ് തിരഞ്ഞെടുക്കുക
+
+ ഡിഫോൾട്ട്
+ Mi ഇയർബഡ്സുകൾ
+ Mi ഇൻ-ഇയർ (2013)
+ Mi പിസ്റ്റൺ-1
+ പൊതുവായത്
+ പൊതുവായത് ഇൻ-ഇയർ
+ അടിസ്ഥാന എഡിഷൻ
+ Mi പിസ്റ്റൺ-2
+ സ്റ്റാൻഡേർഡ് എഡിഷൻ
+ Mi ഹെഡ്ഫോണുകള്
+ യൂത്ത് പതിപ്പ്
+ കളർ എഡിഷൻ
+ Mi ഇൻ-ഇയർ
+ Mi ക്യാപ്സ്യൂൾ
+ Mi ഇൻ-ഇയർ പ്രോ
+ Mi കംഫർട്ട്
+ Mi നോയ്സ് റദ്ദാക്കൽ ടൈപ്പ്-C
+ Mi നോയ്സ് റദ്ദാക്കൽ 3.5മിമീ
+ Mi ഹാഫ് ഇൻ ഇയർ
+ Mi ഇൻ ഇയർ 2
+ Mi ഇയർഫോൺ ബേസിക്
+ Mi ഇയർഫോണുകൾ
+
+ ഡിഫോൾട്ട്
+ റോക്ക്
+ ജാസ്സ്
+ പോപ്പ്
+ ക്ലാസിക്കൽ
+ ഹിപ്പ് ഹോപ്പ്
+ ദുഃഖഭാവമുള്ള
+ ഇലക്ട്രോണിക്ക്
+ രാജ്യം
+ ഡാൻസ്
+ മെറ്റൽ
+
diff --git a/XiaomiParts/res/values-mr-rIN/strings.xml b/XiaomiParts/res/values-mr-rIN/strings.xml
new file mode 100644
index 00000000..8ae8b0b0
--- /dev/null
+++ b/XiaomiParts/res/values-mr-rIN/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi ध्वनी वर्धक
+ अॉडिओ गुणवत्ता अनुकूल करा
+ हेडफोन प्रकार निवडा
+ एखादे प्रिसेट निवडा
+
+ डिफॉल्ट
+ Mi इअरबड्स
+ Mi In-Ear(2013)
+ Mi पिस्टन-1
+ सामान्य
+ सामान्य इन-इअर
+ मूळ अावृत्ती
+ Mi पिस्टन-2
+ मानक आवृत्ती
+ Mi हेडफोन्स
+ यूथ एडिशन
+ रंग आवृत्ति
+ Mi इन-इअर
+ Mi कॅप्सूल
+ Mi इन इअर प्रो
+ Mi कम्फर्ट
+ Mi गोंगाट थांबवणे प्रकार-सी
+ Mi गोंगाट थांबवणे 3.5mm
+ Mi हाल्फ इन-इयर
+ कान 2 मध्ये Mi
+ Mi इयरफोन्स बेसिक
+ Mi इयरफोन्स
+
+ डिफॉल्ट
+ रॉक
+ जाझ
+ पॉप
+ क्लासिकल
+ हिप हॉप
+ ब्लूज
+ इलेक्ट्रॉनिक
+ कंट्री
+ डान्स
+ मेटल
+
diff --git a/XiaomiParts/res/values-ms-rMY/strings.xml b/XiaomiParts/res/values-ms-rMY/strings.xml
new file mode 100644
index 00000000..3c532eca
--- /dev/null
+++ b/XiaomiParts/res/values-ms-rMY/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Penambah Bunyi Mi
+ Optimumkan kualiti audio
+ Pilih jenis fon kepala
+ Memilih pratetap
+
+ Lalai
+ Bud telinga Mi
+ Mi In-Ear (2013)
+ Mi piston-1
+ Umum
+ General In-Ear
+ Edisi asas
+ Piston-2 Mi
+ Edisi biasa
+ Mi Headphone
+ Edisi Remaja
+ Edisi Warna
+ Mi di telinga
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Pembatalan Bunyi Bising Mi Type-C
+ Pembatalan Bunyi Bising Mi 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+ Lalai
+ Rock
+ Jazz
+ Pop
+ Klasik
+ Hip Hop
+ Blues
+ Elektronik
+ Negara
+ Tarian
+ Metal
+
diff --git a/XiaomiParts/res/values-mt-rMT/strings.xml b/XiaomiParts/res/values-mt-rMT/strings.xml
new file mode 100644
index 00000000..7092a9fd
--- /dev/null
+++ b/XiaomiParts/res/values-mt-rMT/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi Sound Enhancer
+ Tejjeb il-kwalità tal-ħoss
+ Agħżel it-tip ta\' kuffji
+ Agħżel predeterminazzjoni
+
+ Komuni
+ Mi Earbuds
+ Mi In-Ear (2013)
+ Mi Piston-1
+ Ġenerali
+ Ġenerali fil-Widna
+ Edizzjoni Bażika
+ Mi Piston-2
+ Edizzjoni Standard
+ Mi Headphones
+ Edizzjoni Żagħżugħa
+ Edizzjoni Kkulurita
+ Mi In-Ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Mi Noise Cancelling Tip-C
+ Mi Noise Cancelling 3.5mm
+ Mi Nofs fil-Widna
+ Mi f\'Widna 2
+ Mi Earphones Bażiċi
+ Mi Earphones
+
+ Komuni
+ Rock
+ Jazz
+ Pop
+ Klassiku
+ Hip Hop
+ Blues
+ Elettronika
+ Country
+ Dance
+ Metal
+
diff --git a/XiaomiParts/res/values-my-rMM/strings.xml b/XiaomiParts/res/values-my-rMM/strings.xml
new file mode 100644
index 00000000..1fb75d31
--- /dev/null
+++ b/XiaomiParts/res/values-my-rMM/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi အသံကောင်းမွန်စေသူ
+ အသံ အရည်အသွေးကို မြှင့်တင်မည်
+ နားကြပ်အမျိုးအစားရွေးချယ်ပါ
+ ကြိုတင်သတ်မှတ်မှု တစ်ခု ရွေးပါ
+
+ ပုံသေ
+ Mi နားကြပ်ပေါက်
+ Mi In-Ear (2013)
+ Mi ပစ်စတန်-1
+ အထွေထွေ
+ နားတွင်းအထွေထွေ
+ အခြေခံ တည်းဖြတ်ချက်
+ Mi ပစ်စတန်-2
+ စံ တည်းဖြတ်ချက်
+ Mi နားကြပ်များ
+ လူငယ်နှင့်ဆိုင်သော
+ အရောင်တည်းဖြတ်မှု
+ Mi In-Ear နားကြပ်
+ Mi Capsule
+ Mi In-Ear Pro နားကြပ်
+ Mi Comfort
+ Mi ဆူညံသံလျှော့ချခြင်း Type-C
+ Mi ဆူညံသံလျှော့ချခြင်း 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi နားကြပ်
+
+ ပုံသေ
+ ရော့ခ်
+ ဂျတ်ဇ်ဂီတ
+ ပေါ့ပ်
+ ဂန္ထဝင်ဂီတ
+ ဟစ်ဟော့ပ်
+ ဘလူးစ်ဂီတ
+ အီလက်ထရွန်နစ် ဂီတ
+ ကျေးလက်ဂီတ
+ ဒန့်စ်
+ မက်တယ်လ် ဂီတ
+
diff --git a/XiaomiParts/res/values-nb-rNO/strings.xml b/XiaomiParts/res/values-nb-rNO/strings.xml
new file mode 100644
index 00000000..67807307
--- /dev/null
+++ b/XiaomiParts/res/values-nb-rNO/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi Lydforbedrer
+ Optimaliser lydkvaliteten
+ Velg hodetelefontype
+ Velg en forhåndsinnstilling
+
+ Standard
+ Mi Earbuds
+ Mi In-Ear (2013)
+ Mi Piston-1
+ Vanlig
+ Vanlig i-øret
+ Hovedutgave
+ Mi Piston-2
+ Standardutgave
+ Mi Headphones
+ Ungdomsutgave
+ Fargeutgave
+ Mi In-Ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Mi Støydempende Type-C
+ Mi Støydempende 3,5 mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi-hodetelefoner Basic
+ Mi-hodetelefoner
+
+ Standard
+ Rock
+ Jazz
+ Pop
+ Klassisk
+ Hip hop
+ Blues
+ Elektronika
+ Country
+ Dance
+ Metal
+
diff --git a/XiaomiParts/res/values-ne-rIN/strings.xml b/XiaomiParts/res/values-ne-rIN/strings.xml
new file mode 100644
index 00000000..70a786c0
--- /dev/null
+++ b/XiaomiParts/res/values-ne-rIN/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi आवाज एन्हान्सर
+ अडियोको गुणस्तरलाई अप्टिमाइज गर्नुहोस्
+ हेडफोन प्रकार छनोट गर्नुहोस्
+ एउटा प्रिसेट छनोट गर्नुहोस्
+
+ पूर्वनिर्धारित
+ Mi इयरबड्स
+ Mi इन-ईयर (२०१३)
+ Mi पिस्टन-1
+ साधारण
+ सामान्य कान-मा
+ मूल संस्करण
+ Mi पिस्टन-2
+ मानक संस्करण
+ Mi हेडफोनहरू
+ युवा संस्करण
+ रङ संस्करण
+ Mi कान-मा
+ Mi क्यापसुल
+ Mi कान-मा प्रो
+ Mi सुविधा
+ Mi शोर रद्द गर्दै प्रकार-C
+ Mi शोर रद्द गर्दै 3.5मि. मि
+ Mi हाल्फ इन ईयर
+ Mi इन-ईयर 2
+ Mi ईयरफ़ोन बेसिक
+ Mi ईयरफोनहरू
+
+ पूर्वनिर्धारित
+ रक
+ ज्याज
+ पप
+ क्लासिकल
+ हिप हप
+ ब्लुज
+ इलेक्ट्रोनिक
+ राष्ट्र
+ नाच
+ मेटल
+
diff --git a/XiaomiParts/res/values-ne-rNP/strings.xml b/XiaomiParts/res/values-ne-rNP/strings.xml
new file mode 100644
index 00000000..70a786c0
--- /dev/null
+++ b/XiaomiParts/res/values-ne-rNP/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi आवाज एन्हान्सर
+ अडियोको गुणस्तरलाई अप्टिमाइज गर्नुहोस्
+ हेडफोन प्रकार छनोट गर्नुहोस्
+ एउटा प्रिसेट छनोट गर्नुहोस्
+
+ पूर्वनिर्धारित
+ Mi इयरबड्स
+ Mi इन-ईयर (२०१३)
+ Mi पिस्टन-1
+ साधारण
+ सामान्य कान-मा
+ मूल संस्करण
+ Mi पिस्टन-2
+ मानक संस्करण
+ Mi हेडफोनहरू
+ युवा संस्करण
+ रङ संस्करण
+ Mi कान-मा
+ Mi क्यापसुल
+ Mi कान-मा प्रो
+ Mi सुविधा
+ Mi शोर रद्द गर्दै प्रकार-C
+ Mi शोर रद्द गर्दै 3.5मि. मि
+ Mi हाल्फ इन ईयर
+ Mi इन-ईयर 2
+ Mi ईयरफ़ोन बेसिक
+ Mi ईयरफोनहरू
+
+ पूर्वनिर्धारित
+ रक
+ ज्याज
+ पप
+ क्लासिकल
+ हिप हप
+ ब्लुज
+ इलेक्ट्रोनिक
+ राष्ट्र
+ नाच
+ मेटल
+
diff --git a/XiaomiParts/res/values-nl-rNL/strings.xml b/XiaomiParts/res/values-nl-rNL/strings.xml
new file mode 100644
index 00000000..63e7927c
--- /dev/null
+++ b/XiaomiParts/res/values-nl-rNL/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi Geluid Verbeteraar
+ Audiokwaliteit optimaliseren
+ Kies type hoofdtelefoon
+ Kies vooraf ingesteld
+
+ Standaard
+ Mi oordoppen
+ Mi In-Ear (2013)
+ Mi Piston-1
+ Algemeen
+ Algemene in-ear
+ Basis editie
+ Mi Piston-2
+ Standaard editie
+ Mi Headphones
+ Youth Edition
+ Kleur editie
+ Mi In-Ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Mi Noise annuleren Type-C
+ Mi Noise annuleren 3.5mm
+ Mi Half In Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+ Standaard
+ Rock
+ Jazz
+ Pop
+ Klassiek
+ Hip Hop
+ Blues
+ Elektronisch
+ Country
+ Dance
+ Metal
+
diff --git a/XiaomiParts/res/values-or-rIN/strings.xml b/XiaomiParts/res/values-or-rIN/strings.xml
new file mode 100644
index 00000000..ab51a543
--- /dev/null
+++ b/XiaomiParts/res/values-or-rIN/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi ଧ୍ୱନୀ ବର୍ଦ୍ଧକ
+ ଅଡିଓ ଗୁଣବତ୍ତା ଅପ୍ଟିମାଇଜ୍ କରନ୍ତୁ
+ ହେଡ୍ଫୋନ୍ ପ୍ରକାର ଚୟନ କରନ୍ତୁ
+ ପ୍ରିସେଟ୍ ଚୟନ କରନ୍ତୁ
+
+ ଡିଫଲ୍ଟ୍
+ Mi ଇଅର୍ବଡ୍
+ Mi ଇନ୍-ଇୟର(2013)
+ Mi ପିଷ୍ଟନ୍-1
+ ସାଧାରଣ
+ ସାଧାରଣ ଇନ୍-ଇଅର୍
+ ମୂଳ ସଂସ୍କରଣ
+ Mi ପିଷ୍ଟନ୍-2
+ ମାନକ ସଂସ୍କରଣ
+ Mi ହେଡ୍ଫୋନ୍
+ ଯୁବ ସଂସ୍କରଣ
+ ରଙ୍ଗ ସଂସ୍କରଣ
+ Mi ଇନ୍-ଇଅର୍
+ Mi କ୍ୟାପସୁଲ୍
+ Mi ଇନ୍-ଇଅର୍ ପ୍ରୋ
+ Mi କମ୍ଫର୍ଟ
+ Mi ଶବ୍ଦ ପ୍ରଦୂଷଣ ବାତିଲ କରାଯାଉଛି C- ପ୍ରକାରର
+ Mi ଶବ୍ଦ ପ୍ରଦୂଷଣ ବାତିଲ କରାଯାଉଛି 3.5 mm
+ Mi ହାଫ ଇନ-ଇଅର
+ Mi ଇନ୍-ଇୟର 2
+ Mi ଇଅରଫୋନ ବେସିକ
+ Mi ଇଅର୍ଫୋନ୍
+
+ ଡିଫଲ୍ଟ୍
+ ରକ୍
+ ଜାଜ୍
+ ପପ୍
+ ଶାସ୍ତ୍ରୀୟ
+ ହିପ୍ ହପ୍
+ ବ୍ଲୁଜ୍
+ ଇଲେକ୍ଟ୍ରୋନିକ୍
+ କଣ୍ଟ୍ରୀ
+ ନୃତ୍ୟ
+ ମେଟାଲ୍
+
diff --git a/XiaomiParts/res/values-pa-rIN/strings.xml b/XiaomiParts/res/values-pa-rIN/strings.xml
new file mode 100644
index 00000000..c3a18389
--- /dev/null
+++ b/XiaomiParts/res/values-pa-rIN/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi ਧੁਨੀ ਵਰਧਕ
+ ਆਡੀਓ ਗੁਣਵੱਤਾ ਅਨੁਕੂਲਿਤ ਕਰੋ
+ ਹੈੱਡਫ਼ੋਨਾਂ ਦੀ ਕਿਸਮ ਚੁਣੋ
+ ਇੱਕ ਪ੍ਰੀਸੈੱਟ ਚੁਣੋ
+
+ ਪੂਰਵ-ਨਿਰਧਾਰਤ
+ Mi ਈਅਰਬਡਸ
+ Mi ਇਨ-ਈਅਰ (2013)
+ Mi ਪਿਸਟਨ-1
+ ਸਧਾਰਨ
+ ਸਧਾਰਨ ਇਨ-ਈਅਰ
+ ਮੂਲ ਸੰਸਕਰਨ
+ Mi ਪਿਸਟਨ-2
+ ਸਟੈਂਡਰਡ ਸੰਸਕਰਨ
+ Mi ਹੈੱਡਫ਼ੋਨਸ
+ ਯੂਥ ਸੰਸਕਰਨ
+ ਰੰਗ ਸੰਸਕਰਨ
+ Mi ਇਨ-ਈਅਰ
+ Mi ਕੈਪਸੂਲ
+ Mi ਇਨ-ਈਅਰ ਪ੍ਰੋ
+ Mi ਕਮਫ਼ਰਟ
+ Mi ਸ਼ੋਰ ਰੱਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ ਕਿਸਮ-C
+ Mi ਸ਼ੋਰ ਰੱਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ 3.5ਮਿ.ਮਿ.
+ Mi ਹਾਫ਼ ਇਨ ਈਅਰ
+ Mi ਇਨ-ਈਅਰ 2
+ Mi ਈਅਰਫ਼ੋਨ ਬੇਸਿਕ
+ Mi ਈਅਰਫ਼ੋਨ
+
+ ਪੂਰਵ-ਨਿਰਧਾਰਤ
+ ਰੌਕ
+ ਜੈਜ਼
+ ਪੌਪ
+ ਸ਼ਾਸਤਰੀ
+ ਹਿਪ ਹੌਪ
+ ਬਲੂਜ਼
+ ਇਲੈਕਟ੍ਰੋਨਿਕ
+ ਦੇਸ਼
+ ਡਾਂਸ
+ ਮੈਟਲ
+
diff --git a/XiaomiParts/res/values-pl-rPL/strings.xml b/XiaomiParts/res/values-pl-rPL/strings.xml
new file mode 100644
index 00000000..0dd293ae
--- /dev/null
+++ b/XiaomiParts/res/values-pl-rPL/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Ulepszanie dźwięku Mi
+ Optymalizuj jakość dźwięku
+ Typ słuchawek
+ Wybierz konfigurację
+
+ Domyślny
+ Douszne Mi
+ Mi dokanałowe (2013)
+ Mi Piston v1
+ Douszne
+ Dokanałowe
+ Mi Piston Basic
+ Mi Piston v2
+ Mi Piston v3
+ Słuchawki Mi
+ Youth Edition
+ Edycja kolorowa
+ Mi Dokanałowe
+ Mi Capsule
+ Mi Dokanałowe Pro
+ Mi Comfort
+ Mi z redukcją szumów (Typ-C)
+ Mi z redukcją szumów (3.5mm)
+ Mi częściowo dokanałowe
+ Mi dokanałowe 2
+ Słuchawki douszne Mi Basic
+ Słuchawki douszne Mi
+
+ Domyślny
+ Rock
+ Jazz
+ Pop
+ Muzyka poważna
+ Hip Hop
+ Blues
+ Elektroniczna
+ Country
+ Taniec
+ Metal
+
diff --git a/XiaomiParts/res/values-pt-rBR/strings.xml b/XiaomiParts/res/values-pt-rBR/strings.xml
new file mode 100644
index 00000000..ebbdd18d
--- /dev/null
+++ b/XiaomiParts/res/values-pt-rBR/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi Sound Enhancer
+ Otimizar qualidade de áudio
+ Escolher tipo de fone de ouvido
+ Escolha uma predefinição
+
+ Padrão
+ Mi Earbuds
+ Mi In-Ear (2013)
+ Mi Piston 1
+ Genérico
+ In-Ear genérico
+ Basic Edition
+ Mi Piston 2
+ Standard Edition
+ Mi Headphones
+ Youth Edition
+ Color Edition
+ Mi In-Ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Mi Noise Cancelling Type-C
+ Mi Noise Cancelling 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+ Padrão
+ Rock
+ Jazz
+ Pop
+ Clássica
+ Hip Hop
+ Blues
+ Eletrônica
+ Country
+ Dance
+ Metal
+
diff --git a/XiaomiParts/res/values-pt-rPT/strings.xml b/XiaomiParts/res/values-pt-rPT/strings.xml
new file mode 100644
index 00000000..7a216316
--- /dev/null
+++ b/XiaomiParts/res/values-pt-rPT/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Amplificador Mi Sound
+ Otimizar qualidade de áudio
+ Escolher tipo de auricular
+ Escolher predefinição
+
+ Predefinido
+ Mi Earbuds
+ Mi In-Ear (2013)
+ Mi Piston 1
+ Genéricos
+ Genéricos In-Ear
+ Edição básica
+ Mi Piston 2
+ Edição Padrão
+ Mi Headphones
+ Edição Youth
+ Edição Color
+ Mi In-Ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Mi Noise Cancelling (USB-C)
+ Mi Noise Cancelling (3.5mm)
+ Mi Half In Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+ Predefinido
+ Rock
+ Jazz
+ Pop
+ Clássica
+ Hip Hop
+ Blues
+ Eletrónica
+ Country
+ Dance
+ Metal
+
diff --git a/XiaomiParts/res/values-ro-rRO/strings.xml b/XiaomiParts/res/values-ro-rRO/strings.xml
new file mode 100644
index 00000000..2dd7098c
--- /dev/null
+++ b/XiaomiParts/res/values-ro-rRO/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi Sound Amplificator
+ Optimizare calitate audio
+ Alege tipul de căști
+ Alegeți o presetare
+
+ Implicit
+ Căşti în ureche Mi
+ Căști în ureche Mi (2013)
+ Mi Piston-1
+ General
+ General în ureche
+ Ediție de bază
+ Mi Piston-2
+ Ediție standard
+ Căşti Mi
+ Ediție Youth
+ Ediție Color
+ Mi în ureche
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Se anulează Zgomotul Mi Type C
+ Se anulează Zgomotul Mi 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Căști Mi Basic
+ Căști Mi
+
+ Implicit
+ Rock
+ Jazz
+ Pop
+ Clasic
+ Hip Hop
+ Blues
+ Electronic
+ Country
+ Dance
+ Metal
+
diff --git a/XiaomiParts/res/values-ru-rRU/strings.xml b/XiaomiParts/res/values-ru-rRU/strings.xml
new file mode 100644
index 00000000..3edefe8a
--- /dev/null
+++ b/XiaomiParts/res/values-ru-rRU/strings.xml
@@ -0,0 +1,125 @@
+
+
+
+ Настройки Xiaomi
+ Дополнительные настройки
+
+ Экран
+
+
+ Калибрация цвета экрана
+
+
+ Дозе Xiaomi
+ Ambient экран
+
+ Вибрация
+ Сила
+
+
+ Производительность
+ Настройки производительности
+ Выберите Ваш профил производительности
+ Выберите Ваш профил производительности
+
+
+ Производительность
+ Энергосбережение
+ Игры
+ Баланс
+ Экстримное энергосбережение
+
+
+
+
+
+ Аудио
+
+
+ Mi Оптимизатор звука
+ Oтимизирует качество звучания
+ Выберите тип наушников
+ Выберите пресет
+
+
+ По умолчанию
+ Mi Earbuds
+ Mi In-Ear (2013)
+ Mi Piston-1
+ General
+ General In-Ear
+ Basic Edition
+ Mi Piston-2
+ Standard Edition
+ Mi Headphones
+ Youth Edition
+ Color Edition
+ Mi In-Ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Mi Noise Cancelling Type-C
+ Mi Noise Cancelling 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+
+ По умолчанию
+ Рок
+ Джаз
+ Поп
+ Классика
+ Хип-хоп
+ Блюз
+ Электроника
+ Кантри
+ Танцевальная
+ Металл
+
+
+
+
+ Калибрация цвета экрана
+ Настройки цвета
+ Калибрация экрана
+
+ Включено
+ Выключено
+ Включать при загрузке
+ Красный
+ Зелёный
+ Синий
+ Минимум
+ Насыщеность
+ Значение
+ Контраст
+ Оттенок
+ Экран в оттенках серого
+
+ Выберите пресет
+
+
+ Вернуть пресет по умолчанию
+
+
+ Выбрать новое значение
+ Значение по умолчанию
+ Значение между %1$d и %2$d
+
diff --git a/XiaomiParts/res/values-ru/strings.xml b/XiaomiParts/res/values-ru/strings.xml
new file mode 100644
index 00000000..3edefe8a
--- /dev/null
+++ b/XiaomiParts/res/values-ru/strings.xml
@@ -0,0 +1,125 @@
+
+
+
+ Настройки Xiaomi
+ Дополнительные настройки
+
+ Экран
+
+
+ Калибрация цвета экрана
+
+
+ Дозе Xiaomi
+ Ambient экран
+
+ Вибрация
+ Сила
+
+
+ Производительность
+ Настройки производительности
+ Выберите Ваш профил производительности
+ Выберите Ваш профил производительности
+
+
+ Производительность
+ Энергосбережение
+ Игры
+ Баланс
+ Экстримное энергосбережение
+
+
+
+
+
+ Аудио
+
+
+ Mi Оптимизатор звука
+ Oтимизирует качество звучания
+ Выберите тип наушников
+ Выберите пресет
+
+
+ По умолчанию
+ Mi Earbuds
+ Mi In-Ear (2013)
+ Mi Piston-1
+ General
+ General In-Ear
+ Basic Edition
+ Mi Piston-2
+ Standard Edition
+ Mi Headphones
+ Youth Edition
+ Color Edition
+ Mi In-Ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Mi Noise Cancelling Type-C
+ Mi Noise Cancelling 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+
+ По умолчанию
+ Рок
+ Джаз
+ Поп
+ Классика
+ Хип-хоп
+ Блюз
+ Электроника
+ Кантри
+ Танцевальная
+ Металл
+
+
+
+
+ Калибрация цвета экрана
+ Настройки цвета
+ Калибрация экрана
+
+ Включено
+ Выключено
+ Включать при загрузке
+ Красный
+ Зелёный
+ Синий
+ Минимум
+ Насыщеность
+ Значение
+ Контраст
+ Оттенок
+ Экран в оттенках серого
+
+ Выберите пресет
+
+
+ Вернуть пресет по умолчанию
+
+
+ Выбрать новое значение
+ Значение по умолчанию
+ Значение между %1$d и %2$d
+
diff --git a/XiaomiParts/res/values-sk-rSK/strings.xml b/XiaomiParts/res/values-sk-rSK/strings.xml
new file mode 100644
index 00000000..df7b2022
--- /dev/null
+++ b/XiaomiParts/res/values-sk-rSK/strings.xml
@@ -0,0 +1,104 @@
+
+
+
+ Xiaomi Parts
+ Rozšírené nastavenia
+ Displej
+ Kalibrácia farieb
+ Sila vibrácií
+
+
+ Výkon
+ Nastavenia výkonu
+ Výber nastavenia výkonu
+ Výber nastavenia výkonu
+
+ Výkon
+ Šetrič batérie
+ Gaming
+ Vyvážený
+ Extrémny šetrič batérie
+ Vibrácie
+
+
+ Mi vylepšenie zvuku
+ Optimalizácia kvality zvuku
+ Výber typu slúchadiel
+ Výber profilu
+
+ Default
+ Mi Earbuds
+ Mi In Ear (2013)
+ Mi Piston 1
+ General Earbuds
+ General In Ear
+ Basis Edition
+ Mi Piston 2
+ Standard Edition
+ Mi Headphones
+ Youth Edition
+ Color Edition
+ Mi In Ear
+ Mi Capsule
+ Mi In Ear Pro
+ Mi Comfort
+ Mi Noise Cancelling Type-C
+ Mi Noise Cancelling 3.5mm
+ Mi Half In Ear
+ Mi In Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+ Standard
+ Rock
+ Jazz
+ Pop
+ Klasika
+ Hip Hop
+ Blues
+ Elektronická hudba
+ Country
+ Dance
+ Metal
+
+ Kalibrácia farieb displeja
+ Kalibrácia displeja
+ Aktivuj pri štarte systému
+ Zapnuté
+ Vypnuté
+ Červená
+ Zelená
+ Modrá
+ Minimum
+ Sýtosť
+ Kontrast
+ Nastavenia farieb
+ Hodnota
+ Odtieň
+ Východzie nastavenie
+ Výber nastavenia
+ Default
+ Výrazná čierna a biela
+ Extrémny AMOLED
+ Teplé farby AMOLED
+ Chladné farby AMOLED
+ Prírodné farby
+ Výber novej hodnoty
+ Pôvodná hodnota
+ Hodnota medzi %1d a %2d
+ Ambient display
+ Čiernobiely mód
+
diff --git a/XiaomiParts/res/values-sl-rSI/strings.xml b/XiaomiParts/res/values-sl-rSI/strings.xml
new file mode 100644
index 00000000..dafcf99f
--- /dev/null
+++ b/XiaomiParts/res/values-sl-rSI/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi Sound Enhancer
+ Optimiziranje kvalitete zvoka
+ Določi tip slušalk
+ Izberi prednastavitev
+
+ Privzeto
+ Mi Earbuds
+ Mi In-Ear (2013)
+ Mi Piston-1
+ Splošno
+ Splošne In-Ear
+ Basic Edition
+ Mi Piston-2
+ Standard Edition
+ Mi slušalke
+ Youth Edition
+ Barvna Izdaja
+ Mi In-Ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Mi Odvzem hrupa Type-C
+ Mi Odvzem hrupa 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+ Privzeto
+ Rock
+ Jazz
+ Pop
+ Klasika
+ Hip Hop
+ Blues
+ Elektronska
+ Country
+ Dance
+ Metal
+
diff --git a/XiaomiParts/res/values-sq-rAL/strings.xml b/XiaomiParts/res/values-sq-rAL/strings.xml
new file mode 100644
index 00000000..ebd50099
--- /dev/null
+++ b/XiaomiParts/res/values-sq-rAL/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Përmirësues zëri Mi
+ Optimizo kualitetin e zërit
+ Zgjidh tipin e kufjeve
+ Zgjidh një rregullim
+
+ Paracaktuar
+ Mi kufje të vogla
+ Mi në vesh (2013)
+ Mi Piston-1
+ Përgjithshëm
+ Përgjithshëm në vesh
+ Varianti themelor
+ Mi Piston-2
+ Varianti standard
+ Mi kufje
+ Varianti për të rinj
+ Varianti me ngjyra
+ Mi kufje në vesh
+ Mi kapsula
+ Mi kufje në vesh Pro
+ Mi komoditet
+ Mi anulim zhurme Tipi-C
+ Mi anulim zhurme 3.5mm
+ Mi Half në vesh
+ Mi në vesh 2
+ Mi Kufje Themelore
+ Mi kufje
+
+ Paracaktuar
+ Rok
+ Xhaz
+ Pop
+ Klasike
+ Hip Hop
+ Bluz
+ Elektronike
+ Shteti
+ Vallëzim
+ Metal
+
diff --git a/XiaomiParts/res/values-sr-rSP/strings.xml b/XiaomiParts/res/values-sr-rSP/strings.xml
new file mode 100644
index 00000000..47039731
--- /dev/null
+++ b/XiaomiParts/res/values-sr-rSP/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi Sound Enhancer
+ Оптимизовање квалитета звука
+ Изаберите тип слушалица
+ Изабери унапред постављење
+
+ Подразумевано
+ Mi Earbuds
+ Mi In-Ear (2013)
+ Mi Piston-1
+ Опште
+ Опште In-Ear
+ Основно издање
+ Mi Piston-2
+ Стандардно издање
+ Mi Слушалице
+ Youth Edition
+ Color Edition
+ Mi In-Ear
+ Mi капсула
+ Mi In-Ear Pro
+ Mi Комфорт
+ Mi Noise Cancelling Type-C
+ Mi Noise Cancelling 3.5mm
+ Mi Half In-Ear
+ Mi In Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+ Подразумевано
+ Рок
+ Џез
+ Поп
+ Класика
+ Хип Хоп
+ Блуз
+ Електроника
+ Каунтри
+ Денс
+ Метал
+
diff --git a/XiaomiParts/res/values-sv-rSE/strings.xml b/XiaomiParts/res/values-sv-rSE/strings.xml
new file mode 100644
index 00000000..69c8fe80
--- /dev/null
+++ b/XiaomiParts/res/values-sv-rSE/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi ljudförstärkare
+ Optimera ljudkvalitet
+ Välj hörlurstyper
+ Välj en förval
+
+ Standard
+ Mi Hörlurar
+ Mi In-Ear (2013)
+ Mi Piston-1
+ Allmän
+ Allmänna In-Ear
+ Grundläggande upplaga
+ Mi Piston-2
+ Standardupplaga
+ Mi Hörlurar
+ Ungdomlig upplaga
+ Färgad upplaga
+ Mi In-Ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Mi Brusreducering Type-C
+ Mi Brusreducering 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Hörlurar Basic
+ Mi Hörlurar
+
+ Standard
+ Rock
+ Jazz
+ Pop
+ Klassisk
+ Hip Hop
+ Blues
+ Elektroniskt
+ Country
+ Dansa
+ Metall
+
diff --git a/XiaomiParts/res/values-ta-rIN/strings.xml b/XiaomiParts/res/values-ta-rIN/strings.xml
new file mode 100644
index 00000000..90e45c51
--- /dev/null
+++ b/XiaomiParts/res/values-ta-rIN/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi சவுண்ட் என்ஹேன்சர்
+ ஆடியோ தரத்தை மேம்படுத்து
+ ஹெட்ஃபோன் வகையைத் தேர்வுசெய்க
+ ஒரு முன்னமைவைத் தேர்ந்தெடு
+
+ இயல்புநிலை
+ Mi இயர்பட்ஸ்
+ Mi இன்-இயர்(2013)
+ Mi பிஸ்டன்-1
+ பொதுவானது
+ பொதுவான இன்-இயர்
+ அடிப்படை பதிப்பு
+ Mi பிஸ்டன்-2
+ இயல்பு பதிப்பு
+ Mi ஹெட்ஃபோன்கள்
+ யூத் எடிஷன்
+ கலர் பதிப்பு
+ Mi இன்-இயர்
+ Mi கேப்ஸ்யூல்
+ Mi இன்-இயர் ப்ரோ
+ Mi வசதி
+ Mi இரைச்சல் குறைப்பு Type-C
+ Mi இரைச்சல் குறைப்பு 3.5மிமீ
+ Mi ஹாஃப் இன்-இயர்
+ Mi இன்-இயர் 2
+ Mi இயர்ஃபோன் பேசிக்
+ Mi இயர்போன்கள்
+
+ இயல்புநிலை
+ ராக்
+ ஜாஸ்
+ பாப்
+ கிளாசிக்கல்
+ ஹிப் ஹாப்
+ ப்ளூஸ்
+ எலக்ட்ரானிக்
+ கண்ட்ரி
+ நடனம்
+ மெட்டல்
+
diff --git a/XiaomiParts/res/values-te-rIN/strings.xml b/XiaomiParts/res/values-te-rIN/strings.xml
new file mode 100644
index 00000000..f67085d7
--- /dev/null
+++ b/XiaomiParts/res/values-te-rIN/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi శబ్ద మెరుగుదల సాధనం
+ ఆడియో నాణ్యతను అనుకూలపరచండి
+ హెడ్ఫోన్ల రకాన్ని ఎంచుకోండి
+ ప్రీసెట్ను ఎంచుకోండి
+
+ డిఫాల్ట్
+ Mi ఇయర్ బడ్స్
+ Mi ఇన్-ఇయర్ (2013)
+ Mi పిస్టన్-1
+ సాధారణం
+ సాధారణ ఇన్-ఇయర్
+ బేసిక్ ఎడిషన్
+ Mi పిస్టన్-2
+ ప్రామాణిక ఎడిషన్
+ Mi హెడ్ఫోన్స్
+ యూత్ ఎడిషన్
+ రంగుల ఎడిషన్
+ Mi ఇన్-ఇయర్
+ Mi క్యాప్స్యూల్
+ Mi ఇన్-ఇయర్ ప్రో
+ Mi కంఫర్ట్
+ Mi రొద తగ్గింపు టైప్-C
+ Mi రొద తగ్గింపు 3.5mm
+ Mi హాఫ్ ఇన్ ఇయర్
+ Mi ఇన్-ఇయర్ 2
+ Mi ఇయర్ఫోన్స్ బేసిక్
+ Mi ఇయర్ఫోన్స్
+
+ డిఫాల్ట్
+ రాక్
+ జాజ్
+ పాప్
+ సాంప్రదాయ
+ హిప్ హాప్
+ బ్లూస్
+ ఎలక్ట్రానిక్
+ కంట్రీ
+ నృత్యం
+ మెటల్
+
diff --git a/XiaomiParts/res/values-th-rTH/strings.xml b/XiaomiParts/res/values-th-rTH/strings.xml
new file mode 100644
index 00000000..bc5410b3
--- /dev/null
+++ b/XiaomiParts/res/values-th-rTH/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ ตัวเพิ่มประสิทธิภาพเสียง Mi
+ เพิ่มคุณภาพเสียง
+ เลือกประเภทของหูฟัง
+ เลือกรายการที่ตั้งไว้
+
+ ค่าเริ่มต้น
+ หูฟัง Mi Earbuds
+ Mi In-Ear (2013)
+ หูฟัง Mi Piston-1
+ หูฟังทั่วไป
+ หูฟัง In-Ear ทั่วไป
+ หูฟังรุ่นธรรมดา
+ หูฟัง Mi Piston-2
+ หูฟังรุ่นมาตรฐาน
+ เฮดโฟน Mi
+ หูฟังรุ่น Youth
+ หูฟังรุ่นหลากสี
+ หูฟัง Mi In-Ear
+ แคปซูล Mi
+ หูฟัง Mi In-Ear Pro
+ Mi Comfort
+ Mi ลดเสียงรบกวน Type-C
+ Mi ลดเสียงรบกวน 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ หูฟัง Mi
+
+ ค่าเริ่มต้น
+ ร็อค
+ แจ๊ส
+ ป๊อป
+ คลาสสิค
+ ฮิปฮอป
+ บลูส์
+ อิเล็กทรอนิกส์
+ คันทรี่
+ แด๊นซ์
+ เมทัล
+
diff --git a/XiaomiParts/res/values-tr-rTR/strings.xml b/XiaomiParts/res/values-tr-rTR/strings.xml
new file mode 100644
index 00000000..948b93ce
--- /dev/null
+++ b/XiaomiParts/res/values-tr-rTR/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi Ses Yükseltici
+ Ses kalitesini optimize et
+ Kulaklık türünü seçin
+ Bir ön ayar seçin
+
+ Varsayılan
+ Mi Kulaklıkları
+ Mi Kulak-İçi (2013)
+ Mi Piston-1
+ Genel
+ Genel Kulak-İçi
+ Temel sürüm
+ Mi Piston-2
+ Standart sürüm
+ Mi kulaklıkları
+ Gençlik sürümü
+ Renkli Sürüm
+ Mi Kulak-İçi
+ Mi Kapsül
+ Mi Kulak-İçi Pro
+ Mi Konfor
+ Mi Gürültü Engelleme Type-C
+ Mi Gürültü Engelleme 3.5mm
+ Mi Yarı Kulak-İçi
+ Mi Kulak-İçi 2
+ Mi Kulaklık Basit
+ Mi Kulaklıkları
+
+ Varsayılan
+ Rock
+ Caz
+ Pop
+ Klasik
+ Hip Hop
+ Blues
+ Elektronik
+ Yerel
+ Dans
+ Metal
+
diff --git a/XiaomiParts/res/values-uk-rUA/strings.xml b/XiaomiParts/res/values-uk-rUA/strings.xml
new file mode 100644
index 00000000..3e6c8659
--- /dev/null
+++ b/XiaomiParts/res/values-uk-rUA/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Покращення звуку \"Мі Sound\"
+ Поліпшити якість звуку
+ Тип навушників
+ Виберіть налаштування
+
+ За замовчуванням
+ Навушники Xiaomi
+ Mi In-Ear (2013)
+ Mi пістони-1
+ Звичайні навушники
+ Звичайні вкладиші
+ Звичайні пістони
+ Xiaomi пістони-2
+ Стандартна версія
+ Mi Headphones
+ Молодіжна версія
+ Кольорова версія
+ Mi вкладиші
+ Mi Капсула
+ Mi In-Ear Pro
+ Mi Comfort
+ Mi Noise Cancelling Type-C
+ Mi Noise Cancelling 3.5 мм
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+ За замовчуванням
+ Рок
+ Джаз
+ Поп
+ Класика
+ Хіп-хоп
+ Блюз
+ Електро
+ Кантрі
+ Танцювальна
+ Метал
+
diff --git a/XiaomiParts/res/values-ur-rIN/strings.xml b/XiaomiParts/res/values-ur-rIN/strings.xml
new file mode 100644
index 00000000..31d9799b
--- /dev/null
+++ b/XiaomiParts/res/values-ur-rIN/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi ساؤنڈ انہینسر
+ آڈیو کے معیار کو بہتر بنائيں
+ ہیڈفون ی؛قسم منتخب کریں
+ پری سیٹ منتخب کریں
+
+ ڈیفالٹ
+ Mi ایربڈز
+ Mi ان-ایئر (2013)
+ Mi پسٹن -1
+ عمومی
+ عمومی ان-ایر
+ بنیادی ایڈیشن
+ Mi پسٹن -2
+ معیاری ایڈیشن
+ Mi ہیڈ فونز
+ یوتھ ایڈیشن
+ کلر ایڈشن
+ Mi اِن-ایر
+ Mi کیپسول
+ Mi ان-ایر پرو
+ Mi Comfort
+ Mi شور منسوخی ٹائپ-C
+ Mi شور منسوخی 3.5mm
+ Mi ہاف ان ایئر
+ Mi ان-ایئر 2
+ Mi ایئرفون بیسک
+ Mi ایئر فونز
+
+ ڈیفالٹ
+ راک
+ جاز
+ پاپ
+ کلاسیکی
+ ہِپ ہاپ
+ بلیوز
+ الیکٹرونک
+ ملک
+ رقص
+ دھات
+
diff --git a/XiaomiParts/res/values-ur-rPK/strings.xml b/XiaomiParts/res/values-ur-rPK/strings.xml
new file mode 100644
index 00000000..31d9799b
--- /dev/null
+++ b/XiaomiParts/res/values-ur-rPK/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi ساؤنڈ انہینسر
+ آڈیو کے معیار کو بہتر بنائيں
+ ہیڈفون ی؛قسم منتخب کریں
+ پری سیٹ منتخب کریں
+
+ ڈیفالٹ
+ Mi ایربڈز
+ Mi ان-ایئر (2013)
+ Mi پسٹن -1
+ عمومی
+ عمومی ان-ایر
+ بنیادی ایڈیشن
+ Mi پسٹن -2
+ معیاری ایڈیشن
+ Mi ہیڈ فونز
+ یوتھ ایڈیشن
+ کلر ایڈشن
+ Mi اِن-ایر
+ Mi کیپسول
+ Mi ان-ایر پرو
+ Mi Comfort
+ Mi شور منسوخی ٹائپ-C
+ Mi شور منسوخی 3.5mm
+ Mi ہاف ان ایئر
+ Mi ان-ایئر 2
+ Mi ایئرفون بیسک
+ Mi ایئر فونز
+
+ ڈیفالٹ
+ راک
+ جاز
+ پاپ
+ کلاسیکی
+ ہِپ ہاپ
+ بلیوز
+ الیکٹرونک
+ ملک
+ رقص
+ دھات
+
diff --git a/XiaomiParts/res/values-uz-rUZ/strings.xml b/XiaomiParts/res/values-uz-rUZ/strings.xml
new file mode 100644
index 00000000..341dd5e8
--- /dev/null
+++ b/XiaomiParts/res/values-uz-rUZ/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Mi Ovoz kuchaytirgichi
+ Audio sifatini optimallashtirish
+ Naushniklar turi
+ Sozlamani tanlang
+
+ Standart
+ Mi naushniklar
+ Mi In-Ear(2013)
+ Mi Piston-1
+ Umumiy
+ Oddiy quloqliklar
+ Asosiy nashr
+ Mi Porshen-2
+ Standart versiya
+ Mi Naushniklar
+ Yoshlar nashri
+ Rangli nashr
+ Mi quloqliklari
+ Mi Kapsula
+ Mi quloqliklari Pro
+ Mi Comfort
+ Mi-shovqinni bekor qilish C-turi
+ Mi Shovqinni Kamaytirish 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+ Standart
+ Rok
+ Jazz
+ Pop
+ Klassik
+ Hip Hop
+ Blyuz
+ Elektronik
+ Mamlakat
+ Raqs
+ Metall
+
diff --git a/XiaomiParts/res/values-vi-rVN/strings.xml b/XiaomiParts/res/values-vi-rVN/strings.xml
new file mode 100644
index 00000000..bf6f327c
--- /dev/null
+++ b/XiaomiParts/res/values-vi-rVN/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Tăng cường Mi Sound
+ Tối ưu chất lượng âm thanh
+ Chọn loại tai nghe
+ Chọn hiệu chỉnh sẵn có
+
+ Mặc định
+ Mi Earbud
+ Mi In-Ear (2013)
+ Mi Piston-1
+ Thường
+ In-Ear thường
+ Cơ bản
+ Mi piston-2
+ Tiêu chuẩn
+ Tai nghe Mi
+ Phiên bản trẻ
+ Phiên bản sắc màu
+ Mi In-Ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Khử tiếng ồn Mi Type-C
+ Khử tiếng ồn Mi 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Tai nghe Mi
+
+ Mặc định
+ Rock
+ Jazz
+ Pop
+ Cổ điển
+ Hip Hop
+ Blue
+ Điện tử
+ Quê hương
+ Khiêu vũ
+ Kim loại
+
diff --git a/XiaomiParts/res/values-zh-rCN/strings.xml b/XiaomiParts/res/values-zh-rCN/strings.xml
new file mode 100644
index 00000000..9e56bda9
--- /dev/null
+++ b/XiaomiParts/res/values-zh-rCN/strings.xml
@@ -0,0 +1,124 @@
+
+
+
+ 小米设置
+ 附加设置
+
+ 显示
+
+
+ 显示颜色矫正
+
+
+ Xiaomi Doze
+ 环境显示
+
+ 触觉反馈
+ 强度
+
+
+ 性能
+ 性能选项
+ 性能选项
+ 设置性能选项
+
+
+ 高性能
+ 延长电池
+ 游戏
+ 平衡
+ 极致延长电池
+
+
+
+
+
+ 音频
+
+
+ 米音
+ 改善音质
+ 耳机类型设置
+ 选择预设效果
+
+
+ 无
+ 灵动耳塞式
+ 灵悦入耳式
+ 小米活塞1
+ 通用耳塞式
+ 通用入耳式
+ 小米活塞简装版
+ 小米活塞2
+ 小米活塞标准版
+ 小米头戴式
+ 小米活塞青春版
+ 小米活塞炫彩版
+ 小米圈铁
+ 小米胶囊
+ 小米圈铁Pro
+ 小米头戴轻松版
+ 小米降噪 typeC
+ 小米降噪 3.5mm
+ 小米半入耳式
+ 小米圈铁2
+ 小米耳机基本款
+ 小米耳机
+
+
+ 无
+ 摇滚
+ 爵士
+ 流行
+ 古典
+ 嘻哈
+ 布鲁斯
+ 电子音乐
+ 乡村
+ 舞曲
+ 金属
+
+ 显示颜色矫正
+ 显示矫正
+ 启用
+ 在启动时设置
+ 关闭
+ 红
+ 绿
+ 蓝
+ 最低
+ 饱和度
+ 设定值
+ 对比度
+ 色调
+ 颜色设置
+ 重置
+ 设定一个新的值
+
+ 选择预设
+
+ 默认
+ 版本 1
+ 版本 2
+ 版本 3
+ Triluminous
+ Deep Black and White
+ Deep Natural
+ Cool Amoled
+ Extreme Amoled
+ Warm Amoled
+ Hybrid Mamba
+
diff --git a/XiaomiParts/res/values-zh-rHK/strings.xml b/XiaomiParts/res/values-zh-rHK/strings.xml
new file mode 100644
index 00000000..2eb0568c
--- /dev/null
+++ b/XiaomiParts/res/values-zh-rHK/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ 使用米音提升音質
+ 米音
+ 耳機類型設定
+ 請選擇預設等化器
+
+ 無
+ 靈動耳塞式
+ 靈悅入耳式
+ 小米活塞1
+ 通用耳塞式
+ 通用入耳式
+ 小米活塞簡裝版
+ 小米活塞2
+ 小米活塞標準版
+ 小米頭戴式
+ 小米活塞青春版
+ 小米活塞耳機炫彩版
+ 小米圈鐵耳機
+ 小米膠囊
+ 小米圈鐵耳機Pro
+ 小米頭戴式耳機輕鬆版
+ 小米降噪耳機 typeC
+ 小米降噪耳機 3.5mm
+ 小米半入耳式
+ 小米圈鐵耳機2
+ 小米耳機基本款
+ 小米耳機
+
+ 無
+ 搖滾
+ 爵士
+ 流行
+ 古典
+ 嘻哈
+ 布魯斯
+ 電子音樂
+ 鄉村
+ 舞曲
+ 金屬
+
diff --git a/XiaomiParts/res/values-zh-rSG/strings.xml b/XiaomiParts/res/values-zh-rSG/strings.xml
new file mode 100644
index 00000000..2eb0568c
--- /dev/null
+++ b/XiaomiParts/res/values-zh-rSG/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ 使用米音提升音質
+ 米音
+ 耳機類型設定
+ 請選擇預設等化器
+
+ 無
+ 靈動耳塞式
+ 靈悅入耳式
+ 小米活塞1
+ 通用耳塞式
+ 通用入耳式
+ 小米活塞簡裝版
+ 小米活塞2
+ 小米活塞標準版
+ 小米頭戴式
+ 小米活塞青春版
+ 小米活塞耳機炫彩版
+ 小米圈鐵耳機
+ 小米膠囊
+ 小米圈鐵耳機Pro
+ 小米頭戴式耳機輕鬆版
+ 小米降噪耳機 typeC
+ 小米降噪耳機 3.5mm
+ 小米半入耳式
+ 小米圈鐵耳機2
+ 小米耳機基本款
+ 小米耳機
+
+ 無
+ 搖滾
+ 爵士
+ 流行
+ 古典
+ 嘻哈
+ 布魯斯
+ 電子音樂
+ 鄉村
+ 舞曲
+ 金屬
+
diff --git a/XiaomiParts/res/values-zh-rTW/strings.xml b/XiaomiParts/res/values-zh-rTW/strings.xml
new file mode 100644
index 00000000..2eb0568c
--- /dev/null
+++ b/XiaomiParts/res/values-zh-rTW/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ 使用米音提升音質
+ 米音
+ 耳機類型設定
+ 請選擇預設等化器
+
+ 無
+ 靈動耳塞式
+ 靈悅入耳式
+ 小米活塞1
+ 通用耳塞式
+ 通用入耳式
+ 小米活塞簡裝版
+ 小米活塞2
+ 小米活塞標準版
+ 小米頭戴式
+ 小米活塞青春版
+ 小米活塞耳機炫彩版
+ 小米圈鐵耳機
+ 小米膠囊
+ 小米圈鐵耳機Pro
+ 小米頭戴式耳機輕鬆版
+ 小米降噪耳機 typeC
+ 小米降噪耳機 3.5mm
+ 小米半入耳式
+ 小米圈鐵耳機2
+ 小米耳機基本款
+ 小米耳機
+
+ 無
+ 搖滾
+ 爵士
+ 流行
+ 古典
+ 嘻哈
+ 布魯斯
+ 電子音樂
+ 鄉村
+ 舞曲
+ 金屬
+
diff --git a/XiaomiParts/res/values-zh/strings.xml b/XiaomiParts/res/values-zh/strings.xml
new file mode 100644
index 00000000..9e56bda9
--- /dev/null
+++ b/XiaomiParts/res/values-zh/strings.xml
@@ -0,0 +1,124 @@
+
+
+
+ 小米设置
+ 附加设置
+
+ 显示
+
+
+ 显示颜色矫正
+
+
+ Xiaomi Doze
+ 环境显示
+
+ 触觉反馈
+ 强度
+
+
+ 性能
+ 性能选项
+ 性能选项
+ 设置性能选项
+
+
+ 高性能
+ 延长电池
+ 游戏
+ 平衡
+ 极致延长电池
+
+
+
+
+
+ 音频
+
+
+ 米音
+ 改善音质
+ 耳机类型设置
+ 选择预设效果
+
+
+ 无
+ 灵动耳塞式
+ 灵悦入耳式
+ 小米活塞1
+ 通用耳塞式
+ 通用入耳式
+ 小米活塞简装版
+ 小米活塞2
+ 小米活塞标准版
+ 小米头戴式
+ 小米活塞青春版
+ 小米活塞炫彩版
+ 小米圈铁
+ 小米胶囊
+ 小米圈铁Pro
+ 小米头戴轻松版
+ 小米降噪 typeC
+ 小米降噪 3.5mm
+ 小米半入耳式
+ 小米圈铁2
+ 小米耳机基本款
+ 小米耳机
+
+
+ 无
+ 摇滚
+ 爵士
+ 流行
+ 古典
+ 嘻哈
+ 布鲁斯
+ 电子音乐
+ 乡村
+ 舞曲
+ 金属
+
+ 显示颜色矫正
+ 显示矫正
+ 启用
+ 在启动时设置
+ 关闭
+ 红
+ 绿
+ 蓝
+ 最低
+ 饱和度
+ 设定值
+ 对比度
+ 色调
+ 颜色设置
+ 重置
+ 设定一个新的值
+
+ 选择预设
+
+ 默认
+ 版本 1
+ 版本 2
+ 版本 3
+ Triluminous
+ Deep Black and White
+ Deep Natural
+ Cool Amoled
+ Extreme Amoled
+ Warm Amoled
+ Hybrid Mamba
+
diff --git a/XiaomiParts/res/values/arrays.xml b/XiaomiParts/res/values/arrays.xml
new file mode 100644
index 00000000..5f92fd58
--- /dev/null
+++ b/XiaomiParts/res/values/arrays.xml
@@ -0,0 +1,142 @@
+
+
+
+
+ - @string/spectrum_balance
+ - @string/spectrum_performance
+ - @string/spectrum_battery
+ - @string/spectrum_gaming
+ - @string/spectrum_extreme_battery
+
+
+ - 0
+ - 1
+ - 2
+ - 3
+ - 4
+
+
+
+
+ - @string/dirac_headset_default
+ - @string/dirac_headset_earbuds
+ - @string/dirac_headset_in_ear_2013
+ - @string/dirac_headset_piston_1
+ - @string/dirac_headset_general
+ - @string/dirac_headset_general_inear
+ - @string/dirac_headset_piston_basic
+ - @string/dirac_headset_piston_2
+ - @string/dirac_headset_piston_standard
+ - @string/dirac_headset_headphone
+ - @string/dirac_headset_piston_youth
+ - @string/dirac_headset_piston_color
+ - @string/dirac_headset_in_ear
+ - @string/dirac_headset_capsule
+ - @string/dirac_headset_in_ear_pro
+ - @string/dirac_headset_comfort
+ - @string/dirac_headset_reduction_noise
+ - @string/dirac_headset_cancelling
+ - @string/dirac_headset_half_in_ear
+ - @string/dirac_headset_in_ear2
+ - @string/dirac_headset_earphone_basic
+ - @string/dirac_headset_earphone
+
+
+
+ - 0
+ - 1
+ - 2
+ - 3
+ - 5
+ - 6
+ - 7
+ - 8
+ - 9
+ - 10
+ - 11
+ - 12
+ - 13
+ - 14
+ - 15
+ - 16
+ - 17
+ - 18
+ - 19
+ - 20
+ - 21
+ - 22
+ - 23
+
+
+
+
+ - @string/dirac_preset_default
+ - @string/dirac_preset_rock
+ - @string/dirac_preset_jazz
+ - @string/dirac_preset_pop
+ - @string/dirac_preset_classical
+ - @string/dirac_preset_hiphop
+ - @string/dirac_preset_blues
+ - @string/dirac_preset_electronic
+ - @string/dirac_preset_country
+ - @string/dirac_preset_dance
+ - @string/dirac_preset_metal
+
+
+
+ - "0,0,0,0,0,0,0"
+ - "4,2,-2,0,-2,-2,4"
+ - "0,0,0,-2,-3,0,0"
+ - "0,-3,-5,0,0,-3,0"
+ - "0,0,0,0,3,6,6"
+ - "3,3,-3,0,-3,0,2"
+ - "2,4,-6,4,0,1,2"
+ - "3,3,-1,0,-3,0,0"
+ - "0,0,-2,-2,2,2,0"
+ - "0,4,2,0,-2,-2,4"
+ - "2,0,0,-2,-4,0,0"
+
+
+
+
+ - @string/preset_default
+ - @string/preset_version_1
+ - @string/preset_version_2
+ - @string/preset_version_3
+ - @string/preset_triluminous
+ - @string/preset_deep_black_white
+ - @string/preset_deep_natural
+ - @string/preset_cool_amoled
+ - @string/preset_extreme_amoled
+ - @string/preset_warm_amoled
+ - @string/preset_hybrid_mamba
+
+
+
+
+ - 237 237 237 35 33 127 127 0
+ - 237 237 237 35 40 127 127 0
+ - 250 250 235 35 27 112 132 1520
+ - 240 240 240 35 33 127 127 0
+ - 255 250 251 35 66 136 132 1526
+ - 250 250 255 35 60 117 136 0
+ - 250 250 255 35 33 117 136 0
+ - 236 248 255 35 50 123 130 0
+ - 255 255 255 35 65 114 136 0
+ - 253 246 243 35 50 123 130 0
+ - 226 215 255 35 40 119 132 10
+
+
diff --git a/XiaomiParts/res/values/attrs.xml b/XiaomiParts/res/values/attrs.xml
new file mode 100644
index 00000000..e7ccbe4c
--- /dev/null
+++ b/XiaomiParts/res/values/attrs.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/XiaomiParts/res/values/strings.xml b/XiaomiParts/res/values/strings.xml
new file mode 100644
index 00000000..7790276d
--- /dev/null
+++ b/XiaomiParts/res/values/strings.xml
@@ -0,0 +1,134 @@
+
+
+
+ Xiaomi Parts
+ Extra Settings
+
+ Display
+
+
+ Display Color Calibration
+
+
+ Xiaomi Doze
+ Ambient Display
+
+ Haptic feedback
+ Strength
+
+
+ Performance
+ Performance Settings
+ Choose your Performance settings
+ Choose your Performance settings
+
+
+ Performance
+ Battery
+ Gaming
+ Balance
+ Extreme Battery
+
+ Audio
+
+
+ Mi Sound Enhancer
+ Optimize audio quality
+ Choose headphones type
+ Choose a preset
+
+
+ Default
+ Mi Earbuds
+ Mi In-Ear (2013)
+ Mi Piston-1
+ General
+ General In-Ear
+ Basic Edition
+ Mi Piston-2
+ Standard Edition
+ Mi Headphones
+ Youth Edition
+ Color Edition
+ Mi In-Ear
+ Mi Capsule
+ Mi In-Ear Pro
+ Mi Comfort
+ Mi Noise Cancelling Type-C
+ Mi Noise Cancelling 3.5mm
+ Mi Half In-Ear
+ Mi In-Ear 2
+ Mi Earphones Basic
+ Mi Earphones
+
+
+ Default
+ Rock
+ Jazz
+ Pop
+ Classical
+ Hip Hop
+ Blues
+ Electronic
+ Country
+ Dance
+ Metal
+
+
+ Display Color Calibration
+ Color Settings
+ Display Calibration
+
+ On
+ Off
+ Set On Boot
+ Red
+ Green
+ Blue
+ Minimum
+ Saturation
+ Value
+ Contrast
+ Hue
+ Grayscale Display
+
+ Select Preset
+
+ Default
+ Version 1
+ Version 2
+ Version 3
+ Triluminous
+ Deep Black and White
+ Deep Natural
+ Cool Amoled
+ Extreme Amoled
+ Warm Amoled
+ Hybrid Mamba
+
+
+ Flip Cover Wakeup
+ Enable Flip Cover Wakeup
+ Wakeup device via magnetic Flip Cover
+
+ @string/presets_dialog_title
+ Reset
+
+
+ Choose new Value
+ Default Value
+ Value between %1$d and %2$d
+
diff --git a/XiaomiParts/res/values/styles.xml b/XiaomiParts/res/values/styles.xml
new file mode 100644
index 00000000..675c0d90
--- /dev/null
+++ b/XiaomiParts/res/values/styles.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
diff --git a/XiaomiParts/res/xml/preferences_kcal.xml b/XiaomiParts/res/xml/preferences_kcal.xml
new file mode 100644
index 00000000..8d608705
--- /dev/null
+++ b/XiaomiParts/res/xml/preferences_kcal.xml
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/XiaomiParts/res/xml/preferences_xiaomi_parts.xml b/XiaomiParts/res/xml/preferences_xiaomi_parts.xml
new file mode 100644
index 00000000..2eb1930a
--- /dev/null
+++ b/XiaomiParts/res/xml/preferences_xiaomi_parts.xml
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/XiaomiParts/src/org/lineageos/settings/device/BootReceiver.java b/XiaomiParts/src/org/lineageos/settings/device/BootReceiver.java
new file mode 100644
index 00000000..1cf19bf7
--- /dev/null
+++ b/XiaomiParts/src/org/lineageos/settings/device/BootReceiver.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2018 The Xiaomi-SDM660 Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package org.lineageos.settings.device;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+
+import org.lineageos.settings.device.kcal.Utils;
+
+public class BootReceiver extends BroadcastReceiver implements Utils {
+
+ public void onReceive(Context context, Intent intent) {
+
+ if (Settings.Secure.getInt(context.getContentResolver(), PREF_ENABLED, 0) == 1) {
+ FileUtils.setValue(KCAL_ENABLE, Settings.Secure.getInt(context.getContentResolver(),
+ PREF_ENABLED, 0));
+
+ String rgbValue = Settings.Secure.getInt(context.getContentResolver(),
+ PREF_RED, RED_DEFAULT) + " " +
+ Settings.Secure.getInt(context.getContentResolver(), PREF_GREEN,
+ GREEN_DEFAULT) + " " +
+ Settings.Secure.getInt(context.getContentResolver(), PREF_BLUE,
+ BLUE_DEFAULT);
+
+ FileUtils.setValue(KCAL_RGB, rgbValue);
+ FileUtils.setValue(KCAL_MIN, Settings.Secure.getInt(context.getContentResolver(),
+ PREF_MINIMUM, MINIMUM_DEFAULT));
+ FileUtils.setValue(KCAL_SAT, Settings.Secure.getInt(context.getContentResolver(),
+ PREF_GRAYSCALE, 0) == 1 ? 128 :
+ Settings.Secure.getInt(context.getContentResolver(),
+ PREF_SATURATION, SATURATION_DEFAULT) + SATURATION_OFFSET);
+ FileUtils.setValue(KCAL_VAL, Settings.Secure.getInt(context.getContentResolver(),
+ PREF_VALUE, VALUE_DEFAULT) + VALUE_OFFSET);
+ FileUtils.setValue(KCAL_CONT, Settings.Secure.getInt(context.getContentResolver(),
+ PREF_CONTRAST, CONTRAST_DEFAULT) + CONTRAST_OFFSET);
+ FileUtils.setValue(KCAL_HUE, Settings.Secure.getInt(context.getContentResolver(),
+ PREF_HUE, HUE_DEFAULT));
+ }
+
+ FileUtils.setValue(DeviceSettings.VIBRATION_STRENGTH_PATH, Settings.Secure.getInt(
+ context.getContentResolver(), DeviceSettings.PREF_VIBRATION_STRENGTH, 80) / 100.0 * (DeviceSettings.MAX_VIBRATION - DeviceSettings.MIN_VIBRATION) + DeviceSettings.MIN_VIBRATION);
+ FileUtils.setValue(DeviceSettings.SPECTRUM_PATH, Settings.Secure.getString(
+ context.getContentResolver(), DeviceSettings.PREF_SPECTRUM));
+ FileUtils.setValue(DeviceSettings.HALL_WAKEUP_PATH, Settings.Secure.getInt(
+ context.getContentResolver(), DeviceSettings.PREF_HALL_WAKEUP, 1) == 1 ? "Y" : "N");
+ context.startService(new Intent(context, DiracService.class));
+ }
+}
diff --git a/XiaomiParts/src/org/lineageos/settings/device/DeviceSettings.java b/XiaomiParts/src/org/lineageos/settings/device/DeviceSettings.java
new file mode 100644
index 00000000..51dfbf91
--- /dev/null
+++ b/XiaomiParts/src/org/lineageos/settings/device/DeviceSettings.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2018 The Xiaomi-SDM660 Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package org.lineageos.settings.device;
+
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.support.v14.preference.PreferenceFragment;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceCategory;
+
+import org.lineageos.settings.device.kcal.KCalSettingsActivity;
+import org.lineageos.settings.device.preferences.SecureSettingListPreference;
+import org.lineageos.settings.device.preferences.SecureSettingSwitchPreference;
+import org.lineageos.settings.device.preferences.VibrationSeekBarPreference;
+
+public class DeviceSettings extends PreferenceFragment implements
+ Preference.OnPreferenceChangeListener {
+
+ public static final String PREF_VIBRATION_STRENGTH = "vibration_strength";
+ public static final String VIBRATION_STRENGTH_PATH = "/sys/devices/virtual/timed_output/vibrator/vtg_level";
+
+ // value of vtg_min and vtg_max
+ public static final int MIN_VIBRATION = 116;
+ public static final int MAX_VIBRATION = 3596;
+
+ private static final String CATEGORY_DISPLAY = "display";
+ private static final String PREF_DEVICE_DOZE = "device_doze";
+ private static final String PREF_DEVICE_KCAL = "device_kcal";
+
+ public static final String PREF_SPECTRUM = "spectrum";
+ public static final String SPECTRUM_PATH = "/sys/devices/virtual/thermal/thermal_message/sconfig";
+
+ private static final String PREF_ENABLE_DIRAC = "dirac_enabled";
+ private static final String PREF_HEADSET = "dirac_headset_pref";
+ private static final String PREF_PRESET = "dirac_preset_pref";
+
+ private static final String CATEGORY_HALL_WAKEUP = "hall_wakeup";
+ public static final String PREF_HALL_WAKEUP = "hall";
+ public static final String HALL_WAKEUP_PATH = "/sys/module/hall/parameters/hall_toggle";
+
+ private static final String DEVICE_DOZE_PACKAGE_NAME = "org.lineageos.settings.doze";
+
+ private SecureSettingListPreference mSPECTRUM;
+
+ @Override
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ setPreferencesFromResource(R.xml.preferences_xiaomi_parts, rootKey);
+
+ VibrationSeekBarPreference vibrationStrength = (VibrationSeekBarPreference) findPreference(PREF_VIBRATION_STRENGTH);
+ vibrationStrength.setEnabled(FileUtils.fileWritable(VIBRATION_STRENGTH_PATH));
+ vibrationStrength.setOnPreferenceChangeListener(this);
+
+ PreferenceCategory displayCategory = (PreferenceCategory) findPreference(CATEGORY_DISPLAY);
+ if (isAppNotInstalled(DEVICE_DOZE_PACKAGE_NAME)) {
+ displayCategory.removePreference(findPreference(PREF_DEVICE_DOZE));
+ }
+
+ Preference kcal = findPreference(PREF_DEVICE_KCAL);
+
+ kcal.setOnPreferenceClickListener(preference -> {
+ Intent intent = new Intent(getActivity().getApplicationContext(), KCalSettingsActivity.class);
+ startActivity(intent);
+ return true;
+ });
+
+ mSPECTRUM = (SecureSettingListPreference) findPreference(PREF_SPECTRUM);
+ mSPECTRUM.setValue(FileUtils.getValue(SPECTRUM_PATH));
+ mSPECTRUM.setSummary(mSPECTRUM.getEntry());
+ mSPECTRUM.setOnPreferenceChangeListener(this);
+
+ boolean enhancerEnabled;
+ try {
+ enhancerEnabled = DiracService.sDiracUtils.isDiracEnabled();
+ } catch (java.lang.NullPointerException e) {
+ getContext().startService(new Intent(getContext(), DiracService.class));
+ enhancerEnabled = DiracService.sDiracUtils.isDiracEnabled();
+ }
+
+ SecureSettingSwitchPreference enableDirac = (SecureSettingSwitchPreference) findPreference(PREF_ENABLE_DIRAC);
+ enableDirac.setOnPreferenceChangeListener(this);
+ enableDirac.setChecked(enhancerEnabled);
+
+ SecureSettingListPreference headsetType = (SecureSettingListPreference) findPreference(PREF_HEADSET);
+ headsetType.setOnPreferenceChangeListener(this);
+
+ SecureSettingListPreference preset = (SecureSettingListPreference) findPreference(PREF_PRESET);
+ preset.setOnPreferenceChangeListener(this);
+
+ if (FileUtils.fileWritable(HALL_WAKEUP_PATH)) {
+ SecureSettingSwitchPreference hall = (SecureSettingSwitchPreference) findPreference(PREF_HALL_WAKEUP);
+ hall.setChecked(FileUtils.getValue(HALL_WAKEUP_PATH).equals("Y"));
+ hall.setOnPreferenceChangeListener(this);
+ } else {
+ getPreferenceScreen().removePreference(findPreference(CATEGORY_HALL_WAKEUP));
+ }
+ }
+
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object value) {
+ final String key = preference.getKey();
+ switch (key) {
+ case PREF_VIBRATION_STRENGTH:
+ double vibrationValue = (int) value / 100.0 * (MAX_VIBRATION - MIN_VIBRATION) + MIN_VIBRATION;
+ FileUtils.setValue(VIBRATION_STRENGTH_PATH, vibrationValue);
+ break;
+
+ case PREF_SPECTRUM:
+ mSPECTRUM.setValue((String) value);
+ mSPECTRUM.setSummary(mSPECTRUM.getEntry());
+ FileUtils.setValue(SPECTRUM_PATH, (String) value);
+ break;
+
+ case PREF_ENABLE_DIRAC:
+ try {
+ DiracService.sDiracUtils.setEnabled((boolean) value);
+ } catch (java.lang.NullPointerException e) {
+ getContext().startService(new Intent(getContext(), DiracService.class));
+ DiracService.sDiracUtils.setEnabled((boolean) value);
+ }
+ break;
+
+ case PREF_HEADSET:
+ try {
+ DiracService.sDiracUtils.setHeadsetType(Integer.parseInt(value.toString()));
+ } catch (java.lang.NullPointerException e) {
+ getContext().startService(new Intent(getContext(), DiracService.class));
+ DiracService.sDiracUtils.setHeadsetType(Integer.parseInt(value.toString()));
+ }
+ break;
+
+ case PREF_PRESET:
+ try {
+ DiracService.sDiracUtils.setLevel(String.valueOf(value));
+ } catch (java.lang.NullPointerException e) {
+ getContext().startService(new Intent(getContext(), DiracService.class));
+ DiracService.sDiracUtils.setLevel(String.valueOf(value));
+ }
+ break;
+
+ case PREF_HALL_WAKEUP:
+ FileUtils.setValue(HALL_WAKEUP_PATH, (boolean) value ? "Y" : "N");
+ break;
+
+ default:
+ break;
+ }
+ return true;
+ }
+
+ private boolean isAppNotInstalled(String uri) {
+ PackageManager packageManager = getContext().getPackageManager();
+ try {
+ packageManager.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
+ return false;
+ } catch (PackageManager.NameNotFoundException e) {
+ return true;
+ }
+ }
+}
diff --git a/XiaomiParts/src/org/lineageos/settings/device/DeviceSettingsActivity.java b/XiaomiParts/src/org/lineageos/settings/device/DeviceSettingsActivity.java
new file mode 100644
index 00000000..86fb8abd
--- /dev/null
+++ b/XiaomiParts/src/org/lineageos/settings/device/DeviceSettingsActivity.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2018 The Xiaomi-SDM660 Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package org.lineageos.settings.device;
+
+import android.app.Activity;
+import android.app.Fragment;
+import android.os.Bundle;
+import android.view.MenuItem;
+
+public class DeviceSettingsActivity extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ getActionBar().setDisplayHomeAsUpEnabled(true);
+
+ Fragment fragment = getFragmentManager().findFragmentById(android.R.id.content);
+ DeviceSettings deviceSettingsFragment;
+ if (fragment == null) {
+ deviceSettingsFragment = new DeviceSettings();
+ getFragmentManager().beginTransaction()
+ .add(android.R.id.content, deviceSettingsFragment)
+ .commit();
+ }
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (item.getItemId() == android.R.id.home) {
+ finish();
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+}
diff --git a/XiaomiParts/src/org/lineageos/settings/device/DiracService.java b/XiaomiParts/src/org/lineageos/settings/device/DiracService.java
new file mode 100644
index 00000000..20c805f6
--- /dev/null
+++ b/XiaomiParts/src/org/lineageos/settings/device/DiracService.java
@@ -0,0 +1,32 @@
+package org.lineageos.settings.device;
+
+import android.app.Service;
+import android.content.Intent;
+import android.os.IBinder;
+import android.util.Log;
+
+public class DiracService extends Service {
+
+ private final String TAG = this.getClass().getName();
+
+ static DiracUtils sDiracUtils;
+
+ @Override
+ public IBinder onBind(Intent arg0) {
+ return null;
+ }
+
+ @Override
+ public int onStartCommand(Intent intent, int flags, int startId) {
+ sDiracUtils = new DiracUtils();
+ sDiracUtils.onBootCompleted();
+ Log.d(TAG, "Service started");
+ return START_STICKY;
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ Log.d(TAG, "Service destroyed");
+ }
+}
diff --git a/XiaomiParts/src/org/lineageos/settings/device/DiracSound.java b/XiaomiParts/src/org/lineageos/settings/device/DiracSound.java
new file mode 100644
index 00000000..227c9751
--- /dev/null
+++ b/XiaomiParts/src/org/lineageos/settings/device/DiracSound.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2018 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.lineageos.settings.device;
+
+import android.media.audiofx.AudioEffect;
+
+import java.util.UUID;
+
+class DiracSound extends AudioEffect {
+
+ private static final int DIRACSOUND_PARAM_HEADSET_TYPE = 1;
+ private static final int DIRACSOUND_PARAM_EQ_LEVEL = 2;
+ private static final int DIRACSOUND_PARAM_MUSIC = 4;
+
+ private static final UUID EFFECT_TYPE_DIRACSOUND =
+ UUID.fromString("e069d9e0-8329-11df-9168-0002a5d5c51b");
+
+ DiracSound(int priority, int audioSession) {
+ super(EFFECT_TYPE_NULL, EFFECT_TYPE_DIRACSOUND, priority, audioSession);
+ }
+
+ int getMusic() throws IllegalStateException,
+ IllegalArgumentException, UnsupportedOperationException {
+ int[] value = new int[1];
+ checkStatus(getParameter(DIRACSOUND_PARAM_MUSIC, value));
+ return value[0];
+ }
+
+ void setMusic(int enable) throws IllegalStateException,
+ IllegalArgumentException, UnsupportedOperationException {
+ checkStatus(setParameter(DIRACSOUND_PARAM_MUSIC, enable));
+ }
+
+ int getHeadsetType() throws IllegalStateException,
+ IllegalArgumentException, UnsupportedOperationException {
+ int[] value = new int[1];
+ checkStatus(getParameter(DIRACSOUND_PARAM_HEADSET_TYPE, value));
+ return value[0];
+ }
+
+ void setHeadsetType(int type) throws IllegalStateException,
+ IllegalArgumentException, UnsupportedOperationException {
+ checkStatus(setParameter(DIRACSOUND_PARAM_HEADSET_TYPE, type));
+ }
+
+ void setLevel(int band, float level) throws IllegalStateException,
+ IllegalArgumentException, UnsupportedOperationException {
+ checkStatus(setParameter(new int[]{DIRACSOUND_PARAM_EQ_LEVEL, band},
+ String.valueOf(level).getBytes()));
+ }
+
+ float getLevel(int band) throws IllegalStateException,
+ IllegalArgumentException, UnsupportedOperationException {
+ int[] param = new int[2];
+ byte[] value = new byte[10];
+ param[0] = DIRACSOUND_PARAM_EQ_LEVEL;
+ param[1] = band;
+ checkStatus(getParameter(param, value));
+ return Float.valueOf(new String(value));
+ }
+}
diff --git a/XiaomiParts/src/org/lineageos/settings/device/DiracUtils.java b/XiaomiParts/src/org/lineageos/settings/device/DiracUtils.java
new file mode 100644
index 00000000..f7a49682
--- /dev/null
+++ b/XiaomiParts/src/org/lineageos/settings/device/DiracUtils.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2018 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.lineageos.settings.device;
+
+final class DiracUtils {
+
+ private final DiracSound mDiracSound;
+
+ DiracUtils() {
+ mDiracSound = new DiracSound(0, 0);
+ }
+
+ void onBootCompleted() {
+ setEnabled(mDiracSound.getMusic() == 1);
+ mDiracSound.setHeadsetType(mDiracSound.getHeadsetType());
+ setLevel(getLevel());
+ }
+
+ void setEnabled(boolean enable) {
+ mDiracSound.setEnabled(enable);
+ mDiracSound.setMusic(enable ? 1 : 0);
+ }
+
+ boolean isDiracEnabled() {
+ return mDiracSound.getMusic() == 1;
+ }
+
+ private String getLevel() {
+ StringBuilder selected = new StringBuilder();
+ for (int band = 0; band <= 6; band++) {
+ int temp = (int) mDiracSound.getLevel(band);
+ selected.append(temp);
+ if (band != 6) selected.append(",");
+ }
+ return selected.toString();
+ }
+
+ void setLevel(String preset) {
+ String[] level = preset.split("\\s*,\\s*");
+ for (int band = 0; band <= level.length - 1; band++) {
+ mDiracSound.setLevel(band, Float.valueOf(level[band]));
+ }
+ }
+
+ void setHeadsetType(int paramInt) {
+ mDiracSound.setHeadsetType(paramInt);
+ }
+}
diff --git a/XiaomiParts/src/org/lineageos/settings/device/FileUtils.java b/XiaomiParts/src/org/lineageos/settings/device/FileUtils.java
new file mode 100644
index 00000000..72005f32
--- /dev/null
+++ b/XiaomiParts/src/org/lineageos/settings/device/FileUtils.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2018 The Xiaomi-SDM660 Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package org.lineageos.settings.device;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+
+public class FileUtils {
+
+ static boolean fileWritable(String filename) {
+ return fileExists(filename) && new File(filename).canWrite();
+ }
+
+ private static boolean fileExists(String filename) {
+ if (filename == null) {
+ return false;
+ }
+ return new File(filename).exists();
+ }
+
+ public static void setValue(String path, Boolean value) {
+ if (fileWritable(path)) {
+ if (path == null) {
+ return;
+ }
+ try {
+ FileOutputStream fos = new FileOutputStream(new File(path));
+ fos.write((value ? "1" : "0").getBytes());
+ fos.flush();
+ fos.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public static void setValue(String path, int value) {
+ if (fileWritable(path)) {
+ if (path == null) {
+ return;
+ }
+ try {
+ FileOutputStream fos = new FileOutputStream(new File(path));
+ fos.write(Integer.toString(value).getBytes());
+ fos.flush();
+ fos.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ static void setValue(String path, double value) {
+ if (fileWritable(path)) {
+ if (path == null) {
+ return;
+ }
+ try {
+ FileOutputStream fos = new FileOutputStream(new File(path));
+ fos.write(Long.toString(Math.round(value)).getBytes());
+ fos.flush();
+ fos.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public static void setValue(String path, String value) {
+ if (fileWritable(path)) {
+ if (path == null) {
+ return;
+ }
+ try {
+ FileOutputStream fos = new FileOutputStream(new File(path));
+ fos.write(value.getBytes());
+ fos.flush();
+ fos.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ static String getValue(String filename) {
+ if (filename == null) {
+ return null;
+ }
+ String line;
+ try (BufferedReader br = new BufferedReader(new FileReader(filename), 1024)) {
+ line = br.readLine();
+ } catch (IOException e) {
+ return null;
+ }
+ // ignore
+ return line;
+ }
+}
diff --git a/XiaomiParts/src/org/lineageos/settings/device/PerformanceTileService.java b/XiaomiParts/src/org/lineageos/settings/device/PerformanceTileService.java
new file mode 100644
index 00000000..db5fcc9e
--- /dev/null
+++ b/XiaomiParts/src/org/lineageos/settings/device/PerformanceTileService.java
@@ -0,0 +1,39 @@
+package org.lineageos.settings.device;
+
+import android.service.quicksettings.Tile;
+import android.service.quicksettings.TileService;
+
+public class PerformanceTileService extends TileService {
+
+ @Override
+ public void onStartListening() {
+
+ int currentState = Integer.parseInt(FileUtils.getValue(DeviceSettings.SPECTRUM_PATH));
+
+ Tile tile = getQsTile();
+ tile.setState(Tile.STATE_ACTIVE);
+ tile.setLabel(getResources().getStringArray(R.array.spectrum_profiles)[currentState]);
+
+ tile.updateTile();
+ super.onStartListening();
+ }
+
+ @Override
+ public void onClick() {
+ int currentState = Integer.parseInt(FileUtils.getValue(DeviceSettings.SPECTRUM_PATH));
+
+ int nextState;
+ if (currentState == 4) {
+ nextState = 0;
+ } else {
+ nextState = currentState + 1;
+ }
+
+ Tile tile = getQsTile();
+ FileUtils.setValue(DeviceSettings.SPECTRUM_PATH, nextState);
+ tile.setLabel(getResources().getStringArray(R.array.spectrum_profiles)[nextState]);
+
+ tile.updateTile();
+ super.onClick();
+ }
+}
diff --git a/XiaomiParts/src/org/lineageos/settings/device/kcal/KCalSettings.java b/XiaomiParts/src/org/lineageos/settings/device/kcal/KCalSettings.java
new file mode 100644
index 00000000..30ffc578
--- /dev/null
+++ b/XiaomiParts/src/org/lineageos/settings/device/kcal/KCalSettings.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright (C) 2018 The Xiaomi-SDM660 Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package org.lineageos.settings.device.kcal;
+
+import android.os.Bundle;
+import android.provider.Settings;
+import android.support.v14.preference.PreferenceFragment;
+import android.support.v7.preference.Preference;
+
+import org.lineageos.settings.device.FileUtils;
+import org.lineageos.settings.device.R;
+import org.lineageos.settings.device.preferences.SecureSettingCustomSeekBarPreference;
+import org.lineageos.settings.device.preferences.SecureSettingSwitchPreference;
+
+public class KCalSettings extends PreferenceFragment implements
+ Preference.OnPreferenceChangeListener, Utils {
+
+ private SecureSettingSwitchPreference mEnabled;
+ private SecureSettingSwitchPreference mSetOnBoot;
+ private SecureSettingCustomSeekBarPreference mRed;
+ private SecureSettingCustomSeekBarPreference mGreen;
+ private SecureSettingCustomSeekBarPreference mBlue;
+ private SecureSettingCustomSeekBarPreference mSaturation;
+ private SecureSettingCustomSeekBarPreference mValue;
+ private SecureSettingCustomSeekBarPreference mContrast;
+ private SecureSettingCustomSeekBarPreference mHue;
+ private SecureSettingCustomSeekBarPreference mMin;
+ private SecureSettingSwitchPreference mGrayscale;
+
+ @Override
+ public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+ getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
+ }
+
+ @Override
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ setPreferencesFromResource(R.xml.preferences_kcal, rootKey);
+
+ boolean enabled = Settings.Secure.getInt(getContext().getContentResolver(), PREF_ENABLED,
+ 0) == 1;
+
+ mEnabled = (SecureSettingSwitchPreference) findPreference(PREF_ENABLED);
+ mEnabled.setOnPreferenceChangeListener(this);
+ mEnabled.setTitle(enabled ? R.string.kcal_enabled : R.string.kcal_disabled);
+
+ mSetOnBoot = (SecureSettingSwitchPreference) findPreference(PREF_SETONBOOT);
+ mSetOnBoot.setOnPreferenceChangeListener(this);
+
+ mMin = (SecureSettingCustomSeekBarPreference) findPreference(PREF_MINIMUM);
+ mMin.setOnPreferenceChangeListener(this);
+
+ mRed = (SecureSettingCustomSeekBarPreference) findPreference(PREF_RED);
+ mRed.setOnPreferenceChangeListener(this);
+
+ mGreen = (SecureSettingCustomSeekBarPreference) findPreference(PREF_GREEN);
+ mGreen.setOnPreferenceChangeListener(this);
+
+ mBlue = (SecureSettingCustomSeekBarPreference) findPreference(PREF_BLUE);
+ mBlue.setOnPreferenceChangeListener(this);
+
+ mSaturation = (SecureSettingCustomSeekBarPreference) findPreference(PREF_SATURATION);
+ mSaturation.setEnabled((Settings.Secure.getInt(getContext().getContentResolver(),
+ PREF_GRAYSCALE, 0) == 0));
+ mSaturation.setOnPreferenceChangeListener(this);
+
+ mValue = (SecureSettingCustomSeekBarPreference) findPreference(PREF_VALUE);
+ mValue.setOnPreferenceChangeListener(this);
+
+ mContrast = (SecureSettingCustomSeekBarPreference) findPreference(PREF_CONTRAST);
+ mContrast.setOnPreferenceChangeListener(this);
+
+ mHue = (SecureSettingCustomSeekBarPreference) findPreference(PREF_HUE);
+ mHue.setOnPreferenceChangeListener(this);
+
+ mGrayscale = (SecureSettingSwitchPreference) findPreference(PREF_GRAYSCALE);
+ mGrayscale.setOnPreferenceChangeListener(this);
+ }
+
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object value) {
+ final String key = preference.getKey();
+
+ String rgbString;
+
+ switch (key) {
+ case PREF_ENABLED:
+ FileUtils.setValue(KCAL_ENABLE, (boolean) value);
+ mEnabled.setTitle((boolean) value ? R.string.kcal_enabled : R.string.kcal_disabled);
+ break;
+
+ case PREF_MINIMUM:
+ FileUtils.setValue(KCAL_MIN, (int) value);
+ break;
+
+ case PREF_RED:
+ rgbString = value + " " + mGreen.getValue() + " " + mBlue.getValue();
+ FileUtils.setValue(KCAL_RGB, rgbString);
+ break;
+
+ case PREF_GREEN:
+ rgbString = mRed.getValue() + " " + value + " " + mBlue.getValue();
+ FileUtils.setValue(KCAL_RGB, rgbString);
+ break;
+
+ case PREF_BLUE:
+ rgbString = mRed.getValue() + " " + mGreen.getValue() + " " + value;
+ FileUtils.setValue(KCAL_RGB, rgbString);
+ break;
+
+ case PREF_SATURATION:
+ if (!(Settings.Secure.getInt(getContext().getContentResolver(), PREF_GRAYSCALE, 0) == 1)) {
+ FileUtils.setValue(KCAL_SAT, (int) value + SATURATION_OFFSET);
+ }
+ break;
+
+ case PREF_VALUE:
+ FileUtils.setValue(KCAL_VAL, (int) value + VALUE_OFFSET);
+ break;
+
+ case PREF_CONTRAST:
+ FileUtils.setValue(KCAL_CONT, (int) value + CONTRAST_OFFSET);
+ break;
+
+ case PREF_HUE:
+ FileUtils.setValue(KCAL_HUE, (int) value);
+ break;
+
+ case PREF_GRAYSCALE:
+ setmGrayscale((boolean) value);
+ break;
+
+ default:
+ break;
+ }
+ return true;
+ }
+
+ void applyValues(String preset) {
+ String[] values = preset.split(" ");
+ int red = Integer.parseInt(values[0]);
+ int green = Integer.parseInt(values[1]);
+ int blue = Integer.parseInt(values[2]);
+ int min = Integer.parseInt(values[3]);
+ int sat = Integer.parseInt(values[4]);
+ int value = Integer.parseInt(values[5]);
+ int contrast = Integer.parseInt(values[6]);
+ int hue = Integer.parseInt(values[7]);
+
+ mRed.refresh(red);
+ mGreen.refresh(green);
+ mBlue.refresh(blue);
+ mMin.refresh(min);
+ mSaturation.refresh(sat);
+ mValue.refresh(value);
+ mContrast.refresh(contrast);
+ mHue.refresh(hue);
+ }
+
+ void setmSetOnBoot(boolean checked) {
+ mSetOnBoot.setChecked(checked);
+ }
+
+ void setmGrayscale(boolean checked) {
+ mGrayscale.setChecked(checked);
+ mSaturation.setEnabled(!checked);
+ FileUtils.setValue(KCAL_SAT, checked ? 128 :
+ Settings.Secure.getInt(getContext().getContentResolver(), PREF_SATURATION,
+ SATURATION_DEFAULT) + SATURATION_OFFSET);
+ }
+}
+
diff --git a/XiaomiParts/src/org/lineageos/settings/device/kcal/KCalSettingsActivity.java b/XiaomiParts/src/org/lineageos/settings/device/kcal/KCalSettingsActivity.java
new file mode 100644
index 00000000..b770c944
--- /dev/null
+++ b/XiaomiParts/src/org/lineageos/settings/device/kcal/KCalSettingsActivity.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2018 The Xiaomi-SDM660 Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package org.lineageos.settings.device.kcal;
+
+import android.app.Activity;
+import android.app.Fragment;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+
+import org.lineageos.settings.device.R;
+
+public class KCalSettingsActivity extends Activity implements Utils {
+
+ private KCalSettings mKCalSettingsFragment;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ Fragment fragment = getFragmentManager().findFragmentById(android.R.id.content);
+ if (fragment == null) {
+ mKCalSettingsFragment = new KCalSettings();
+ getFragmentManager().beginTransaction()
+ .add(android.R.id.content, mKCalSettingsFragment)
+ .commit();
+ } else {
+ mKCalSettingsFragment = (KCalSettings) fragment;
+ }
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ finish();
+ return true;
+
+ case R.id.action_reset:
+ mKCalSettingsFragment.applyValues(RED_DEFAULT + " " +
+ GREEN_DEFAULT + " " +
+ BLUE_DEFAULT + " " +
+ MINIMUM_DEFAULT + " " +
+ SATURATION_DEFAULT + " " +
+ VALUE_DEFAULT + " " +
+ CONTRAST_DEFAULT + " " +
+ HUE_DEFAULT);
+ mKCalSettingsFragment.setmGrayscale(GRAYSCALE_DEFAULT);
+ mKCalSettingsFragment.setmSetOnBoot(SETONBOOT_DEFAULT);
+ return true;
+
+ case R.id.action_preset:
+ new PresetDialog().show(getFragmentManager(),
+ KCalSettingsActivity.class.getName(), mKCalSettingsFragment);
+ return true;
+
+ default:
+ break;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ MenuInflater menuInflater = getMenuInflater();
+ menuInflater.inflate(R.menu.menu_reset, menu);
+ return true;
+ }
+}
diff --git a/XiaomiParts/src/org/lineageos/settings/device/kcal/PresetDialog.java b/XiaomiParts/src/org/lineageos/settings/device/kcal/PresetDialog.java
new file mode 100644
index 00000000..c1a52714
--- /dev/null
+++ b/XiaomiParts/src/org/lineageos/settings/device/kcal/PresetDialog.java
@@ -0,0 +1,67 @@
+package org.lineageos.settings.device.kcal;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
+import android.app.FragmentManager;
+import android.content.DialogInterface;
+import android.os.Bundle;
+
+import org.lineageos.settings.device.R;
+
+public class PresetDialog extends DialogFragment {
+ private CharSequence[] mEntries;
+ private CharSequence[] mEntryValues;
+ private String mValue;
+ private KCalSettings mKCalSettingsFragment;
+ private int mClickedDialogEntryIndex;
+ private final DialogInterface.OnClickListener selectItemListener =
+ new DialogInterface.OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ if (mClickedDialogEntryIndex != which) {
+ mValue = mEntryValues[which].toString();
+ mKCalSettingsFragment.applyValues(mValue);
+ mClickedDialogEntryIndex = which;
+ }
+ dialog.dismiss();
+ }
+ };
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ mEntries = getResources().getStringArray(R.array.preset_enteries);
+ mEntryValues = getResources().getStringArray(R.array.preset_values);
+ }
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity());
+ dialog.setTitle(getString(R.string.presets_dialog_title));
+ mClickedDialogEntryIndex = getValueIndex();
+ dialog.setItems(mEntries, selectItemListener);
+ return dialog.create();
+ }
+
+ private int getValueIndex() {
+ return findIndexOfValue(mValue);
+ }
+
+ private int findIndexOfValue(String value) {
+ if (value != null && mEntryValues != null) {
+ for (int i = mEntryValues.length - 1; i >= 0; i--) {
+ if (mEntryValues[i].equals(value)) {
+ return i;
+ }
+ }
+ }
+ return -1;
+ }
+
+ public void show(FragmentManager manager, String tag, KCalSettings mKCalSettingsFragment) {
+ super.show(manager, tag);
+ this.mKCalSettingsFragment = mKCalSettingsFragment;
+ }
+}
diff --git a/XiaomiParts/src/org/lineageos/settings/device/kcal/Utils.java b/XiaomiParts/src/org/lineageos/settings/device/kcal/Utils.java
new file mode 100644
index 00000000..e84bc174
--- /dev/null
+++ b/XiaomiParts/src/org/lineageos/settings/device/kcal/Utils.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2018 The Xiaomi-SDM660 Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package org.lineageos.settings.device.kcal;
+
+public interface Utils {
+ String PREF_ENABLED = "kcal_enabled";
+ String PREF_SETONBOOT = "set_on_boot";
+ String PREF_MINIMUM = "color_minimum";
+ String PREF_RED = "color_red";
+ String PREF_GREEN = "color_green";
+ String PREF_BLUE = "color_blue";
+ String PREF_SATURATION = "saturation";
+ String PREF_VALUE = "value";
+ String PREF_CONTRAST = "contrast";
+ String PREF_HUE = "hue";
+ String PREF_GRAYSCALE = "grayscale";
+
+ boolean SETONBOOT_DEFAULT = false;
+ int MINIMUM_DEFAULT = 35;
+ int RED_DEFAULT = 255;
+ int GREEN_DEFAULT = 255;
+ int BLUE_DEFAULT = 255;
+ int SATURATION_DEFAULT = 35;
+ int SATURATION_OFFSET = 225;
+ int VALUE_DEFAULT = 127;
+ int VALUE_OFFSET = 128;
+ int CONTRAST_DEFAULT = 127;
+ int CONTRAST_OFFSET = 128;
+ int HUE_DEFAULT = 0;
+ boolean GRAYSCALE_DEFAULT = false;
+
+ String KCAL_ENABLE = "/sys/devices/platform/kcal_ctrl.0/kcal_enable";
+ String KCAL_CONT = "/sys/devices/platform/kcal_ctrl.0/kcal_cont";
+ String KCAL_HUE = "/sys/devices/platform/kcal_ctrl.0/kcal_hue";
+ String KCAL_MIN = "/sys/devices/platform/kcal_ctrl.0/kcal_min";
+ String KCAL_RGB = "/sys/devices/platform/kcal_ctrl.0/kcal";
+ String KCAL_SAT = "/sys/devices/platform/kcal_ctrl.0/kcal_sat";
+ String KCAL_VAL = "/sys/devices/platform/kcal_ctrl.0/kcal_val";
+}
diff --git a/XiaomiParts/src/org/lineageos/settings/device/preferences/CustomSeekBarPreference.java b/XiaomiParts/src/org/lineageos/settings/device/preferences/CustomSeekBarPreference.java
new file mode 100644
index 00000000..39525f71
--- /dev/null
+++ b/XiaomiParts/src/org/lineageos/settings/device/preferences/CustomSeekBarPreference.java
@@ -0,0 +1,313 @@
+/*
+ * Copyright (C) 2016 The Dirty Unicorns Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package org.lineageos.settings.device.preferences;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceViewHolder;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.ViewParent;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+import android.widget.SeekBar;
+import android.widget.TextView;
+
+import org.lineageos.settings.device.R;
+
+public class CustomSeekBarPreference extends Preference implements SeekBar.OnSeekBarChangeListener {
+ private static final String APP_NS = "http://schemas.android.com/apk/res-auto";
+ private static final String ANDROIDNS = "http://schemas.android.com/apk/res/android";
+ private static final int DEFAULT_VALUE = 50;
+ private final String TAG = getClass().getName();
+ private final SeekBar mSeekBar;
+ private int mMin;
+ private int mInterval = 1;
+ private int mCurrentValue;
+ private int mDefaultValue;
+ private int mMax;
+ private String mUnits;
+ private String mDefaultText;
+ private TextView mTitle;
+ private TextView mStatusText;
+ private AlertDialog mDialog;
+ private EditText mEdit;
+
+ public CustomSeekBarPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CustomSeekBarPreference);
+
+ mMax = attrs.getAttributeIntValue(ANDROIDNS, "max", 100);
+ mMin = attrs.getAttributeIntValue(APP_NS, "min", 0);
+ mDefaultValue = attrs.getAttributeIntValue(ANDROIDNS, "defaultValue", -1);
+ if (mDefaultValue > mMax) {
+ mDefaultValue = mMax;
+ }
+ mUnits = getAttributeStringValue(attrs, APP_NS, "units", "");
+ mDefaultText = getAttributeStringValue(attrs, APP_NS, "defaultText",
+ Integer.toString(mDefaultValue));
+
+ int id = a.getResourceId(R.styleable.CustomSeekBarPreference_units, 0);
+ if (id > 0) {
+ mUnits = context.getResources().getString(id);
+ }
+ id = a.getResourceId(R.styleable.CustomSeekBarPreference_defaultText, 0);
+ if (id > 0) {
+ mDefaultText = context.getResources().getString(id);
+ }
+
+ try {
+ String newInterval = attrs.getAttributeValue(APP_NS, "interval");
+ if (newInterval != null)
+ mInterval = Integer.parseInt(newInterval);
+ } catch (Exception e) {
+ Log.e(TAG, "Invalid interval value", e);
+ }
+
+ a.recycle();
+ mSeekBar = new SeekBar(context, attrs);
+ mSeekBar.setMax(mMax - mMin);
+ mSeekBar.setOnSeekBarChangeListener(this);
+ setLayoutResource(R.layout.preference_custom_seekbar);
+ }
+
+ public CustomSeekBarPreference(Context context, AttributeSet attrs, int defStyleAttr) {
+ this(context, attrs, defStyleAttr, 0);
+ }
+
+ public CustomSeekBarPreference(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public CustomSeekBarPreference(Context context) {
+ this(context, null);
+ }
+
+ private String getAttributeStringValue(AttributeSet attrs, String namespace, String name, String defaultValue) {
+ String value = attrs.getAttributeValue(namespace, name);
+ if (value == null)
+ value = defaultValue;
+
+ return value;
+ }
+
+ @Override
+ public void onDependencyChanged(Preference dependency, boolean disableDependent) {
+ super.onDependencyChanged(dependency, disableDependent);
+ this.setShouldDisableView(true);
+ if (mTitle != null)
+ mTitle.setEnabled(!disableDependent);
+ if (mSeekBar != null)
+ mSeekBar.setEnabled(!disableDependent);
+ if (mStatusText != null)
+ mStatusText.setEnabled(!disableDependent);
+ }
+
+ @Override
+ public void onBindViewHolder(PreferenceViewHolder view) {
+ super.onBindViewHolder(view);
+ try {
+ // move our seekbar to the new view we've been given
+ ViewParent oldContainer = mSeekBar.getParent();
+ ViewGroup newContainer = (ViewGroup) view.findViewById(R.id.seekBarPrefBarContainer);
+
+ if (oldContainer != newContainer) {
+ // remove the seekbar from the old view
+ if (oldContainer != null) {
+ ((ViewGroup) oldContainer).removeView(mSeekBar);
+ }
+ // remove the existing seekbar (there may not be one) and add ours
+ newContainer.removeAllViews();
+ newContainer.addView(mSeekBar, ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+ }
+ } catch (Exception ex) {
+ Log.e(TAG, "Error binding view: " + ex.toString());
+ }
+ mStatusText = (TextView) view.findViewById(R.id.seekBarPrefValue);
+ if (mCurrentValue == mDefaultValue) {
+ mStatusText.setText(mDefaultText);
+ } else {
+ mStatusText.setText(mCurrentValue + mUnits);
+ }
+ mSeekBar.setProgress(mCurrentValue - mMin);
+ LinearLayout statusTextContainer = (LinearLayout) view.findViewById(R.id.text_container);
+ statusTextContainer.setClickable(true);
+ statusTextContainer.setOnClickListener((View v) -> {
+ mDialog = new AlertDialog.Builder(getContext())
+ .setTitle(getContext().getResources().getString(R.string.edit_value))
+ .setView(R.layout.custom_seekbar_preference_dialog)
+ .setNegativeButton(android.R.string.cancel, (dialog, which) -> mDialog = null)
+ .setNeutralButton(R.string.default_value, (dialog, which) -> {
+ refresh(mDefaultValue);
+ mDialog = null;
+ })
+ .setPositiveButton(android.R.string.ok, (dialog, which) -> {
+ if (mEdit != null) {
+ try {
+ if (Integer.parseInt(mEdit.getText().toString()) >= mMin && Integer.parseInt(mEdit.getText().toString()) <= mMax) {
+ refresh(Integer.parseInt(mEdit.getText().toString()));
+ }
+ } catch (NumberFormatException e) {
+ // Prevent crashes and ignore invalid input
+ }
+ }
+ mDialog = null;
+ })
+ .show();
+ mEdit = mDialog.findViewById(R.id.edit);
+ mEdit.addTextChangedListener(new TextWatcher() {
+ @Override
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+ }
+
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ }
+
+ @Override
+ public void afterTextChanged(Editable s) {
+ try {
+ if (Integer.parseInt(s.toString()) > mMax) {
+ s.replace(0, s.length(), String.valueOf(mMax));
+ } else if (Integer.parseInt(s.toString()) < mMin) {
+ s.replace(0, s.length(), String.valueOf(mMin));
+ }
+ } catch (NumberFormatException e) {
+ // Prevent crashes and ignore invalid input
+ }
+ }
+ });
+ mEdit.setHint(getContext().getResources().getString(R.string.edit_hint, mMin, mMax));
+ mEdit.setText(String.valueOf(mCurrentValue));
+ });
+
+ mTitle = (TextView) view.findViewById(android.R.id.title);
+ view.setDividerAllowedAbove(false);
+
+ mSeekBar.setEnabled(isEnabled());
+ }
+
+ public void setMax(int max) {
+ mMax = max;
+ mSeekBar.setMax(mMax - mMin);
+ }
+
+ public void setMin(int min) {
+ mMin = min;
+ mSeekBar.setMax(mMax - mMin);
+ }
+
+ public void setIntervalValue(int value) {
+ mInterval = value;
+ }
+
+ public String getValue() {
+ return Integer.toString(mCurrentValue);
+ }
+
+ public void setValue(int value) {
+ mCurrentValue = value;
+ }
+
+ @Override
+ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+ int newValue = progress + mMin;
+ if (newValue > mMax)
+ newValue = mMax;
+ else if (newValue < mMin)
+ newValue = mMin;
+ else if (mInterval != 1 && newValue % mInterval != 0)
+ newValue = Math.round(((float) newValue) / mInterval) * mInterval;
+
+ // change rejected, revert to the previous value
+ if (!callChangeListener(newValue)) {
+ seekBar.setProgress(mCurrentValue - mMin);
+ return;
+ }
+ // change accepted, store it
+ mCurrentValue = newValue;
+ if (mStatusText != null) {
+ if (newValue == mDefaultValue) {
+ mStatusText.setText(mDefaultText);
+ } else {
+ mStatusText.setText(newValue + mUnits);
+ }
+ }
+ persistInt(newValue);
+ }
+
+ public void refresh(int newValue) {
+ // this will trigger onProgressChanged and refresh everything
+ mSeekBar.setProgress(newValue - mMin);
+ }
+
+ @Override
+ public void onStartTrackingTouch(SeekBar seekBar) {
+ }
+
+ @Override
+ public void onStopTrackingTouch(SeekBar seekBar) {
+ notifyChanged();
+ }
+
+ @Override
+ protected Object onGetDefaultValue(TypedArray ta, int index) {
+ return ta.getInt(index, DEFAULT_VALUE);
+ }
+
+ @Override
+ protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
+ if (restoreValue) {
+ mCurrentValue = getPersistedInt(mDefaultValue);
+ } else {
+ int temp = 0;
+ try {
+ temp = (Integer) defaultValue;
+ } catch (Exception ex) {
+ Log.e(TAG, "Invalid default value: " + defaultValue.toString());
+ }
+ persistInt(temp);
+ mCurrentValue = temp;
+ }
+ }
+
+ public void setDefaultValue(int value) {
+ mDefaultValue = value;
+ if (mDefaultValue > mMax) {
+ mDefaultValue = mMax;
+ }
+ if (mCurrentValue == mDefaultValue && mStatusText != null) {
+ mStatusText.setText(mDefaultText);
+ }
+ }
+
+ @Override
+ public void setEnabled(boolean enabled) {
+ if (mSeekBar != null && mStatusText != null && mTitle != null) {
+ mSeekBar.setEnabled(enabled);
+ mStatusText.setEnabled(enabled);
+ mTitle.setEnabled(enabled);
+ }
+ super.setEnabled(enabled);
+ }
+}
diff --git a/XiaomiParts/src/org/lineageos/settings/device/preferences/SecureSettingCustomSeekBarPreference.java b/XiaomiParts/src/org/lineageos/settings/device/preferences/SecureSettingCustomSeekBarPreference.java
new file mode 100644
index 00000000..a77871b1
--- /dev/null
+++ b/XiaomiParts/src/org/lineageos/settings/device/preferences/SecureSettingCustomSeekBarPreference.java
@@ -0,0 +1,27 @@
+package org.lineageos.settings.device.preferences;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+public class SecureSettingCustomSeekBarPreference extends CustomSeekBarPreference {
+
+ public SecureSettingCustomSeekBarPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ setPreferenceDataStore(new SecureSettingsStore(context.getContentResolver()));
+ }
+
+ public SecureSettingCustomSeekBarPreference(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ setPreferenceDataStore(new SecureSettingsStore(context.getContentResolver()));
+ }
+
+ public SecureSettingCustomSeekBarPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ setPreferenceDataStore(new SecureSettingsStore(context.getContentResolver()));
+ }
+
+ public SecureSettingCustomSeekBarPreference(Context context) {
+ super(context);
+ setPreferenceDataStore(new SecureSettingsStore(context.getContentResolver()));
+ }
+}
diff --git a/XiaomiParts/src/org/lineageos/settings/device/preferences/SecureSettingListPreference.java b/XiaomiParts/src/org/lineageos/settings/device/preferences/SecureSettingListPreference.java
new file mode 100644
index 00000000..0b56af78
--- /dev/null
+++ b/XiaomiParts/src/org/lineageos/settings/device/preferences/SecureSettingListPreference.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2017 AICP
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.lineageos.settings.device.preferences;
+
+import android.content.Context;
+import android.support.v7.preference.ListPreference;
+import android.text.TextUtils;
+import android.util.AttributeSet;
+
+public class SecureSettingListPreference extends ListPreference {
+ private boolean mAutoSummary = false;
+
+ public SecureSettingListPreference(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ setPreferenceDataStore(new SecureSettingsStore(context.getContentResolver()));
+ }
+
+ public SecureSettingListPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ setPreferenceDataStore(new SecureSettingsStore(context.getContentResolver()));
+ }
+
+ public SecureSettingListPreference(Context context) {
+ super(context);
+ setPreferenceDataStore(new SecureSettingsStore(context.getContentResolver()));
+ }
+
+ @Override
+ public void setValue(String value) {
+ super.setValue(value);
+ if (mAutoSummary || TextUtils.isEmpty(getSummary())) {
+ setSummary(getEntry(), true);
+ }
+ }
+
+ @Override
+ public void setSummary(CharSequence summary) {
+ setSummary(summary, false);
+ }
+
+ private void setSummary(CharSequence summary, boolean autoSummary) {
+ mAutoSummary = autoSummary;
+ super.setSummary(summary);
+ }
+
+ @Override
+ protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
+ // This is what default ListPreference implementation is doing without respecting
+ // real default value:
+ //setValue(restoreValue ? getPersistedString(mValue) : (String) defaultValue);
+ // Instead, we better do
+ setValue(restoreValue ? getPersistedString((String) defaultValue) : (String) defaultValue);
+ }
+
+}
diff --git a/XiaomiParts/src/org/lineageos/settings/device/preferences/SecureSettingSwitchPreference.java b/XiaomiParts/src/org/lineageos/settings/device/preferences/SecureSettingSwitchPreference.java
new file mode 100644
index 00000000..c2cbfe9c
--- /dev/null
+++ b/XiaomiParts/src/org/lineageos/settings/device/preferences/SecureSettingSwitchPreference.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2014 The CyanogenMod project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.lineageos.settings.device.preferences;
+
+import android.content.Context;
+import android.provider.Settings;
+import android.support.v14.preference.SwitchPreference;
+import android.util.AttributeSet;
+
+public class SecureSettingSwitchPreference extends SwitchPreference {
+ public SecureSettingSwitchPreference(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ setPreferenceDataStore(new SecureSettingsStore(context.getContentResolver()));
+ }
+
+ public SecureSettingSwitchPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ setPreferenceDataStore(new SecureSettingsStore(context.getContentResolver()));
+ }
+
+ public SecureSettingSwitchPreference(Context context) {
+ super(context);
+ setPreferenceDataStore(new SecureSettingsStore(context.getContentResolver()));
+ }
+
+ @Override
+ protected boolean persistBoolean(boolean value) {
+ if (shouldPersist()) {
+ if (value == getPersistedBoolean(!value)) {
+ // It's already there, so the same as persisting
+ return true;
+ }
+ Settings.Secure.putInt(getContext().getContentResolver(), getKey(), value ? 1 : 0);
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ protected boolean getPersistedBoolean(boolean defaultReturnValue) {
+ if (!shouldPersist()) {
+ return defaultReturnValue;
+ }
+ return Settings.Secure.getInt(getContext().getContentResolver(),
+ getKey(), defaultReturnValue ? 1 : 0) != 0;
+ }
+
+ @Override
+ protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {
+ setChecked(Settings.Secure.getString(getContext().getContentResolver(), getKey()) != null ? getPersistedBoolean(isChecked())
+ : (Boolean) defaultValue);
+ }
+}
diff --git a/XiaomiParts/src/org/lineageos/settings/device/preferences/SecureSettingsStore.java b/XiaomiParts/src/org/lineageos/settings/device/preferences/SecureSettingsStore.java
new file mode 100644
index 00000000..5ad448ab
--- /dev/null
+++ b/XiaomiParts/src/org/lineageos/settings/device/preferences/SecureSettingsStore.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2017 AICP
+ * Copyright (C) 2018 CarbonROM
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.lineageos.settings.device.preferences;
+
+import android.content.ContentResolver;
+import android.preference.PreferenceDataStore;
+import android.provider.Settings;
+
+public class SecureSettingsStore extends android.support.v7.preference.PreferenceDataStore
+ implements PreferenceDataStore {
+
+ private final ContentResolver mContentResolver;
+
+ public SecureSettingsStore(ContentResolver contentResolver) {
+ mContentResolver = contentResolver;
+ }
+
+ public boolean getBoolean(String key, boolean defValue) {
+ return getInt(key, defValue ? 1 : 0) != 0;
+ }
+
+ public float getFloat(String key, float defValue) {
+ return Settings.Secure.getFloat(mContentResolver, key, defValue);
+ }
+
+ public int getInt(String key, int defValue) {
+ return Settings.Secure.getInt(mContentResolver, key, defValue);
+ }
+
+ public long getLong(String key, long defValue) {
+ return Settings.Secure.getLong(mContentResolver, key, defValue);
+ }
+
+ public String getString(String key, String defValue) {
+ String result = Settings.Secure.getString(mContentResolver, key);
+ return result == null ? defValue : result;
+ }
+
+ public void putBoolean(String key, boolean value) {
+ putInt(key, value ? 1 : 0);
+ }
+
+ public void putFloat(String key, float value) {
+ Settings.Secure.putFloat(mContentResolver, key, value);
+ }
+
+ public void putInt(String key, int value) {
+ Settings.Secure.putInt(mContentResolver, key, value);
+ }
+
+ public void putLong(String key, long value) {
+ Settings.Secure.putLong(mContentResolver, key, value);
+ }
+
+ public void putString(String key, String value) {
+ Settings.Secure.putString(mContentResolver, key, value);
+ }
+
+}
diff --git a/XiaomiParts/src/org/lineageos/settings/device/preferences/VibrationSeekBarPreference.java b/XiaomiParts/src/org/lineageos/settings/device/preferences/VibrationSeekBarPreference.java
new file mode 100644
index 00000000..94c85a1c
--- /dev/null
+++ b/XiaomiParts/src/org/lineageos/settings/device/preferences/VibrationSeekBarPreference.java
@@ -0,0 +1,41 @@
+package org.lineageos.settings.device.preferences;
+
+import android.content.Context;
+import android.os.VibrationEffect;
+import android.os.Vibrator;
+import android.util.AttributeSet;
+import android.widget.SeekBar;
+
+public class VibrationSeekBarPreference extends SecureSettingCustomSeekBarPreference {
+
+ private final Vibrator mVibrator;
+
+ public VibrationSeekBarPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ mVibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
+ }
+
+ public VibrationSeekBarPreference(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ mVibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
+ }
+
+ public VibrationSeekBarPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ mVibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
+ }
+
+ public VibrationSeekBarPreference(Context context) {
+ super(context);
+ mVibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
+ }
+
+ @Override
+ public void onStopTrackingTouch(SeekBar seekBar) {
+ notifyChanged();
+ if (mVibrator.hasVibrator()) {
+ mVibrator.vibrate(VibrationEffect.createOneShot(15, VibrationEffect.DEFAULT_AMPLITUDE));
+ }
+ }
+
+}
diff --git a/sdm660.mk b/sdm660.mk
index 66ce177a..ea83270b 100644
--- a/sdm660.mk
+++ b/sdm660.mk
@@ -443,3 +443,7 @@ PRODUCT_PACKAGES += \
PRODUCT_BOOT_JARS += \
WfdCommon
+
+# XiaomiParts
+PRODUCT_PACKAGES += \
+ XiaomiParts