​Android在手机处于静止状态下,能否检测到屏幕朝上还是朝下?

cicino 发布于 2013/11/25 15:47
阅读 1K+
收藏 0
中午需要在办公室睡午觉,但是突兀的电话铃声常常打断美梦。即便有人用了“高大上”的“来电翻转静音”,依然会由于来电时自己睡着了来不及翻转影响到别人。


想实现这样的需求:


睡午觉之前,将手机屏幕朝下放置,在睡午觉的过程中,来电没有声音;睡醒午觉之后,将手机翻转,使得屏幕朝上,来电铃音就正常了。


之前想想感觉很简单:开机自启动一个服务,检测传感器,当onSensorChanged()方法检测到屏幕翻转角度大于180度时,将铃音模式设置为RINGER_MODE_SILENT 。但是,这样一直检测传感器,耗电量是非常惊人的。


换种思路,请问下各位大神,能不能在来电时的广播事件OnRecevier()里面判断手机屏幕朝向,如果朝下,那么关闭铃音? 手机在静止状态下,能否检测到屏幕朝上还是朝下?


谢谢!
加载中
0
Gillian_Male
Gillian_Male
可否在电话来的时候再去判定传感器呢?我不太懂哈,提个想法而已
0
c
cicino

引用来自“Gillian_Male”的答案

可否在电话来的时候再去判定传感器呢?我不太懂哈,提个想法而已
这样就需要在来电的时候翻转手机来实现静音,就是很普通的“来电翻转静音”了。
0
fneg
fneg
可以的
0
头号大宝贝
头号大宝贝

1,监听器,监听来电。

2,如果有来电,通过传感器来判断。

3,判断传感器的Z值。-10朝上,10朝下。

4,该怎么操作你懂得……

c
cicino
哥们儿请问一下你这样设计和来电翻转静音有什么区别呢? 还有,传感器Z值不需要在onSensorChanged()方法里面才能取到吗?谢谢!
0
nevans
nevans

你尝试了你这个思路吗?我查了一下资料,貌似如果不注册Listener,是无法获得sensor的,正常情况下,你的手机应该大部分时间是静止的,所以这个事件就不会被多次执行,耗电量大的问题没想象中那么严重。

另外,这种需求是有的,但情况比较复杂,你要考虑当屏幕朝下时手机当前所处的环境,是放在台上,还是放在包里,放在包里,又会不会在走路,导致事件多次传递。翻转后完全静音,那用户忘记翻回来,又会错过电话,这是让人纠结的地方。

返回顶部
顶部