安卓手机皮套功能的开启

      目前的安卓智能手机生产厂商,除了硬件设计、配置及外观的设计外,还需要相应软件的支持,而软件方面主要是根据具体硬件的配置和客户需求在安卓原生态系统上进行修改与优化,皮套功能就是其中之一,也是近几年安卓智能手机新添加的一种功能。

    皮套功能说白了就是在装有翻盖带视窗皮套的手机上,在不翻开皮套盖时,通过在视窗上显示的界面直接进行一些点触操作,可直接查看或打开手机的一些功能,比如说时间日历、通话记录、短信、音乐等。这些功能的实现首先需要一些硬件支持:屏幕TP的磁力感应特性和带磁性的开窗皮套。

    皮套功能的引入,除了上述硬件条件外,还需要在软件上做相应的配置与开发,本文以Android 5.1系统为例主要讲一下软件(安卓系统源码)上的配置:

1、修改HALL开关宏定义:

源码位置:alps/kernel-3.10/drivers/misc/mediatek/mach/平台名称/系统版本名称/keypad/mtk_kpd.h

修改语句:#if defined(CONFIG_MODULE_HALL_SUPPORT)

2、驱动层打开HALL开关:

源码位置:alps/device/hexing/系统版本分支名称/ProjectConfig.mk

修改语句:平台大写英文简称_HALL_SUPPORT = yes

源码位置:alps/device/hexing/系统版本分支名称/系统版本名称_debug_defconfig

修改语句:CONFIG_MODULE_HALL_SUPPORT = y

源码位置:alps/device/hexing/系统版本分支名称/系统版本名称_defconfig

修改语句:CONFIG_MODULE_HALL_SUPPORT = y

3、上层打开HALL开关:

源码位置:alps/frameworks/base/core/res/res/values/config.xml

修改语句:<bool name="config_lidControlsSleep">true</bool>

4、针对开发皮套应用的相关配置:

源码位置:alps/build/target/product/core.mk

修改语句:在应用名称列末尾添加SmartCover(要开发的皮套应用包名)

源码位置:alps/device/hexing/系统版本分支名称/ProjectConfig.mk

修改语句:SMART_COVER_SUPPORT = yes

源码位置:alps/device/mediatek/common/device.mk

修改语句:  ifeq ($(strip $(SMART_COVER_SUPPORT)), yes)//添加皮套功能支持

修改语句:  PRODUCT_PACKAGES += SmartCover//指定皮套应用名

修改语句:  PRODUCT_PROPERTY_OVERRIDES += ro.com.android.smartcover=1//指定皮套应用包名

  endif

源码位置:alps/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java

ActivityManager am = (ActivityManager) mContext.getSystemService("activity");                

ComponentName cn = am.getRunningTasks(1).get(0).topActivity;                

String className = cn.getClassName();

修改语句:              if(SystemProperties.get("ro.com.android.smartcover").equals("1"))//验证皮套应用包名

              {

修改语句:                   am.forceStopPackage("com.android.smartcover");

              }                

mSLCMainActivityState =0 ;        

}


private void startSmartLidActivity() {                

keyguardUnLock();                

Intent i = new Intent();

               ComponentName cn;

修改语句:              if(SystemProperties.get("ro.com.android.smartcover").equals("1"))//验证皮套应用包名

              {

修改语句:                  cn = new ComponentName("com.android.smartcover", "com.android.smartcover.MainActivity");//皮套应用入口类

              }                

i.setComponent(cn);                

if (0 == mSLCMainActivityState)                 

i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    至此,皮套功能开启的系统源码配置已经完成,在上面的前三步主要是开启HALL功能即屏幕的磁力感应,第四步中,涉及到了针对皮套应用的相关配置,在这里,皮套应用需要根据皮套开窗大小形状单独开发,包括界面的设计与功能的添加,再添加到源码中编译。

    当这些软硬件条件都具备后才能实现完整的皮套应用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彧侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值