Android->HDMIIN:add HDMIIN pip key support
This commit is contained in:
@ -13,6 +13,8 @@ rild.libargs=-d /dev/ttyACM0
|
||||
persist.tegra.nvmmlite = 1
|
||||
ro.audio.monitorOrientation=true
|
||||
|
||||
persist.sys.pip=true
|
||||
|
||||
#NFC
|
||||
debug.nfc.fw_download=false
|
||||
debug.nfc.se=false
|
||||
|
||||
@ -226,6 +226,16 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
private boolean mKeyguardHidden;
|
||||
private boolean mKeyguardDrawnOnce;
|
||||
|
||||
volatile boolean mPipsizeKeyHandled; // accessed from input reader and handler thread
|
||||
volatile boolean mPipExitKeyHandled; // accessed from input reader and handler thread
|
||||
private boolean mPipSizeKeyTriggered;
|
||||
private long mPipSizeKeyDowmTime;
|
||||
private boolean mPipExitKeyTriggered;
|
||||
private long mPipExitKeyDowmTime;
|
||||
|
||||
private int mPipSizeKey;
|
||||
private int mPipExitKey;
|
||||
|
||||
/* Table of Application Launch keys. Maps from key codes to intent categories.
|
||||
*
|
||||
* These are special keys that are used to launch particular kinds of applications,
|
||||
@ -1084,6 +1094,52 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
}
|
||||
}
|
||||
|
||||
private void cancelPipSizeChangeKeyAction() {
|
||||
if (!mPipsizeKeyHandled) {
|
||||
mHandler.removeCallbacks(PIPSizeChangeBroadCastRunnable);
|
||||
}
|
||||
}
|
||||
|
||||
private void cancelPipExitKeyAction() {
|
||||
if (!mPipExitKeyHandled) {
|
||||
mHandler.removeCallbacks(PIPExitBroadCastRunnable);
|
||||
}
|
||||
}
|
||||
|
||||
private void iterceptPIPSizeChange(){
|
||||
if (mPipSizeKeyTriggered) {
|
||||
mHandler.postDelayed(PIPSizeChangeBroadCastRunnable, ViewConfiguration.getGlobalActionKeyTimeout()*3);
|
||||
}
|
||||
}
|
||||
private void iterceptPIPExit(){
|
||||
if (mPipExitKeyTriggered) {
|
||||
mHandler.postDelayed(PIPExitBroadCastRunnable, ViewConfiguration.getGlobalActionKeyTimeout()*3);
|
||||
}
|
||||
}
|
||||
|
||||
private final Runnable PIPSizeChangeBroadCastRunnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Log.i(TAG, "PIPSizeChangeBroadCastRunnable");
|
||||
mPipsizeKeyHandled = true;
|
||||
Intent i = new Intent();
|
||||
i.setAction("com.android.rk.pip.sizechange");
|
||||
mContext.sendBroadcast(i);
|
||||
}
|
||||
};
|
||||
|
||||
private final Runnable PIPExitBroadCastRunnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Log.i(TAG, "PIPExitBroadCastRunnable");
|
||||
mPipExitKeyHandled = true;
|
||||
Intent i = new Intent();
|
||||
i.setAction("com.android.rk.pip.exit");
|
||||
mContext.sendBroadcast(i);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
private void powerPress(long eventTime, boolean interactive, int count) {
|
||||
if (mScreenOnEarly && !mScreenOnFully) {
|
||||
Slog.i(TAG, "Suppressed redundant power key press while "
|
||||
@ -1536,6 +1592,11 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
wm.getDefaultDisplay().getMetrics(displayMetrics);
|
||||
screenWidth = displayMetrics.widthPixels;
|
||||
screenHeight = displayMetrics.heightPixels;
|
||||
|
||||
//pip beigin
|
||||
mPipExitKey = KeyEvent.KEYCODE_DPAD_UP;
|
||||
mPipSizeKey = KeyEvent.KEYCODE_DPAD_DOWN;
|
||||
//pid end
|
||||
}
|
||||
|
||||
/**
|
||||
@ -5287,6 +5348,38 @@ public class PhoneWindowManager implements WindowManagerPolicy {
|
||||
&& (policyFlags & WindowManagerPolicy.FLAG_VIRTUAL) != 0
|
||||
&& event.getRepeatCount() == 0;
|
||||
|
||||
if("true".equals(SystemProperties.get("persist.sys.pip"))){
|
||||
if(mPipExitKey==keyCode){
|
||||
if (down) {
|
||||
if ( !mPipExitKeyTriggered
|
||||
&& (event.getFlags() & KeyEvent.FLAG_FALLBACK) == 0) {
|
||||
mPipExitKeyTriggered = true;
|
||||
mPipExitKeyDowmTime= event.getDownTime();
|
||||
//cancelPendingPowerKeyAction();
|
||||
iterceptPIPExit();
|
||||
}
|
||||
} else {
|
||||
mPipExitKeyHandled= false;
|
||||
mPipExitKeyTriggered = false;
|
||||
cancelPipExitKeyAction();
|
||||
}
|
||||
}
|
||||
else if(mPipSizeKey == keyCode){
|
||||
if (down) {
|
||||
if ( !mPipSizeKeyTriggered
|
||||
&& (event.getFlags() & KeyEvent.FLAG_FALLBACK) == 0) {
|
||||
mPipSizeKeyTriggered = true;
|
||||
mPipSizeKeyDowmTime= event.getDownTime();
|
||||
iterceptPIPSizeChange();
|
||||
}
|
||||
} else {
|
||||
mPipsizeKeyHandled = false;
|
||||
mPipSizeKeyTriggered = false;
|
||||
cancelPipSizeChangeKeyAction();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Handle special keys.
|
||||
switch (keyCode) {
|
||||
case KeyEvent.KEYCODE_VOLUME_DOWN:
|
||||
|
||||
Reference in New Issue
Block a user