RK3288android4.4怎么固定分辨率

求助大神,RK3288 4.4怎么固定分辨率

在设置里可以固定分辨率啊,具体实现你可以看一下package/apps/Setting代码中的HdmiControllerActivity.java.如果你想第一次开机就默认好分辨率的话,你可以借鉴下我的代码,我的是设置自动获取分辨率的,你改成你对应的就好

[tvbox-442.git] / packages / apps / Provision / src / com / android / provision / DefaultActivity.java
diff --git a/packages/apps/Provision/src/com/android/provision/DefaultActivity.java b/packages/apps/Provision/src/com/android/provision/DefaultActivity.java
index aef1799..5b5e642 100755 (executable)
--- a/packages/apps/Provision/src/com/android/provision/DefaultActivity.java
+++ b/packages/apps/Provision/src/com/android/provision/DefaultActivity.java
@@ -29,15 +29,28 @@ import java.util.List;
 import android.content.pm.PackageInfo;
 import java.io.File;
 import android.util.Log;
+import android.os.DisplayOutputManager;
+import android.os.RemoteException;
 /**
  * Application that sets the provisioned bit, like SetupWizard does.
  */
+
 public class DefaultActivity extends Activity {
+public final static String MODE_HDMI_AUTO  = "auto";

     @Override
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
-
+       DisplayOutputManager mDisplayManagement = null;
+       try {
+       mDisplayManagement = new DisplayOutputManager();
+       } catch(RemoteException e){Log.v("sjf","new displayoutManager error");}
+       if(mDisplayManagement != null)
+       {
+        mDisplayManagement.setMode(mDisplayManagement.MAIN_DISPLAY, mDisplayManagement.DISPLAY_IFACE_HDMI, MODE_HDMI_AUTO);
+        mDisplayManagement.setInterface(mDisplayManagement.MAIN_DISPLAY, mDisplayManagement.DISPLAY_IFACE_HDMI, true);
+       Log.v("sjf","setdisplay");
+       }
         // Add a persistent setting to allow other apps to know the device has been provisioned.
         Settings.Global.putInt(getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 1);
         Settings.Secure.putInt(getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, 1);
@@ -56,7 +69,6 @@ public class DefaultActivity extends Activity {
         ComponentName name = new ComponentName(this, DefaultActivity.class);
         pm.setComponentEnabledSetting(name, PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                 PackageManager.DONT_KILL_APP);
-
         // terminate the activity.
         finish();
     }

风之空响 发表于 2017-3-14 10:29
在设置里可以固定分辨率啊,具体实现你可以看一下package/apps/Setting代码中的HdmiControllerActivity.jav …

这个没问题,我的也是这么写的,但你有没有发现hdmi拔了再插又变回去了

pcgg0000 发表于 2017-3-14 12:12
这个没问题,我的也是这么写的,但你有没有发现hdmi拔了再插又变回去了

应该是这里,hdmi插入后每次会调这个,改成不管怎样都设成default,只是我自己编译的kernel老是卡在启动画面不动。。
kernel/drivers/rockchip/hdmi/hdmi-lcdc.c

int hdmi_set_lcdc(struct hdmi *hdmi)
{
	int rc = 0;
	struct rk_screen screen;
//	printk("%s vic is %d autoset %d\n", __FUNCTION__, hdmi->vic, hdmi->autoset);
/**by xx
	if(hdmi->autoset)
		hdmi->vic = hdmi_find_best_mode(hdmi, 0);
	else
	hdmi->vic = hdmi_find_best_mode(hdmi, hdmi->vic);
//	printk("%s selected vic is %d\n", __FUNCTION__, hdmi->vic);
	if(hdmi->vic == 0)
		hdmi->vic = HDMI_VIDEO_DEFAULT_MODE;
*/
        hdmi->vic = HDMI_VIDEO_DEFAULT_MODE;	

你看一下这里

--- a/kernel/drivers/video/rockchip/hdmi/rk_hdmi.h
+++ b/kernel/drivers/video/rockchip/hdmi/rk_hdmi.h
@@ -408,7 +408,7 @@ struct hdmi {
 #define HDMI_ENABLE_HDCP               (HDMI_SYSFS_SRC         | 11)

 #define HDMI_DEFAULT_SCALE             95
-#define HDMI_AUTO_CONFIG               true
+#define HDMI_AUTO_CONFIG               false

 /* HDMI default vide mode */
 #define HDMI_VIDEO_DEFAULT_MODE                        HDMI_1280x720P_60HZ