android HDMI 清晰度 分辨率
但改变分辨率时,发送广播即可:
Intent intent_outputmode_change = new Intent(ACTION_OUTPUTMODE_CHANGE);
intent_outputmode_change.putExtra(OUTPUT_MODE, outputmode_entries_logic);
intent_outputmode_change.putExtra("cvbs_mode", 1/0);
this.getContext().sendBroadcast(intent_outputmode_change);

import android.content.Context; import android.content.Intent; import android.util.Log; public class DisplayUtil { private final static String ACTION_OUTPUTMODE_CHANGE = "android.intent.action.OUTPUTMODE_CHANGE"; private final static String OUTPUT_MODE = "output_mode"; private final static String ACTION_OUTPUTMODE_SAVE = "android.intent.action.OUTPUTMODE_SAVE"; private final static String ACTION_OUTPUTPOSITION_CHANGE = "android.intent.action.OUTPUTPOSITION_CHANGE"; private final static String ACTION_OUTPUTPOSITION_SAVE = "android.intent.action.OUTPUTPOSITION_SAVE"; private final static String ACTION_OUTPUTPOSITION_DEFAULT_SAVE = "android.intent.action.OUTPUTPOSITION_DEFAULT_SAVE"; private final static String OUTPUT_POSITION_X = "output_position_x"; private final static String OUTPUT_POSITION_Y = "output_position_y"; private final static String OUTPUT_POSITION_W = "output_position_w"; private final static String OUTPUT_POSITION_H = "output_position_h"; private final static String OUTPUT_POSITION_MODE = "output_position_mode"; private static final String TAG = "======"; public static void setOutputMode(Context c, String mode) { Intent intent_outputmode_change = new Intent(ACTION_OUTPUTMODE_CHANGE); intent_outputmode_change.putExtra(OUTPUT_MODE, mode); intent_outputmode_change.putExtra("cvbs_mode", 0); c.sendBroadcast(intent_outputmode_change); Intent intent_outputmode_save = new Intent(ACTION_OUTPUTMODE_SAVE); intent_outputmode_save.putExtra(OUTPUT_MODE, mode); c.sendBroadcast(intent_outputmode_save); } public static void setPosition(Context context, int l, int t, int r, int b, int mode) { Intent intent_output_position = new Intent(ACTION_OUTPUTPOSITION_CHANGE); intent_output_position.putExtra(OUTPUT_POSITION_X, l); intent_output_position.putExtra(OUTPUT_POSITION_Y, t); intent_output_position.putExtra(OUTPUT_POSITION_W, r); intent_output_position.putExtra(OUTPUT_POSITION_H, b); intent_output_position.putExtra(OUTPUT_POSITION_MODE, mode); context.sendBroadcast(intent_output_position); // savePosition(context, l,t,r,b); Log.i(TAG, "--------------------------------position Set"); Log.d(TAG, "--------------------------------set display axis x = " + l); Log.d(TAG, "--------------------------------set display axis y = " + t); Log.d(TAG, "--------------------------------set display axis width = " + r); Log.d(TAG, "--------------------------------set display axis height = " + b); } public static void savePosition(Context context, int left, int top, int width, int height) { Intent intent_output_position = new Intent(ACTION_OUTPUTPOSITION_SAVE); intent_output_position.putExtra(OUTPUT_POSITION_X, left); intent_output_position.putExtra(OUTPUT_POSITION_Y, top); intent_output_position.putExtra(OUTPUT_POSITION_W, width); intent_output_position.putExtra(OUTPUT_POSITION_H, height); context.sendBroadcast(intent_output_position); // Log.i(TAG, "--------------------------------position Set"); // Log.d(TAG, "--------------------------------set display axis x = " + x); // Log.d(TAG, "--------------------------------set display axis y = " + y); // Log.d(TAG, "--------------------------------set display axis width = " + position_cur.width); // Log.d(TAG, "--------------------------------set display axis height = " + position_cur.height); } public static void savePositionDefault(Context context) { Intent intent_output_position = new Intent(ACTION_OUTPUTPOSITION_DEFAULT_SAVE); context.sendBroadcast(intent_output_position); } }
分辨率显示outputmode_entries_display和取值outputmode_entries_logic:
<!-- Display settings. The type of output mode to show. -->
<string-array name="outputmode_entries_display">
<item>480P</item>
<item>576P</item>
<item>720P 60HZ</item>
<item>1080I 60HZ</item>
<item>1080P 60HZ</item>
<item>720P 50HZ</item>
<item>1080I 50HZ</item>
</string-array>
<string-array name="outputmode_entries_logic">
<item>480p</item>
<item>576p</item>
<item>720p</item>
<item>1080i</item>
<item>1080p</item>
<item>720p50hz</item>
<item>1080i50hz</item>
</string-array>
<receiver android:name="net.sunniwell.settings.sdzx.content.OutputSettingsBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.OUTPUTMODE_CHANGE"/>
<action android:name="android.intent.action.OUTPUTMODE_CANCEL"/>
<action android:name="android.intent.action.OUTPUTMODE_SAVE"/>
<action android:name="android.intent.action.OUTPUTPOSITION_CHANGE"/>
<action android:name="android.intent.action.OUTPUTPOSITION_CANCEL"/>
<action android:name="android.intent.action.OUTPUTPOSITION_SAVE"/>
<action android:name="android.intent.action.OUTPUTPOSITION_DEFAULT_SAVE"/>
<action android:name="android.intent.action.DISP_CHANGE"/>
<action android:name="android.intent.action.REALVIDEO_ON"/>
<action android:name="android.intent.action.REALVIDEO_OFF"/>
<action android:name="android.intent.action.VIDEOPOSITION_CHANGE"/>
<action android:name="android.intent.action.CVBSMODE_CHANGE"/>
</intent-filter>
</receiver>
如果setting没带处理,需要自己做:
settings源码的文件:
OutputSettingsBroadcastReceiver.java 改变分辨率。
HDMICheckHandler.java 自动检测hdmi最佳分辨率。
位置坐标文件,实现屏幕放大,缩小: /sys/class/ppmgr/ppscaler_rect: x:58,y:29,w:1280,h:720
分辨率文件: /sys/class/display/mode : 1080p
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?