深圳英文建站公司,物流网个人网站建设,公司网站模板怎么做,医药公司网站建设备案客户要求系统实现动态hdmi-4K与普通分辨率直接热切换#xff0c;先在菜单中做个试验#xff0c;设置中加个切换开关#xff0c;点击开关就可以直接切到hdmi-4K#xff0c;这个功能实现后可以通过插拔hdmi那个状态#xff08;sys/class/drm/card0-HDMI-A-1/status#xff…客户要求系统实现动态hdmi-4K与普通分辨率直接热切换先在菜单中做个试验设置中加个切换开关点击开关就可以直接切到hdmi-4K这个功能实现后可以通过插拔hdmi那个状态sys/class/drm/card0-HDMI-A-1/status直接实现切换测试代码也很简单方法如下 
Index: packages/apps/Settings/src/com/android/settings/display/HdmiSettings.java--- packages/apps/Settings/src/com/android/settings/display/HdmiSettings.java	(revision 907)packages/apps/Settings/src/com/android/settings/display/HdmiSettings.java	(working copy)-27,6 27,7 import androidx.preference.SwitchPreference;import androidx.preference.PreferenceCategory;import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;import com.android.internal.logging.nano.MetricsProto.MetricsEvent;import com.android.settings.HdmiListPreference;-39,6 40,8 import java.util.HashMap;import java.util.List;import java.util.Map;
import android.os.SystemProperties;
import java.io.*;import static com.android.settings.display.DrmDisplaySetting.DPY_STATUS_CONNECTED; -53,6 56,7 private static final String KEY_PRE_CATE  Display;private static final String KEY_PRE_RESOLUTION  Resolution;private static final String KEY_PRE_SCREEN_SCALE  ScreenScale;private static final String KEY_PRE_HDMI_4K  HDMIswitch4K;private static final String KEY_AUX_CATEGORY  aux_category;private static final String KEY_AUX_SCREEN_VH  aux_screen_vh;private static final String KEY_AUX_SCREEN_VH_LIST  aux_screen_vhlist;-87,6 91,7 private PreferenceCategory mAuxCategory;private CheckBoxPreference mAuxScreenVH;private ListPreference mAuxScreenVHList;private SwitchPreference hdmi4kPreference;private Context mContext;private DisplayInfo mSelectDisplayInfo;private DisplayManager mDisplayManager;-114,6 119,10 if (mDestory  MSG_SWITCH_DEVICE_STATUS ! msg.what) {return;}Log.d(TAG, fan msg.what msg.what);Log.d(TAG, fan  switch control (ITEM_CONTROL) msg.obj);if (MSG_UPDATE_STATUS  msg.what) {final ITEM_CONTROL control  (ITEM_CONTROL) msg.obj;new Thread() {-177,6 186,7 if (SWITCH_STATUS_OFF_ON  msg.arg1) {sendSwitchDeviceOffOnMsg(control, SWITCH_STATUS_ON);} else {Log.d(TAG, fan control control);sendUpdateStateMsg(control, 2000);}}-379,6 389,7 scalePreference.setOnPreferenceClickListener(this);category.addPreference(scalePreference);category.setEnabled(false);DisplayInfo displayInfo  new DisplayInfo();displayInfo.setDisplayNo(display);mDisplayInfoList.put(display, displayInfo);-394,6 405,13 mAuxScreenVHList.setOnPreferenceChangeListener(this);mAuxScreenVHList.setOnPreferenceClickListener(this);mAuxCategory.removePreference(mAuxScreenVHList);//add hdmi4kPreference hdmi4kPreference  (SwitchPreference) findPreference(KEY_PRE_HDMI_4K);hdmi4kPreference.setChecked(SystemProperties.getBoolean(persist.sys.hdmi4k, false));hdmi4kPreference.setOnPreferenceChangeListener(this);}private void sendSwitchDeviceOffOnMsg(ITEM_CONTROL control, int status) {-583,6 601,7 cate.setEnabled(false);}} else if (key.startsWith(KEY_PRE_RESOLUTION)) {Log.i(fan,key.replacekey.replace(KEY_PRE_SCREEN_SCALE, ));for (Map.EntryInteger, DisplayInfo entry : mDisplayInfoList.entrySet()) {int display  Integer.parseInt(key.replace(KEY_PRE_RESOLUTION, ));if (display  entry.getKey()) {-597,6 616,23 }return true;}public static	void exe_cmd(String cmd){Process process2  null;DataOutputStream dos  null;try{process2  Runtime.getRuntime().exec(su);dos  new DataOutputStream(process2.getOutputStream());dos.writeBytes(cmd);dos.flush();dos.close();}catch (Exception e) { e.printStackTrace(); }  }Overridepublic boolean onPreferenceChange(Preference preference, Object obj) {-662,6 698,30 //mDisplayManager.forceScheduleTraversalLocked();sendSwitchDeviceOffOnMsg(ITEM_CONTROL.REFRESH_DISPLAY_STATUS_INFO, SWITCH_STATUS_OFF_ON);}else if(preference  hdmi4kPreference){for (Map.EntryInteger, DisplayInfo entry : mDisplayInfoList.entrySet()) {// int display  Integer.parseInt(key.replace(KEY_PRE_RESOLUTION, ));if (0  entry.getKey()) {mSelectDisplayInfo  entry.getValue();}}if (obj  Boolean.TRUE) {Log.d(TAG, hdmi 4k is select) ;exe_cmd(setprop persist.vendor.resolution.aux 3840x216060);// exe_cmd(setprop persist.vendor.resolution.aux 1920x108060);exe_cmd(setprop vendor.display.timeline 1);exe_cmd(setprop persist.sys.hdmi4k true);}else{Log.d(TAG, hdmi 4k is close );exe_cmd(setprop persist.vendor.resolution.aux 720x48059.94-736-798-858-489-495-525-a);exe_cmd(setprop vendor.display.timeline 1);exe_cmd(setprop persist.sys.hdmi4k false);}}return true;}