Android 怎么让app自行处理powerdesigner 16 key key

如何在Android&App中屏蔽(拦截)Home按键及其他按键
编写一个Acitivity,如下所示:
关键点1:屏蔽HOME按键,在onAttachedToWindow中设置FLAG_HOMEKEY_DISPATCHED
关键点2:屏蔽除Power , Home外的按键,覆盖dispatchKeyEvent方法,并返回为true
public class LockByKeyGuard extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
public void onAttachedToWindow() {
//关键:在onAttachedToWindow中设置FLAG_HOMEKEY_DISPATCHED
this.getWindow().addFlags(WindowManager.LayoutParams.
FLAG_HOMEKEY_DISPATCHED);
super.onAttachedToWindow();
public boolean dispatchKeyEvent(KeyEvent event) {
// 返回true,不响应其他key
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。android 添加按(power键)电源键结束通话(挂断电话)
下面图老师小编要向大家介绍下android 添加按(power键)电源键结束通话(挂断电话),看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!
首先我们发现现在我们所用的android智能手机大部分都有当你在打电话时按power键来挂断电话,一般都是在设置中。 我主要是在原生源码中添加这一功能,主要用于学习。。。。先看一张图: &看到那个按电源键挂断电话吧,那就是我所添加的,本来原生源码中是没有这一栏的。。。。。 大概思路: 首先我先添加这一个checkboxPreference,然后将是否选择这一功能的值(0和1)存到data/data/com.android.providers.settings /databases/settings.db数据库的system表中 ,然后再根据数据库表中的值在PhoneWindownManager.java中去处理。 具体过程: 首先找到setting的源码,在源码下我们要找到通话设置,在seting.xml中我们能找到 代码如下: SPAN style="FONT-SIZE: 14px" com.android.settings.IconPreferenceScreen android:key="call_settings" settings:icon="@drawable/ic_settings_call" android:title="@string/call_settings_title" intent android:action="android.intent.action.MAIN" android:targetPackage="com.android.phone" android:targetClass="com.android.phone.CallFeaturesSetting" / /com.android.settings.IconPreferenceScreen/SPAN
这个call_settings就是我们在setting(设置)中看到的通话设置,但是我们却不能在settings中的源码中找到关于call_settings的布局文件, 因此我们需要找到它,其实这个布局文件是在package/app/Phone中,也就是在Phone这个app源码的资源文件中。 因此我们在Phone的资源文件下能找到Call_feature_setting.xml文件如下: 代码如下: SPAN style="FONT-SIZE: 14px"PreferenceScreen xmlns:android="/apk/res/android" xmlns:phone="/apk/res/com.android.phone" android:title="@string/call_settings" PreferenceScreen android:key="button_fdn_key" android:title="@string/fdn" android:summary="@string/sum_fdn" android:persistent="false" intent android:action="android.intent.action.MAIN" android:targetPackage="com.android.phone" android:targetClass="com.android.phone.FdnSetting" / /PreferenceScreen PreferenceCategory android:key="button_voicemail_category_key" android:title="@string/voicemail" android:persistent="false" ListPreference android:key="button_voicemail_provider_key" android:title="@string/voicemail_provider" android:summary="@string/sum_voicemail_choose_provider" android:defaultValue="" android:persistent="true" / PreferenceScreen android:key="button_voicemail_setting_key" android:title="@string/voicemail_settings" android:persistent="false" !-- Note for all com.android.phone.EditPhoneNumberPreference objects The last several attributes are for use with the EditText field in the dialog. These attributes are forwarded to that field when the edittext is created. The attributes include: 1. android:singleLine 2. android:autoText 3. android:background -- com.android.phone.EditPhoneNumberPreference android:key="button_voicemail_key" android:title="@string/voicemail_settings_number_label" android:persistent="false" android:dialogTitle="@string/voicemail" phone:confirmMode="confirm" android:singleLine="true" android:autoText="false" / /PreferenceScreen /PreferenceCategory 。。。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。。。。。 /SPAN
因此我们可以在最前面添加一个checkboxPreference 代码如下: SPAN style="FONT-SIZE: 14px"CheckBoxPreference android:key="press_power_end_call_key" android:title="@string/press_power_end_call" android:persistent="false"//SPAN
变成: 代码如下: SPAN style="FONT-SIZE: 14px"PreferenceScreen xmlns:android="/apk/res/android" xmlns:phone="/apk/res/com.android.phone" android:title="@string/call_settings" CheckBoxPreference android:key="press_power_end_call_key" android:title="@string/press_power_end_call" android:persistent="false"/ PreferenceScreen android:key="button_fdn_key" android:title="@string/fdn" android:summary="@string/sum_fdn" android:persistent="false" intent android:action="android.intent.action.MAIN" android:targetPackage="com.android.phone" android:targetClass="com.android.phone.FdnSetting" / /PreferenceScreen 。。。。。。。 。。。。。。。 。。。。。。。/SPAN
在这里有自己定义的: android:title="@string/press_power_end_call" 所以我们要在资源的string.xml文件中添加相关的信息: 在package/app/Phone/res/values/string.xml中添加: string name="press_power_end_call"press_power_end_call/string 在package/app/Phone/res/values-zh-rCN/string.xml中添加: string name="press_power_end_call" msgid="0727396"按电源键挂断电话/string 到这里就算添加好了UI上的东西,接下来就是代码了: 在package/app/Phone/src/com/android/phone下找到CallFeatureSetting.java文件, 在 public boolean onPreferenceChange(Preference preference, Object objValue) 方法中要增加一个如果选择了按power键挂电话的事件: 代码如下: SPAN style="FONT-SIZE: 14px"//add by xxnan else if (preference == press_power_end_call) { //如果勾选就将1存到system表的press_power_end_call中 Settings.System.putInt(getContentResolver(), "press_power_end_call", press_power_end_call.isChecked() ? 1 : 0); //end by xxnan /SPAN
在OnCreate添加如下代码之后: 代码如下: protected void onCreate(Bundle icicle) { super.onCreate(icicle); if (DBG) log("Creating activity"); mPhone = PhoneFactory.getDefaultPhone(); addPreferencesFromResource(R.xml.call_feature_setting); //add by xxnan ContentResolver resolver = getContentResolver(); press_power_end_call= (CheckBoxPreference)findPreference(press_power_end_call_key); press_power_end_call.setOnPreferenceChangeListener(this); // 获的数据库system表里press_power_end_call的值,也就是是否选择了checkboxpreference int press_power_end_call_key=Settings.System.getInt(getContentResolver(), "press_power_end_call",0); //如果得到的值是1,则下次打开setting的话,选项框要勾选 if(press_power_end_call_key==1) press_power_end_call.setChecked(true); //end by xxnan mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); // get buttons PreferenceScreen prefSet = getPreferenceScreen(); mSubMenuVoicemailSettings = (EditPhoneNumberPreference)findPreference(BUTTON_VOICEMAIL_KEY); 。。。。。。。 。。。。。。。
这样就算差不多完成了到获取是否开启这一功能存放和取出到系统数据库中,接下来就是到framework/base/policy/src/com/android /internal/policy/impl下的 PhoneWindowManager.java中去处理了,之前我们就有分析到PhoneWindowManager.java中的 public int interceptKeyBeforeQueueing(long whenNanos, int action, int flags, int keyCode, int scanCode, int policyFlags, boolean isScreenOn)方法来接受按power键的事件,在这个方法里我们只需要添加很少代码: 原来代码是: 代码如下: case KeyEvent.KEYCODE_POWER: { result &= ~ACTION_PASS_TO_USER; if (down) { Log.i("xxnan","xxnan"+"xiaxiangnan"); ITelephony telephonyService = getTelephonyService(); boolean hungUp = if (telephonyService != null) { try { if (telephonyService.isRinging()) { // Pressing Power while there's a ringing incoming // call should silence the ringer. telephonyService.silenceRinger(); } else if ((mIncallPowerBehavior & Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_HANGUP) != 0 && telephonyService.isOffhook()) { // Otherwise, if "Power button ends call" is enabled, // the Power button will hang up any current active call. hungUp = telephonyService.endCall(); } } catch (RemoteException ex) { Log.w(TAG, "ITelephony threw RemoteException", ex); } } interceptPowerKeyDown(!isScreenOn || hungUp); 。。。。。。。。。。。。 。。。。。。。。。。。。
修改后: 代码如下: case KeyEvent.KEYCODE_POWER: { result &= ~ACTION_PASS_TO_USER; if (down) { Log.i("xxnan","xxnan"+"xiaxiangnan"); int end_call_key=Settings.System.getInt(mContext.getContentResolver(), "press_power_end_call",0); //取出数据库中是否打开这一功能的值 Log.i("end_call_key","end_call_key="+end_call_key); ITelephony telephonyService = getTelephonyService(); boolean hungUp = if (telephonyService != null) { try { //如果是电话正在打且开启了这一功能,当按power键就挂掉电话 if (telephonyService.isRinging()&&end_call_key==1) { // Pressing Power while there's a ringing incoming // call should silence the ringer. // telephonyService.silenceRinger(); hungUp=telephonyService.endCall(); } else if ((mIncallPowerBehavior & Settings.Secure.INCALL_POWER_BUTTON_BEHAVIOR_HANGUP) != 0 && telephonyService.isOffhook()) { // Otherwise, if "Power button ends call" is enabled, // the Power button will hang up any current active call. hungUp = telephonyService.endCall(); } } catch (RemoteException ex) { Log.w(TAG, "ITelephony threw RemoteException", ex); } } interceptPowerKeyDown(!isScreenOn || hungUp); 。。。。。。。。。。。 。。。。。。。。。。。
由于我这个开发板上是不能插电话卡的也就没能实验成功,但是原理应该就这样的! 最后修改过的地方都要重新编译,那么我们要在源码下编译app下的Phone以及framework下的policy 最后生成的out/。。。/system/app/Phone.apk和out/。。。。/system/framework/android.policy.jar都要替换 手机里的相同(adb shell 进入你的手机,要有root权限)文件应该就可以了。
来源:/n/6229.html
热门搜索:
剧照风格超酷男模 PS实例教程
itunes怎么同步 如何使用itunes
IE浏览器突然最小化恢复不了大页面
ps效果 打造风景水墨画效果
您可能会发现,经常看到在短视频有人在表演的时候说一些鼓励的话,然后就是双击666,听的您或许摸不清头脑,我就在这里为您解答一下,请给我点赞,让我解答更加有动力。
您是否熟悉我们生活的城市是怎么命名而来的呢?中国城市的命名可是有很深的文化底蕴和历史背景的,你都知道么?我从网上搜集了大量的城市名来源,让您好好的涨涨知识,您准备好了吗?
对于爱美人士来说,美白护肤是不分季节的,即使在冬季,依然需要做好皮肤护理工作。饮食调理是护肤的一项重要措施,那么冬天美白吃什么水果呢?接下来就和我一起来看看了解一下冬季美白吃什么水果好!
产妇顺产以后多久可以洗头发?有很多产妇为了防止自己受寒所以在产后不让自己洗头发,但是又特别难受,这篇文章讲述了产妇顺产以后多长时间可以洗头发,通过这篇文章了解产妇顺产以后多久可以洗头发吧。
阴阳师是现在相当火热的一款手游,最近阴阳师又有了新的更新,玩家可以通过挑战副本来获取妖刀姬樱雨刀舞皮肤。可是的很多人不知道阴阳师妖刀姬副本阵容是怎样的,下面就给大家来详细介绍吧。
阴阳师是现在很火热的一款手机游戏,这款游戏一直在更新完善,受到很多人的追捧,就在最近阴阳师又推出了小鹿男,小鹿男作为SSR式神,很多人对它还不是很了解,下面就给大家来介绍阴阳师小鹿男御魂以及阵容搭配吧。
我们在玩阴阳师完成悬赏任务的时候,都会要求玩家找到各种式神的位置,可是很多人不知道阴阳师跳跳哥哥在哪里刷、哪里多,下面就给大家来详细介绍吧,希望对大家玩游戏有所帮助。
京津冀及周边地区出现持续雾霾天气,很是让孕妈妈们担心。持续的雾霾天气对孕妇产生了很大的影响,那么雾霾天气对孕妇危害有多大?雾霾天气孕妇怎么办?下面的文章详细介绍 了雾霾天气对孕妇的危害,一起来看看吧。
我们知道宝宝刚刚出生的时候口腔里是没有牙齿的,一般孩子在四个月以后慢慢开始出牙,每个孩子的体质不一样,所以出牙的时间也是有所差异的,宝宝出牙的时候身体会出现一些症状,家长们要及时的护理好,下面一起来看看宝宝长牙的症状有哪些。
肚子上的赘肉看上去让人烦恼,尤其是对于想穿裙子的女生来说更是一件郁闷的事情。现在减肥的方法有很多,但是很多人并不知道专门瘦肚子的方法。那么,如何瘦肚子呢?下面就给大家介绍几种减肚子的方法吧。Android中的Home Key,Power Key默认都是由系统的Framework来响应,如果想让自己的应用捕获响应,该怎么做呢?
Home Key比较简单,不涉及系统源码修改:
1. 在此 app 的 main Activity 的 onCreate 方法中加入如下这行:
&span style=&font-size:14&&getWindow().setFlags(FLAG_HOMEKEY_DISPATCHED, FLAG_HOMEKEY_DISPATCHED);&/span&
2. 重写此 main Activity 的 onKeyDown() 方法, 实现 home key 的处理部分, 并 最终&
Power Key稍微麻烦一些,要修改源码:
1: 修改 phoneWindowManager.java 的 interceptKeyBeforeQueueing 方法,在 reference line 后加入下面这段代码
case KeyEvent.KEYCODE_POWER: { //reference line
result &= ~ACTION_PASS_TO_USER; //reference line
// add begin
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
if (activityManager.getRunningTasks(1).get(0).topActivity.getPackageName().equals(&
your_special_package_name&)){
//Please reset the special package name.
result |= ACTION_PASS_TO_USER;
Xlog.d(TAG,&detect power key in special package, pass to user!&)
}catch(NullPointerException e){
Xlog.d(TAG,&ingore a NullPointerException ..&);
2: 同样在此分支内, 找到 else 语句段, 并找到如下位置加入
if (interceptPowerKeyUp(canceled || mPendingPowerKeyUpCanceled)) { //参考行
if(!((result
& ACTION_PASS_TO_USER) == ACTION_PASS_TO_USER)){ //加入行
result = (result & ~ACTION_WAKE_UP) | ACTION_GO_TO_SLEEP; //原有代码
我的GitHub:&/zhoumushui&>&&>&&>&&>&机智云公版开源App-智能插座Android版
机智云公版开源App-智能插座Android版
上传大小:5.3MB
智能云插座
使用机智云开源APP之前,需要先在机智云开发平台创建您自己的产品和应用。
开源App需要使用您申请的AppId、AppSecret以及您自己的产品ProductKey才能正常运行。
具体申请流程请参见:/hc/。
上述信息申请好之后,在代码中请找到&your_app_id&、&your_app_secret&、&your_product_key&字符串做相应的替换。
Gizwits Power Socket Android Demo App
XPGWifiSDK 版本号
这是一款使用XPGWifiSDK的开源代码示例APP,可以帮助开发者快速入手,使用XPGWifiSDK开发连接机智云的物联APP。该APP针对的是智能家电中的插座类产品。包括了以下几点插座常用功能:
? 插座电源的开关
? 插座定时开关
? 插座倒计时开关
? 定时周重复
如果开发者希望开发的设备与以上功能类似,可参考或直接使用该APP进行修改进行快速开发自己的智能家电App。
以下功能是机智云开源App的几个通用功能,除UI有些许差异外,流程和代码都几乎一致:
? 机智云账户系统的注册、登陆、修改密码、注销等功能
? 机智云设备管理系统的AirLink配置入网、SoftAP配置入网,设备与账号绑定、解绑定,修改设备别名等功能
? 机智云设备的登陆,控制指令发送,状态接收,设备连接断开等功能
另外,因为该项目并没有相对应的实体硬件设备供开发者使用,因此还提供了扫描虚拟设备功能,通过扫描机智云实验室内相对应的虚拟设备,可进行设备的绑定和控制等功能。同时可免费申请gokit进行设备的配置入网和绑定等流程。
项目依赖和安装
? XPGWifiSDK的jar包和支持库
登录机智云官方网站的开发者中心,下载并解压最新版本的SDK。
下载后,将解压后的目录拷贝到复制到 Android 项目 libs 目录即可。
? Gokit设备
使用机智云开发的Gokit设备并烧写相对应的产品标识码,可以体验设备配置上线等功能。
? 虚拟设备
使用机智云实验室的相对应虚拟设备,可以体验设备指令收发,状态的获取等功能。
项目工程结构
? 包结构说明
com.gizwits.powersocket
-智能云插座独有代码,包含控制部分和侧边栏部分
com.gizwits.powersocket.activity.control
-智能云插座控制界面activity
com.gizwits.powersocket.activity.slipbar
-智能云插座侧边栏activity
com.gizwits.framework
-机智云设备开源APP框架,包含除控制界面Activity外的代码,暂时机智云实验室中的其他开源APP所用框架一致
com.gizwits.framework.activity
-机智云设备开源APP框架相关activity
com.gizwits.framework.adapter
-机智云设备开源APP框架相关数据适配器
com.gizwits.framework.config
-机智云设备开源APP框架配置类
com.gizwits.framework.entity
-机智云设备开源APP框架实体类
com.gizwits.framework.sdk
-机智云设备开源APP框架操作SDK相关类
com.gizwits.framework.utils
-机智云设备开源APP框架工具类
com.gizwits.framework.widget
-机智云设备开源APP框架自定义控件
com.gizwits.framework.XpgApplication
-机智云设备开源APP框架自定义Application
com.xpg.XXX
-机智云通用开发API
-第三方二维码扫描控件
? 虚拟设备+app使用流程(体验指令发、状态获取等流程)
1.在机智云官网上注册并登录帐号
2.使用机智云实验室里面的智能云插座启动虚拟设备
3.在app上注册并登录帐号
4.通过扫描网页上的二维码添加虚拟设备
5.进入控制界面与虚拟设备进行交互
? gokit+app使用流程(体验配置、绑定实体设备等流程)
1.免费申请gokit,/zh-cn/gokit
2.下载gokit开源代码并按说明替换为智能云插座的产品标识码
3.在app上注册并登录帐号
4.通过我要配置gokit按钮,使用Airlink或SoftAP模式配置gokit入网
5.绑定gokit
6.进入控制界面...展开收缩
综合评分:0(0位用户评分)
所需积分:2
下载次数:7
审核通过送C币
创建者:xiaoyaoyou1212
创建者:nigelyq
创建者:jin80506
课程推荐相关知识库
上传者其他资源上传者专辑
移动开发热门标签
VIP会员动态
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:0
可兑换下载积分:0
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
机智云公版开源App-智能插座Android版
会员到期时间:
剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:更多频道内容在这里查看
爱奇艺用户将能永久保存播放记录
过滤短视频
暂无长视频(电视剧、纪录片、动漫、综艺、电影)播放记录,
使用您的微博帐号登录,即刻尊享微博用户专属服务。
使用您的QQ帐号登录,即刻尊享QQ用户专属服务。
使用您的人人帐号登录,即刻尊享人人用户专属服务。
按住视频可进行拖动
把视频贴到Blog或BBS
当前浏览器仅支持手动复制代码
视频地址:
flash地址:
html代码:
通用代码:
通用代码可同时支持电脑和移动设备的分享播放
收藏成功,可进入查看所有收藏列表
方式1:用手机看
用爱奇艺APP或微信扫一扫,在手机上继续观看:
powerdesigner 16.5 license key
方式2:一键下载至手机
限爱奇艺安卓6.0以上版本
使用微信扫一扫,扫描左侧二维码,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:&&
设备搜寻中...
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
连接失败!
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
部安卓(Android)设备,请点击进行选择
请您在手机端下载爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:&&
爱奇艺云推送
请您在手机端登录爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
180秒后更新
打开爱奇艺移动APP,点击“我的-扫一扫”,扫描左侧二维码进行登录
没有安装爱奇艺视频最新客户端?
爸爸去哪儿2游戏 立即参与
powerdesigner 16.5 license key
播放量数据:
6,200人已订阅
你可能还想订阅他们:
{{#needAdBadge}} 广告{{/needAdBadge}}
&正在加载...
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制
安装爱奇艺视频客户端,
马上开始为您下载本片
5秒后自动消失
&li data-elem="tabtitle" data-seq="{{seq}}"& &a href="javascript:void(0);"& &span>{{start}}-{{end}}&/span& &/a& &/li&
&li data-downloadSelect-elem="item" data-downloadSelect-selected="false" data-downloadSelect-tvid="{{tvid}}"& &a href="javascript:void(0);"&{{pd}}&/a&
选择您要下载的《
色情低俗内容
血腥暴力内容
广告或欺诈内容
侵犯了我的权力
还可以输入
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制

我要回帖

更多关于 android power键处理 的文章

 

随机推荐