Sejak hadirnya Mi Note 3 yang memiliki fitur Face Unlock, hal itu membuat beberapa opreker penasaran, bagaimana sih cara menambahkan fitur face unlock ini pada perangkat mereka. Disini saya akan buat tutorialnya.
TIDAK DAPAT DITERAPKAN DI ROM MIUI GLOBAL DEV MULAI DARI VERSI 7.12.28.
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/miuistatssdkshared.jar", zip file "/system/framework/gson.jar", zip file "/system/priv-app/MiuiKeyguard/MiuiKeyguard.apk"],nativeLibraryDirectories=[/system/priv-app/MiuiKeyguard/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "libMegviiUnlock-jni-1.2.so"
Syarat:
Bahan:
- lib-face-unlock -> Download
- raw-MiuiKeyguard -> Download
- MiuiSettings.apk (Ambil dari system/priv-app)
- MiuiKeyguard.apk (Ambil dari system/priv-app)
Langkah-langkah:
Decompile MiuiSettings.apk
Cari text "jason" di seluruh smali yag ada di "\smali\com\android\settings"
Di ROM Global Dev 7.11.6 letaknya ada di "\smali\com\android\settings\fj.1.smali"
Di dalam method yang ada string "jason" tadi, cari:
Tambahkan ini diatasnya:
Hingga hasilnya akan seperti ini:
.method public static fF()Z
.locals 2
.prologue
.line 57
sget-object v0, Landroid/os/Build;->DEVICE:Ljava/lang/String;
const-string v1, "jason"
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_0
sget-boolean v0, Lmiui/os/Build;->IS_INTERNATIONAL_BUILD:Z
if-nez v0, :cond_0
const/4 v0, 0x1
:goto_0
const/4 v0, 0x1
return v0
:cond_0
const/4 v0, 0x0
goto :goto_0
.end method
Recompile Settings.apk
Decompile MiuiKeyguard.apk
Salin file raw ke folder res, timpa file yang sudah ada.
Buka AndroidManifest.xml
Cari:
Tambahkan text ini diatasnya:
<activity android:excludeFromRecents="true" android:label="@string/face_data_input_title" android:name=".settings.MiuiFaceDataIntroduction" android:screenOrientation="portrait" android:theme="@style/Theme.Main"/>
<activity android:excludeFromRecents="true" android:label="@string/face_data_input_title" android:name=".settings.MiuiFaceDataSuggestion" android:screenOrientation="portrait" android:theme="@style/Theme.Main"/>
<activity android:excludeFromRecents="true" android:label="@string/face_data_input_title" android:name=".settings.MiuiFaceDataInput" android:screenOrientation="portrait" android:theme="@style/Theme.Main"/>
<activity android:excludeFromRecents="true" android:label="@string/face_data_introduction_title" android:name=".settings.MiuiFaceDataManage" android:screenOrientation="portrait" android:theme="@style/Theme.Main"/>
Hingga hasilnya menjadi seperti ini:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:sharedUserId="android.uid.system" coreApp="true" package="com.android.keyguard" platformBuildVersionCode="23" platformBuildVersionName="6.0.1">
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.STATUS_BAR"/>
<uses-permission android:name="android.permission.DEVICE_POWER"/>
<uses-permission android:name="android.permission.MANAGE_USERS"/>
<uses-permission android:name="android.permission.MANAGE_APP_TOKENS"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
<uses-permission android:name="android.permission.BIND_APPWIDGET"/>
<uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW"/>
<uses-permission android:name="android.permission.BIND_DEVICE_ADMIN"/>
<uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"/>
<uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL"/>
<uses-permission android:name="android.permission.ACCESS_KEYGUARD_SECURE_STORAGE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>
<uses-permission android:name="com.fingerprints.service.ACCESS_FINGERPRINT_MANAGER"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="com.miui.powercenter.permission.POWER_DATA"/>
<uses-library android:name="cloud-common.jar"/>
<application android:name="miui.external.Application" android:persistent="true" android:process="com.android.systemui" android:supportsRtl="true">
<uses-library android:name="miui-stat.jar"/>
<uses-library android:name="gson.jar"/>
<meta-data android:name="SupportTrackViewForLockScreenAd" android:value="true"/>
<service android:exported="true" android:name=".KeyguardService"/>
<service android:name="miui.maml.elements.MusicListenerService" android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
<intent-filter>
<action android:name="android.service.notification.MusicListenerService"/>
</intent-filter>
</service>
<activity android:excludeFromRecents="true" android:label="@string/face_data_input_title" android:name=".settings.MiuiFaceDataIntroduction" android:screenOrientation="portrait" android:theme="@style/Theme.Main"/>
<activity android:excludeFromRecents="true" android:label="@string/face_data_input_title" android:name=".settings.MiuiFaceDataSuggestion" android:screenOrientation="portrait" android:theme="@style/Theme.Main"/>
<activity android:excludeFromRecents="true" android:label="@string/face_data_input_title" android:name=".settings.MiuiFaceDataInput" android:screenOrientation="portrait" android:theme="@style/Theme.Main"/>
<activity android:excludeFromRecents="true" android:label="@string/face_data_introduction_title" android:name=".settings.MiuiFaceDataManage" android:screenOrientation="portrait" android:theme="@style/Theme.Main"/>
</application>
</manifest>
Buka /smali/com/android/keyguard/MiuiKeyguardUtils.smali
Cari:
.method public static isSupportFaceUnlock()Z
Lalu dalam method tersebut, cari:
Setelah ketemu, tambahkan ini diatasnya:
Hingga hasilnya menjadi seperti ini:
.method public static isSupportFaceUnlock()Z
.locals 2
.prologue
.line 239
sget-object v0, Lmiui/os/Build;->DEVICE:Ljava/lang/String;
const-string v1, "jason"
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_0
sget-boolean v0, Lmiui/os/Build;->IS_INTERNATIONAL_BUILD:Z
if-nez v0, :cond_0
const/4 v0, 0x1
:goto_0
const/4 v0, 0x1
return v0
:cond_0
const/4 v0, 0x0
goto :goto_0
.end method
Recompile MiuiKeyguard.spk
- Salin file lib ke dalam folder /system/lib64/
- Set seluruh permission filenya menjadi rw-r--r-- (0644)
- Salin MiuiSettings.apk dan MiuiKeyguard ke tampatnya masing-masing, set permission file menjadi rw-r--r-- (0644).
- Reboot System
- Selesai.
Cara Penggunaan:
Setelah menambahkan data wajah di Pengaturan -> Kunci layar & sandi -> Kelola data wajah
Coba kunci ponsel kamu, lalu hidupkan layar ponsel, arahkan ke wajah.
File yang sudah di modif (Global Dev 7.11.12):
FaceUnlock-bootloop.id.zip (Isinya: Settings.apk - MiuiKeyguard.apk - lib face unlock)
Screenshot:
Demikianlah artikel ini dibuat, semoga bermanfaat. Apabila ada pertanyan silahkan tinggalkan komentar.
Hasil compare MiuiKeyguard dari ROM Kenzo vs ROM Jason:
Referensi: MIUI Forum | Mi Note 3 ROM | MIUIPRO