2014-03-28 84 views
-1

来电时我想在来电时关闭设备屏幕。关闭设备屏幕在android

我想:

Turn off screen on Android

How to turn screen off or send device to sleep

Android: How to turn screen on and off programmatically?

Android - Turn off display without triggering sleep/lock screen - Turn on with Touchscreen

How to distinguish the screen on/off status while incoming call?

其实我没有Window对象在我的来电接收器中关闭。

这里是我的代码:

public class MyCallReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
       TelephonyManager.EXTRA_STATE_RINGING)) { 
      // This code will execute when the phone has an incoming call 

      // get the phone number 
      String incomingNumber = intent 
        .getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); 
      Toast.makeText(context, "Call from:" + incomingNumber, 
        Toast.LENGTH_LONG).show(); 

      // I tried code here 


     } else if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
       TelephonyManager.EXTRA_STATE_IDLE) 
       || intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
         TelephonyManager.EXTRA_STATE_OFFHOOK)) { 
      // This code will execute when the call is disconnected 
      Toast.makeText(context, "Detected call hangup event", 
        Toast.LENGTH_LONG).show(); 

     } 
    } 
} 

任何人可以帮助PLZ。

回答

1

这是至少两部分问题,首先你需要检测来电,然后空白屏幕,后来我想你也会想把它弄掉。

您需要做的第一件事就是检测来电。所以我建议你从那里开始。 Here is a blogpost解释它。

这里是一个指向PhoneStateListener的Android文档的链接。

你可以通过降低亮度来降低屏幕亮度,例如this问题。示例代码:

WindowManager.LayoutParams layoutParam = getWindow().getAttributes(); 
oldBrightness = android.provider.Settings.System.getInt(getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS)/255f; 
layoutParam.screenBrightness = 0; 
layoutParam.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON; 
getWindow().setAttributes(layoutParam); 
+0

我已经检测到传入的电话事件。但是我没有成功地关闭设备屏幕。我更新我的问题。 – DreamsNeverDie

+0

我试过这个代码,但得到这个错误:方法getWindow()是未定义的类型MyCallReceiver。 – DreamsNeverDie

+1

你好@mistrfu你好吗? – DreamsNeverDie