通常有距离传感器的手机,在通话中,如果贴近脸不,距离传感器会起作用,使屏幕熄屏以防止误操作。我现在的需求是,在这种情况下(接收到CALL_STATE_OFFHOOK广播时),需唤醒屏幕,如何实现?下面的代码无效,PhoneApp熄屏后,还做了其他的处理,使得下面代码不能电量屏幕。
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
WakeLock wl= pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP |
PowerManager.SCREEN_DIM_WAKE_LOCK |
PowerManager.ON_AFTER_RELEASE, "TAG");
wl.acquire();我想到两个方向:
1、利用上述类似的方法点亮屏幕。
请问上述代码该如何修改?
2、进入我的程序前,更改手机“通话设置”中“通话中自动关闭屏幕”选项,突出程序时再改回来。
请问如何修改“通话中自动关闭屏幕”设置?距离传感器通话中唤醒屏幕
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
WakeLock wl= pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP |
PowerManager.SCREEN_DIM_WAKE_LOCK |
PowerManager.ON_AFTER_RELEASE, "TAG");
wl.acquire();我想到两个方向:
1、利用上述类似的方法点亮屏幕。
请问上述代码该如何修改?
2、进入我的程序前,更改手机“通话设置”中“通话中自动关闭屏幕”选项,突出程序时再改回来。
请问如何修改“通话中自动关闭屏幕”设置?距离传感器通话中唤醒屏幕
2.需要修改data/datacom.android.provider.settings/db里面相应的键值.通过ContentProvider去修改.
第二个我也想过,但是找不到“通话中自动关闭屏幕”在db中具体是哪个键值。
你是做第三方应用的还是有系统源码?
如果有系统源码的话就比较好改的,如果只是第三方应用的话可能不太好弄
ContentResolver r = context.getContentResolver();
String callscreenoff = Settings.System.getString(r, "proximity_sensor");
if(callscreenoff.equals("1")){
Settings.System.putString(r, "proximity_sensor", "0");
}
这个会把p-sensor关掉了,记得之后要改回来哦,要不然p-sensor就无效了
这个会把p-sensor关掉了,记得之后要改回来哦,要不然p-sensor就无效了
正解!