【问题标题】:Turn off device screen when incoming call in android在android中来电时关闭设备屏幕
【发布时间】:2014-03-28 17:49:33
【问题描述】:

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

我试过了:

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();

        }
    }
}

有人可以帮忙吗?

【问题讨论】:

    标签: android


    【解决方案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);
    

    【讨论】:

    • 我已经检测到来电事件。但我没有成功关闭设备屏幕。我更新了我的问题。
    • 我试过这段代码,但得到这个错误:方法 getWindow() 未定义 MyCallReceiver 类型。
    • 你好@mistrfu你好吗?
    猜你喜欢
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    相关资源
    最近更新 更多