2014-03-28 85 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