android锁屏

最近纠结于锁屏,参考资料可以知道实现思路:

 

第一部分:

 

http://stackoverflow.com/questions/4116001/android-lock-screen-widget


这里就不累述了。上面是摘自stackoverflow的一段评论。

 

现在问题,也是大家都面临的问题就是home键的屏蔽了。api中有这么个介绍:

 

boolean android.app.KeyguardManager.inKeyguardRestrictedInputMode()

If keyguard screen is showing or in restricted key input mode (i.e. in keyguard password emergency screen). When in such mode, certain keys, such as the Home key and the right soft keys, don't work.

See Also:
android.view.WindowManagerPolicy.inKeyguardRestrictedKeyInputMode
Returns:
true if in keyguard restricted input mode.

When in such mode, certain keys, such as the Home key and the right soft keys, don't work,

这句话很纠结,don't work.是说那些键不适用这个函数,还是说那些键也会屏蔽掉。真够蛋疼的。

有谁搞定了,分享下。我也在努力搞定。搞定了分享给大家。

第二部分:

 

 上个项目已经完成,现在接着调研锁屏,把目前的消息广播给大家:

FLAG_SHOW_WHEN_LOCKED

FLAG_DISMISS_KEYGUARD 

这两个属性好像也可以实现锁屏功能,但是在2.0测试的时候好像没有作用,点击home还是可以回到桌面。我之前一直纠结于把键盘上锁,这样就可以实现锁住home了。但是当我在oncreate里使用reenablekeyboard时,整个activity压根就不会显示了,程序运行了,但是activity不会把组件显示出来。但是此时其他键盘还可以屏蔽掉,但是home没法弄掉。如果可以实现上锁,那么1.6下就可以实现实现屏蔽Homel了。原因继续寻找中。在网上看到一个哥们有实现屏蔽home的例子,不过是在2.0之后才会有用,我查过源码1.6也有,但好像是没法给我们用。

原文是这样的:

 

 

@Override
	public void onAttachedToWindow() {
		// TODO Auto-generated method stub
		this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
		super.onAttachedToWindow();
	}

 我建议用这种方式,用了就知道为什么了

 

@Override
	public void onAttachedToWindow() {
		// TODO Auto-generated method stub
		this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG);
		super.onAttachedToWindow();
	}

 这种方式的确可以屏蔽home,而且可以打印出捕获的home的code。可以试试,目前这种方式可行,原因自己可以查看源码,有需要的哥们可以试试,我正在寻找更靠谱的办法,可以实现在更低版本里同样有用。希望大牛们也提出更好的解决方案。

第二部分就分享到这了,未完待续。。。

 

第三部分:

    时间过得很快,让我来把之前没写完的东西写完吧。这次主要写锁屏的屏蔽home吧,也许我们之前一直都太在意home键了。现在推荐一种新的做法。

   使用WindowManager。

  step1 :

      获得:

      WindowManager window = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);

  step2:

      设置参数

     WindowManager.LayoutParams param = new WindowManager.LayoutParams();

     param.type = 2010;//2003也ok

    ..........

   诸多参数请自己添加,不明白的请网上搜索资料或者api。这里就不提供介绍了。

    step3:

    把自己的view添加到窗口里:

   window.addView(view, param);

 

 

现在可以测试了,主要原理就是就是将自己的界面设置为系统及窗口。各位要是有更好的思路,不妨一起讨论。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值