但改变分辨率时,发送广播即可:
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);
分辨率显示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最佳分辨率。