[rk3288]5.1状态栏添加power按键

在android系统中有标准定义的走下面这个流程:比如音量加减,电源

先找到对应的navigation_bar.xml,添加如下:

	 <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/poweroff"
                android:layout_width="100dp" android:paddingStart="25dp" android:paddingEnd="25dp"
                android:layout_height="match_parent"
                android:layout_weight="0"
                android:src="@drawable/ic_sysbar_poweroff"
                android:scaleType="centerInside"
                systemui:keyCode="142"
                />                    

这里的systemui:keyCode="142"对应的你要上报的按键键值,我这里用的空闲的F12

base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java

在interceptKeyBeforeQueueing方法中添加监听:

case KeyEvent.KEYCODE_F12: {
                if (down) {
                    interceptPowerKeyDown(event, true);
                }
                break;
            }

下面走一下非android系统定义流程:

添加控件

	 <com.android.systemui.statusbar.policy.KeyButtonView android:id="@+id/poweroff"
                android:layout_width="100dp" android:paddingStart="25dp" android:paddingEnd="25dp"
                android:layout_height="match_parent"
                android:layout_weight="0"
                android:src="@drawable/ic_sysbar_poweroff"
                android:scaleType="centerInside"
                />                    

frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\navigationBarView.java

public View getPowerButton(){
               return mCurrentView.findViewById(R.id.poweroff);
       }

frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\PhoneStatusBar.java

onConfigurationChanged----->
    repositionNavigationBar---->
        mNavigationBarView.getPowerButton().setOnClickListener(mPowerOnClickListener);
        
View.OnClickListener mPowerOnClickListener = new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                         Intent i = new Intent();
                         i.setAction("com.core.systemui.poweroff");    //广播名称
                         mContext.sendBroadcast(i);
 
                        }
        };
        

通过点击发送广播,接收到广播进行操作

frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java

//接受广播处注册广播
  filter = new IntentFilter();
        filter.addAction(Intent.ACTION_DREAMING_STARTED);
        filter.addAction(Intent.ACTION_DREAMING_STOPPED);
        filter.addAction("com.core.systemui.poweroff");    //注册广播
        context.registerReceiver(mDreamReceiver, filter);
        
//如下位置添加监听
BroadcastReceiver mDreamReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (Intent.ACTION_DREAMING_STARTED.equals(intent.getAction())) {
                if (mKeyguardDelegate != null) {
                    mKeyguardDelegate.onDreamingStarted();
                }
            } else if (Intent.ACTION_DREAMING_STOPPED.equals(intent.getAction())) {
                if (mKeyguardDelegate != null) {
                    mKeyguardDelegate.onDreamingStopped();
                }        //添加如下代码
            } else if ("com.core.systemui.poweroff".equals(intent.getAction())) {
              interceptPowerKeyDown(event, true);   
            }
        }
    };
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值