android Settings添加多击事件

          android每个版本都保函开发者无处不在的调侃的味道,今天浅谈多击“固件版本”preference之后,触发的机器人图片或动画。

Android4.4版本的代码实现如下

if (preference.getKey().equals(KEY_FIRMWARE_VERSION)) {                                 
             System.arraycopy(mHits, 1, mHits, 0, mHits.length-1);                               
             mHits[mHits.length-1] = SystemClock.uptimeMillis();                                 
             if (mHits[0] >= (SystemClock.uptimeMillis()-500)) {                                 
                 Intent intent = new Intent(Intent.ACTION_MAIN);                                 
                 intent.setClassName("android",                                                  
                         com.android.internal.app.PlatLogoActivity.class.getName());             
                 try {                                                                           
                     startActivity(intent);                                                      
                 } catch (Exception e) {                                                         
                     Log.e(LOG_TAG, "Unable to start activity " + intent.toString());            
                 }                                                                               
             }                                                                                   
}

       多击的判断部分在mHits[0] >= (SystemClock.uptimeMillis()-500),首先System.arraycopy实现的功能数组的内部元素自拷贝,每次mHits[0]都被mHits[1]覆盖,从而判断是否是按连击事件处理。

工作中需要开启一个多击触发app的暗门,从而仿照此法加了对KEY_KERNEL_VERSION的多击处理如下:

if (preference.getKey().equals(KEY_KERNEL_VERSION)) {                            
             System.arraycopy(mHits, 1, mHits, 0, mHits.length-1);                               
             mHits[mHits.length-1] = SystemClock.uptimeMillis();                                 
             if (mHits[0] >= (SystemClock.uptimeMillis()-500)) {                                 
                 Intent mIntent = new Intent();                                                  
                 ComponentName comp = new ComponentName("com.marvell.factorytest",               
                         "com.marvell.factorytest.Main");                                        
                 mIntent.setComponent(comp);                                                     
                 mIntent.setAction("android.intent.action.VIEW");                                
                                                                                                 
                 try {                                                                           
                     startActivity(mIntent);                                                     
                 } catch (Exception e) {                                                         
                     Log.e(LOG_TAG, "Unable to start activity " + mIntent.toString());           
                 }                                                                               
             }                                                                                   

}

        此番多击KEY_KERNEL_VERSION preference触发工厂测试app(一个隐藏的app)的MainActivity,但试了多次,发现无法触发,后来追踪KEY_FIRMWARE_VERSION发现,该项多设置了findPreference(KEY_FIRMWARE_VERSION).setEnabled(true); 抱着尝试的态度添加了findPreference(KEY_KERNEL_VERSION).setEnabled(true);果真OK了。原来此项setEnable(true)是设置控件可用,在此做一记录,加深印象,同时给为搞定的同仁一个小提示。O(∩_∩)O~




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值