Android L上锁屏界面滑动不解锁
2016-01-14 15:56
549 查看
[DESCRIPTION]
Android L上, 锁屏分为两个界面, 一个是可以显示notification的界面(称为Notification Keyguard), 另一个是在Notification Keyguard界面向上滑之后出现输入密码的界面(称为bouncer). 只有在设置为安全锁(非滑动锁)的情况下, 才会显示bouncer界面.
对于正常情况下(后台不是很繁忙的情况)向上滑动不解锁的情况可先按如下方法确定下原因.
[SOLUTION]
在Notification Keyguard界面上滑动时, 它有去检查滑动的Y-距离长度, 只有大于一定的阈值才会触发解锁.
这个阈值是在如下文件中定义的, 它是用下面的值乘以一个因子(1.5)之后得到这个Y-距离.
alps/frameworks/base/packages/SystemUI/res/values/Dimens.xml
<dimen name="unlock_falsing_threshold">80dp</dimen>
对于在Notification Keyguard界面向上滑动没有解锁或者没有显示出bouncer界面的情况, 可如下加log验证是不是因为滑动距离小于阈值引起.
添加如下log后, 在问题时间点搜索log "onTrackingStarted begin" 和 "onTrackingStopped begin", 这两句log是成对出现的, 在手指按下在屏幕上开始滑时会打印"onTrackingStarted begin", 松开离开屏幕时会打印"onTrackingStopped begin", 搜索到这对log后, 寻找离"onTrackingStopped begin"最近的关于"-h="的log, "-h"表示的就是滑动的高度, 检查下打印的这个高度和阈值的比较.
如果在正常情况下, 向上滑动解锁体验不是很好的原因是由于这个高度小于阈值所致, 可适当修改将这个阈值改小. 如果不是这个原因导致不解锁, 请联系MTK技术人员.
PhoneStatusBar.java
public void onTrackingStarted(){
Log.d(TAG, "onTrackingStarted begin"); //添加这行
...
}
public void onTrackingStopped(){
Log.d(TAG, "onTrackingStopped begin"); //添加这行
...
}
PanelView.java
public boolean onTouchEvent(MotionEvent event){
...
case MotionEvent.ACTION_MOVE:
...
Log.d(TAG, "-h="+(-h)+" getFalsingThreshold()="+getFalsingThreshold()); //添加这行
if(-h >= getFalsingThreshold()){
mTouchAboveFalsingThreshold = true;
}
...
...
}
Android L上, 锁屏分为两个界面, 一个是可以显示notification的界面(称为Notification Keyguard), 另一个是在Notification Keyguard界面向上滑之后出现输入密码的界面(称为bouncer). 只有在设置为安全锁(非滑动锁)的情况下, 才会显示bouncer界面.
对于正常情况下(后台不是很繁忙的情况)向上滑动不解锁的情况可先按如下方法确定下原因.
[SOLUTION]
在Notification Keyguard界面上滑动时, 它有去检查滑动的Y-距离长度, 只有大于一定的阈值才会触发解锁.
这个阈值是在如下文件中定义的, 它是用下面的值乘以一个因子(1.5)之后得到这个Y-距离.
alps/frameworks/base/packages/SystemUI/res/values/Dimens.xml
<dimen name="unlock_falsing_threshold">80dp</dimen>
对于在Notification Keyguard界面向上滑动没有解锁或者没有显示出bouncer界面的情况, 可如下加log验证是不是因为滑动距离小于阈值引起.
添加如下log后, 在问题时间点搜索log "onTrackingStarted begin" 和 "onTrackingStopped begin", 这两句log是成对出现的, 在手指按下在屏幕上开始滑时会打印"onTrackingStarted begin", 松开离开屏幕时会打印"onTrackingStopped begin", 搜索到这对log后, 寻找离"onTrackingStopped begin"最近的关于"-h="的log, "-h"表示的就是滑动的高度, 检查下打印的这个高度和阈值的比较.
如果在正常情况下, 向上滑动解锁体验不是很好的原因是由于这个高度小于阈值所致, 可适当修改将这个阈值改小. 如果不是这个原因导致不解锁, 请联系MTK技术人员.
PhoneStatusBar.java
public void onTrackingStarted(){
Log.d(TAG, "onTrackingStarted begin"); //添加这行
...
}
public void onTrackingStopped(){
Log.d(TAG, "onTrackingStopped begin"); //添加这行
...
}
PanelView.java
public boolean onTouchEvent(MotionEvent event){
...
case MotionEvent.ACTION_MOVE:
...
Log.d(TAG, "-h="+(-h)+" getFalsingThreshold()="+getFalsingThreshold()); //添加这行
if(-h >= getFalsingThreshold()){
mTouchAboveFalsingThreshold = true;
}
...
...
}
相关文章推荐
- android在假设绘制自己定义的bitmap,然后返回给ImageView
- Android 监听SMS短信
- Android Hot patch 技术:Dexposed-来自阿里手机淘宝部门的开源项目
- AndroidStudio添加so文件
- Android Studio 加载.so文件
- Android性能优化典范(1)(2)(3)
- Android应用开发allowBackup敏感信息泄露的一点反思
- Android+JNI+Opengl图像应用开发揭秘---序言
- Android签名机制之---签名验证过程详解
- Android5.1 MTK平台实现桌面图标显示未读数量
- Android系统启动过程浅谈
- android monkey自动化测试
- Android多线程之AsyncTask源码分析
- Android 编程下 Touch 事件的分发和消费机制
- 手把手带你画一个 时尚仪表盘 Android 自定义View
- android logcat中显示当前类名函数名和行数信息
- android scrollview 嵌套listview
- android 获取activity的根view
- Android之史上最全最简单最有用的第三方开源库收集整理
- android Notification分析——你可能遇到的各种问题