LSPosed module: Miracast Enabler v2.0.0
Rewrite from KernelSU shell scripts to LSPosed/Xposed module. Hooks Android's hidden Wi-Fi Display framework to enable native Miracast. - FrameworkResourceHook: force config_enableWifiDisplay = true - SystemServerHook: grant WFD permissions, force wifi_display feature - DisplayManagerHook: ensure WifiDisplayAdapter initializes, force FEATURE_STATE_ON - MediaRouterHook: unhide WFD routes in Settings Cast UI - MiracastTileService: Quick Settings tile for scan/connect/disconnect - SettingsActivity: resolution, HDCP, display source, GPU composition - WfdManager: reflection wrapper for hidden DisplayManager WFD APIs
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
package com.miracast.enabler.ui;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.preference.ListPreference;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceCategory;
|
||||
import androidx.preference.PreferenceFragmentCompat;
|
||||
import androidx.preference.PreferenceManager;
|
||||
|
||||
import com.miracast.enabler.R;
|
||||
|
||||
public class SettingsActivity extends AppCompatActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
if (savedInstanceState == null) {
|
||||
getSupportFragmentManager()
|
||||
.beginTransaction()
|
||||
.replace(android.R.id.content, new SettingsFragment())
|
||||
.commit();
|
||||
}
|
||||
}
|
||||
|
||||
public static class SettingsFragment extends PreferenceFragmentCompat {
|
||||
|
||||
@Override
|
||||
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
||||
// World-readable so XSharedPreferences can read from hook processes
|
||||
getPreferenceManager().setSharedPreferencesMode(Context.MODE_WORLD_READABLE);
|
||||
setPreferencesFromResource(R.xml.preferences, rootKey);
|
||||
|
||||
setupDisplaySource();
|
||||
setupDeviceInfo();
|
||||
}
|
||||
|
||||
private void setupDisplaySource() {
|
||||
// Only show display source option on foldable devices
|
||||
PreferenceCategory displayCategory = findPreference("display_category");
|
||||
if (displayCategory == null) return;
|
||||
|
||||
String device = Build.DEVICE;
|
||||
boolean isFoldable = "rango".equals(device)
|
||||
|| "comet".equals(device)
|
||||
|| "cometl".equals(device)
|
||||
|| "felix".equals(device);
|
||||
|
||||
if (!isFoldable) {
|
||||
getPreferenceScreen().removePreference(displayCategory);
|
||||
}
|
||||
}
|
||||
|
||||
private void setupDeviceInfo() {
|
||||
Preference devicePref = findPreference("status_device");
|
||||
if (devicePref != null) {
|
||||
String info = Build.MODEL + " (" + Build.DEVICE + ")"
|
||||
+ "\nAndroid " + Build.VERSION.RELEASE
|
||||
+ " (API " + Build.VERSION.SDK_INT + ")"
|
||||
+ "\nSoC: " + Build.SOC_MODEL;
|
||||
devicePref.setSummary(info);
|
||||
}
|
||||
|
||||
Preference hookPref = findPreference("status_hooks");
|
||||
if (hookPref != null) {
|
||||
hookPref.setSummary("Reboot after enabling module in LSPosed");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user