完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在android系统中有标准定义的走下面这个流程:比如音量加减,电源
先找到对应的navigation_bar.xml,添加如下: android:layout_height="match_parent" android:layout_weight="0" android:src="@drawable/ic_sy***ar_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系统定义流程: 添加控件 android:layout_height="match_parent" android:layout_weight="0" android:src="@drawable/ic_sy***ar_poweroff" android:scaleType="centerInside" /> frameworksbasepackagesSystemUIsrccomandroidsystemuistatu***arphonenavigationBarView.java public View getPowerButton(){ return mCurrentView.findViewById(R.id.poweroff); } frameworksbasepackagesSystemUIsrccomandroidsystemuistatu***arphonePhoneStatusBar.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); } } }; 原作者:会飞的牛1 |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
1756 浏览 0 评论
2010 浏览 1 评论
1689 浏览 1 评论
3022 浏览 1 评论
3992 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-10 01:52 , Processed in 0.632715 second(s), Total 70, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号