首页>
技术资讯>
详情

Android中通过按键旋转屏幕

2016-05-22 来源:CloudBest 阅读量: 1
关键词: 手机游戏程序设计

    Q5有个功能,通过长按menu按键,可以旋转屏幕方向(0°或者90°),这个功能有时蛮有用的,下面来看看是如何实现的:
    1 修改按键处理程序
    frameworks/policies/base/phone/com/android/internal/policy/impl/PhoneWindowManager.java
    函数
    public boolean interceptKeyTi(WindowState win, int code, int metaKeys, boolean down,
    int repeatCount, int flags)
    在处理菜单键的地方
    if (code == KeyEvent.KEYCODE_MENU) {
    final int chordBug = KeyEvent.META_SHIFT_ON;
    if (down && repeatCount == 0) {
    if (mEnableShiftMenuBugReports && (metaKeys & chordBug) == chordBug) {
    Intent intent = new Intent(Intent.ACTION_BUG_REPORT);
    mContext.sendOrderedBroadcast(intent, null);
    return true;
    } else if (SHOW_PROCESSES_ON_ALT_MENU &&
    (metaKeys & KeyEvent.META_ALT_ON) == KeyEvent.META_ALT_ON) {
    Intent service = new Intent();
    service.setClassName(mContext, "com.android.server.LoadAverageService");
    ContentResolver res = mContext.getContentResolver();
    boolean shown = Settings.System.getInt(
    res, Settings.System.SHOW_PROCESSES, 0) != 0;
    if (!shown) {
    mContext.startService(service);
    } else {
    mContext.stopService(service);
    }
    Settings.System.putInt(
    res, Settings.System.SHOW_PROCESSES, shown ? 0 : 1);
    return true;
    }
    }
    //上面是原来的内容,下面是添加的新内容
    else if (down && repeatCount == 20 && MenuKeyUp && (!keyguardOn)) {
    //如果按下Menu键一定时间,抬起时执行此段函数
    MenuKeyUp = false;
    try {
    int ro = mWindowManager.getRotation(); //获取当前方向
    if( ro == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE ) {
    ro = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;

热门推荐 查看更多