下面列出了android.view.KeyEvent#startTracking ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
boolean handled = false;
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_LEFT:
handled = moveLeft();
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
handled = moveRight();
break;
case KeyEvent.KEYCODE_DPAD_CENTER:
case KeyEvent.KEYCODE_NUMPAD_ENTER:
case KeyEvent.KEYCODE_ENTER:
event.startTracking();
handled = true;
break;
}
return handled || super.onKeyDown(keyCode, event);
}
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (mPopup == null || mPopup.getListView() == null) return false;
if (event.getKeyCode() == KeyEvent.KEYCODE_MENU) {
if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
event.startTracking();
v.getKeyDispatcherState().startTracking(event, this);
return true;
} else if (event.getAction() == KeyEvent.ACTION_UP) {
v.getKeyDispatcherState().handleUpEvent(event);
if (event.isTracking() && !event.isCanceled()) {
dismiss();
return true;
}
}
}
return false;
}
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (mPopup == null || mPopup.getListView() == null) return false;
if (event.getKeyCode() == KeyEvent.KEYCODE_MENU) {
if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
event.startTracking();
v.getKeyDispatcherState().startTracking(event, this);
return true;
} else if (event.getAction() == KeyEvent.ACTION_UP) {
v.getKeyDispatcherState().handleUpEvent(event);
if (event.isTracking() && !event.isCanceled()) {
dismiss();
return true;
}
}
}
return false;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
event.startTracking();
return true;
}
return super.onKeyDown(keyCode, event);
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (mFragmentContext.getApplicationInfo().targetSdkVersion
>= Build.VERSION_CODES.ECLAIR) {
event.startTracking();
} else {
onBackPressed();
}
return true;
}
return false;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (isVisible() && cancelable && keyCode == KeyEvent.KEYCODE_BACK) {
event.startTracking();
return true;
}
return false;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
event.startTracking();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (!mChildrenFocused && keyCode == KeyEvent.KEYCODE_ENTER) {
event.startTracking();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
event.startTracking();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
event.startTracking();
return true;
}
return super.onKeyDown(keyCode, event);
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case 4:
event.startTracking();
return true;
case 24:
case 25:
this.mLiveFragment.onKeyDown(keyCode, event);
break;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
event.startTracking();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
event.startTracking();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
if (!useVolumeForNav()) {
return false;
}
event.startTracking();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
event.startTracking();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) {
event.startTracking();
return true;
}
return super.onKeyDown(keyCode, event);
}
public static void startTracking(KeyEvent event) {
event.startTracking();
}
public static void startTracking(KeyEvent event) {
event.startTracking();
}
@Override
public boolean onKey(View v, final int keyCode, KeyEvent event) {
LOGI("VolumePanel", "onKey(" + keyCode + ")");
// Don't handle ANYTHING when a call is in progress!
if (mCallState != TelephonyManager.CALL_STATE_IDLE)
return super.onKey(v, keyCode, event);
switch (keyCode) {
// Handle the DOWN + MULTIPLE action (holding down).
case KeyEvent.KEYCODE_VOLUME_UP:
case KeyEvent.KEYCODE_VOLUME_DOWN:
final int adjust = ((keyCode == KeyEvent.KEYCODE_VOLUME_UP) ?
AudioManager.ADJUST_RAISE : AudioManager.ADJUST_LOWER);
switch (event.getAction()) {
case KeyEvent.ACTION_DOWN:
// If another key was pressed while holding on to
// one volume key, we'll need to abort mission.
if (mKeyCodeDown != 0) {
mIgnoreNextKeyUp = true;
mHandler.removeMessages(MSG_VOLUME_LONG_PRESS);
return super.onKey(v, keyCode, event);
}
mKeyCodeDown = event.getKeyCode();
mKeyTimeDown = System.currentTimeMillis();
event.startTracking();
// NOTE: we'll allow long press events if we've set an action.
boolean callIdle = (mCallState == TelephonyManager.CALL_STATE_IDLE);
if (!noLongPress || hasLongPressAction(keyCode)) {
mHandler.sendMessageDelayed(mHandler.obtainMessage(
MSG_VOLUME_LONG_PRESS, event), ((callIdle && hasLongPressAction(keyCode)) ?
mLongPressTimeout : mLongPressTimeout / 2));
}
break;
case KeyEvent.ACTION_UP:
case KeyEvent.ACTION_MULTIPLE:
boolean hasLongPress = mHandler.hasMessages(MSG_VOLUME_LONG_PRESS);
mHandler.removeMessages(MSG_VOLUME_LONG_PRESS);
boolean ignoreNextKeyUp = mIgnoreNextKeyUp;
mIgnoreNextKeyUp = false;
mKeyCodeDown = 0;
// We've been told to let this one go.
if (ignoreNextKeyUp || event.isCanceled()) {
mKeyTimeDown = 0;
return true;
}
if ((hasLongPress || noLongPress) && (System.currentTimeMillis() -
mKeyTimeDown) < mLongPressTimeout) {
mVolumeDirty = true;
mKeyTimeDown = 0;
if (!firstReveal || (firstReveal && isShowing())) {
adjustVolume(adjust);
show();
} else {
reveal();
}
}
break;
}
break;
case KeyEvent.KEYCODE_VOLUME_MUTE:
switch (event.getAction()) {
case KeyEvent.ACTION_UP:
boolean mute = isMuted(STREAM_RING);
mAudioManager.setStreamMute(STREAM_RING, !mute);
mAudioManager.setStreamMute(STREAM_NOTIFICATION, !mute);
mVolumeDirty = true;
show();
break;
}
break;
}
return super.onKey(v, keyCode, event);
}
@Override
public boolean onKey(View v, final int keyCode, KeyEvent event) {
LOGI("VolumePanel", "onKey(" + keyCode + ")");
// Don't handle ANYTHING when a call is in progress!
if (mCallState != TelephonyManager.CALL_STATE_IDLE)
return super.onKey(v, keyCode, event);
switch (keyCode) {
// Handle the DOWN + MULTIPLE action (holding down).
case KeyEvent.KEYCODE_VOLUME_UP:
case KeyEvent.KEYCODE_VOLUME_DOWN:
final int adjust = ((keyCode == KeyEvent.KEYCODE_VOLUME_UP) ?
AudioManager.ADJUST_RAISE : AudioManager.ADJUST_LOWER);
switch (event.getAction()) {
case KeyEvent.ACTION_DOWN:
// If another key was pressed while holding on to
// one volume key, we'll need to abort mission.
if (mKeyCodeDown != 0) {
mIgnoreNextKeyUp = true;
mHandler.removeMessages(MSG_VOLUME_LONG_PRESS);
return super.onKey(v, keyCode, event);
}
mKeyCodeDown = event.getKeyCode();
mKeyTimeDown = System.currentTimeMillis();
event.startTracking();
// NOTE: we'll allow long press events if we've set an action.
boolean callIdle = (mCallState == TelephonyManager.CALL_STATE_IDLE);
if (!noLongPress || hasLongPressAction(keyCode)) {
mHandler.sendMessageDelayed(mHandler.obtainMessage(
MSG_VOLUME_LONG_PRESS, event), ((callIdle && hasLongPressAction(keyCode)) ?
mLongPressTimeout : mLongPressTimeout / 2));
}
break;
case KeyEvent.ACTION_UP:
case KeyEvent.ACTION_MULTIPLE:
boolean hasLongPress = mHandler.hasMessages(MSG_VOLUME_LONG_PRESS);
mHandler.removeMessages(MSG_VOLUME_LONG_PRESS);
boolean ignoreNextKeyUp = mIgnoreNextKeyUp;
mIgnoreNextKeyUp = false;
mKeyCodeDown = 0;
// We've been told to let this one go.
if (ignoreNextKeyUp || event.isCanceled()) {
mKeyTimeDown = 0;
return true;
}
if ((hasLongPress || noLongPress) && (System.currentTimeMillis() -
mKeyTimeDown) < mLongPressTimeout) {
mVolumeDirty = true;
mKeyTimeDown = 0;
if (!firstReveal || (firstReveal && isShowing())) {
adjustVolume(adjust);
show();
} else {
reveal();
}
}
break;
}
break;
case KeyEvent.KEYCODE_VOLUME_MUTE:
switch (event.getAction()) {
case KeyEvent.ACTION_UP:
boolean mute = isMuted(STREAM_RING);
mAudioManager.setStreamMute(STREAM_RING, !mute);
mAudioManager.setStreamMute(STREAM_NOTIFICATION, !mute);
mVolumeDirty = true;
show();
break;
}
break;
}
return super.onKey(v, keyCode, event);
}