HDMI(一):adb 查看HDMI信息


LeeAaron   https://www.cnblogs.com/lialong1st/p/8522240.html

rk3288_7.1HDMI開發總結 https://www.codeleading.com/article/24242032782/

只是一下暗戀而已 https://blog.csdn.net/qq_30624591/article/details/106840966

 

截圖、錄屏

  adb shell screencap -p /sdcard/01.png
  adb shell screenrecord /sdcard/demo.mp4

  

一、adb 查看HDMI信息

1.1、查看支持的分辨率

cat /sys/class/display/HDMI/modes

 

1.2、查看當前分辨率

cat /sys/class/display/HDMI/mode

 

1.3、切換分辨率

echo 1920x1080p-60 > /sys/class/display/HDMI/mode

 

1.4、查看HDMI是否連接

cat /sys/class/display/HDMI/connect

 

1.5、查看HDMI使能狀態

 cat /sys/class/display/HDMI/enable

 

1.6、設置HDMI使能,<value> 可取0或1,0表示關閉,1表示開啟。

 echo <value> > /sys/class/display/HDMI/enable

 

1.7.查看屏幕密度  120,160,240,320,480,640

adb shell wm size   屏幕分辨率

Physical size: 1920x1080

adb shell wm density 屏幕密度

Physical density: 480
Override density: 323

adb shell wm density 240 設置屏幕密度

 

二、Android7.1 HDMI設備節點

DRM 的設備節點為 “/dev/dri/cardX”, X為0-15的數值.
默認使用的是/dev/dri/card0

節點控制hdmi和lvds的顯示開關

HDMI:
echo on > /sys/class/drm/card0-HDMI-A-1/status //打開hdmiout顯示                     
echo off > /sys/class/drm/card0-HDMI-A-1/status //關閉hdmiout顯示                       
cat /sys/class/drm/card0-HDMI-A-1/status //打開是connected,關閉是disconnected

LVDS:
ls -dl /sys/class/drm/*/st*  && cat /sys/class/drm/card0-LVDS-1/st* 

echo on > /sys/class/drm/card0-LVDS-1/st*  //開
echo off > /sys/class/drm/card0-LVDS-1/st*  //關

cat /proc/device-tree/display-subsystem/route/route-lvds/status

 

判斷一下節點存不存在

    private boolean getScreenType() {
            File f = new File("/sys/class/drm/card0-DSI-1");
            if (f.exists()) {
                return true;
            }
            return false;
        }

 

三、主副顯示器設置:

可以在產品配置目錄下的system.prop里(如 device/rockchip/rk3288/rk3288_mid/system.prop)添加如下兩個屬性:
sys.hwc.device.primary = HDMI-A //設置顯示接口做為主顯,這里設置HDMI接口為主顯
sys.hwc.device.extend = LVDS //設置顯示接口做為副顯,這里設置LVDS接口為副顯

默認情況下(即以上屬性未配置時),不支持熱拔插設備(如 CVBS/MIPI/LVDS 等)會作為主顯,支持熱插拔設備(如HDMI/DP等)會作為次顯。通常主、副顯只配置一個顯示接口,
例如RK3399MID SDK默認采用的配置, HDMI作為主顯示,EDP作為副顯示。
關於接口名稱可以參見hardware/rockchip/hwcomposer/drmresources.cpp里的定義:

struct type_name connector_type_names[] = {
{ DRM_MODE_CONNECTOR_Unknown, “unknown” },//未知接口
{ DRM_MODE_CONNECTOR_VGA, “VGA” }, //VGA
{ DRM_MODE_CONNECTOR_DVII, “DVI-I” },//DVI,暫不支持
{ DRM_MODE_CONNECTOR_DVID, “DVI-D” },//DVI,暫不支持
{ DRM_MODE_CONNECTOR_DVIA, “DVI-A” },//DVI,暫不支持
{ DRM_MODE_CONNECTOR_Composite, “composite” },//不支持
{ DRM_MODE_CONNECTOR_SVIDEO, “s-video” },//S端子
{ DRM_MODE_CONNECTOR_LVDS, “LVDS” },//LVDS
{ DRM_MODE_CONNECTOR_Component, “component” },//分量信號YPbPr
{ DRM_MODE_CONNECTOR_9PinDIN, “9-pin DIN” },//不支持
{ DRM_MODE_CONNECTOR_DisplayPort, “DP” },//DP
{ DRM_MODE_CONNECTOR_HDMIA, “HDMI-A” },//HDMI A型口
{ DRM_MODE_CONNECTOR_HDMIB, “HDMI-B” },//HDMI B型口,不支持
{ DRM_MODE_CONNECTOR_TV, “TV” },// CVBS
{ DRM_MODE_CONNECTOR_eDP, “eDP” },//EDP
{ DRM_MODE_CONNECTOR_VIRTUAL, “Virtual” },//不支持
{ DRM_MODE_CONNECTOR_DSI, “DSI” },//MIPI
};

RK3288

struct type_name connector_type_names[] = {
    { DRM_MODE_CONNECTOR_Unknown, "unknown" },
    { DRM_MODE_CONNECTOR_VGA, "VGA" },
    { DRM_MODE_CONNECTOR_DVII, "DVI-I" },
    { DRM_MODE_CONNECTOR_DVID, "DVI-D" },
    { DRM_MODE_CONNECTOR_DVIA, "DVI-A" },
    { DRM_MODE_CONNECTOR_Composite, "composite" },
    { DRM_MODE_CONNECTOR_SVIDEO, "s-video" },
    { DRM_MODE_CONNECTOR_LVDS, "LVDS" },
    { DRM_MODE_CONNECTOR_Component, "component" },
    { DRM_MODE_CONNECTOR_9PinDIN, "9-pin DIN" },
    { DRM_MODE_CONNECTOR_DisplayPort, "DP" },
    { DRM_MODE_CONNECTOR_HDMIA, "HDMI-A" },
    { DRM_MODE_CONNECTOR_HDMIB, "HDMI-B" },
    { DRM_MODE_CONNECTOR_TV, "TV" },
    { DRM_MODE_CONNECTOR_eDP, "eDP" },
    { DRM_MODE_CONNECTOR_VIRTUAL, "Virtual" },
    { DRM_MODE_CONNECTOR_DSI, "DSI" },
};

判斷Android7.1 HDMI 插拔狀態

import java.io.File;
import java.util.Scanner;

	private static boolean isHdmiSwitchSet() {

		File switchFile = new File("/sys/devices/virtual/switch/hdmi/state");
		if (!switchFile.exists()) {
			switchFile = new File("/sys/class/switch/hdmi/state");
		}
		try {
			Scanner switchFileScanner = new Scanner(switchFile);
			int switchValue = switchFileScanner.nextInt();
			switchFileScanner.close();
			return switchValue > 0;
		} catch (Exception e) {
			return false;
		}
	}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM