添加Display>>HDMI settings>>Screen Timeout选项
1,编辑
frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
+import com.mediatek.hdmi.IMtkHdmiManager;
+import android.os.ServiceManager;
@
+private IMtkHdmiManager mHdmiManager = null;
private boolean mLowPowerModeEnabled;
@
+ filter = new IntentFilter();
+ filter.addAction("android.intent.action.HDMI_PLUG");
+ mContext.registerReceiver(new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ TurnonScreen();
+ }
+ }, filter, null, mHandler);
// Register for settings changes.
final ContentResolver resolver = mContext.getContentResolver();
resolver.registerContentObserver(Settings.Secure.getUriFor(
@
+ resolver.registerContentObserver(Settings.System.getUriFor(
+ Settings.System.HDMI_LCD_TIMEOUT),
+ false, mSettingsObserver, UserHandle.USER_ALL);
resolver.registerContentObserver(Settings.System.getUriFor(
Settings.System.SCREEN_AUTO_BRIGHTNESS_ADJ),
false, mSettingsObserver, UserHandle.USER_ALL);
@
+ mHdmiManager = IMtkHdmiManager.Stub.asInterface(ServiceManager.getService(Context.HDMI_SERVICE));
// Go.
if (DEBUG) {
Slog.d(TAG, "system ready!");
@
mDirty |= DIRTY_SETTINGS;
+ lcd_delay_timeout = Settings.System.getIntForUser(resolver,
+ Settings.System.HDMI_LCD_TIMEOUT, 10,
+ UserHandle.USER_CURRENT);
+
+ if(isAbleChangeHDMIMode()){
+ TurnonScreen();
+ }
}
private void postAfterBootCompleted(Runnable r) {
@
+ private void TurnonScreen() {
+
+ ContentResolver resolver = mContext.getContentResolver();
+ final long currentTimeout = Settings.System.getLong(resolver,
+ Settings.System.HDMI_LCD_TIMEOUT, 10);
+ mHandlerTimeout.removeCallbacks(mScreenTimeout);
+ if (lcd_delay_timeout != -1) {
+
+ if (mTimeout) {
+ try {
+ setTemporaryScreenBrightnessSettingOverrideInternal(mScreenBrightnessSetting);
+ } catch (Exception e) {
+ Slog.e(TAG, "Exception" + e);
+ }
+ }
+ mTimeout = false;
+ if(isAbleChangeHDMIMode())
+ LockScreenOff();
+ }
+
+ return;
+ }
+
+ private boolean isAbleChangeHDMIMode()