Android 传入Sip呼叫和应答时唤醒设备

Android 传入Sip呼叫和应答时唤醒设备,android,broadcastreceiver,sip,Android,Broadcastreceiver,Sip,当应用程序仍在后台时,窗口标志非常有效,我可以唤醒屏幕并触发InComingCallActivity接收SipCalls 我的问题是当用户关闭应用程序时如何唤醒设备,以及当应用程序仍在后台时如何实现同样的唤醒(即当BroadcastReceiver唤醒设备收到来电事件并触发相应的意图时)。以下是唤醒设备和打开意图的正确方法。请帮助 Window window = this.getWindow(); window.addFlags(LayoutParams.FLAG_DISMISS

当应用程序仍在后台时,窗口标志非常有效,我可以唤醒屏幕并触发
InComingCallActivity
接收SipCalls

我的问题是当用户关闭应用程序时如何唤醒设备,以及当应用程序仍在后台时如何实现同样的唤醒(即当
BroadcastReceiver
唤醒设备收到来电事件并触发相应的意图时)。以下是唤醒设备和打开意图的正确方法。请帮助

    Window window = this.getWindow();
    window.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
    window.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
    window.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);
下面是我的
IncomingCallReceiver
代码,我在这门课上调用
InComingCallActivity
来接听和拒绝来电

public class IncomingCallReceiver extends BroadcastReceiver {
/**
 * Processes the incoming call, answers it, and hands it over to the IncommingCallActivity.
 * 
 * @param context
 *            The context under which the receiver is running.
 * @param intent
 *            The intent being received.
 */
String userName = null;
public SipAudioCall incomingCall = null;
SessionManager sessionManager = SessionManager.getSessionInstance();

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

    SipAudioCall incomingCall = null;
    // sipReg = new SipRegisteration(context);

    try {
        SipAudioCall.Listener listener = new SipAudioCall.Listener() {
            @Override
            public void onRinging(SipAudioCall call, SipProfile caller) {
                super.onRinging(call, caller);
            }

            @Override
            public void onError(SipAudioCall call, int errorCode, String errorMessage) {
                super.onError(call, errorCode, errorMessage);
            }

            @Override
            public void onCallEnded(SipAudioCall call) {
                super.onCallEnded(call);
            }

            @Override
            public void onCallEstablished(SipAudioCall call) {
                super.onCallEstablished(call);
            }
        };
        incomingCall = sessionManager.mSipManager.takeAudioCall(intent, listener);

        userName = incomingCall.getPeerProfile().getDisplayName();
        if (userName == null) {
            userName = incomingCall.getPeerProfile().getUserName();
        }

        showIncomingCall(intent, context);
        sessionManager.mCall = incomingCall;
        System.out.println(incomingCall);

        // sip..updateStatus(incomingCall);

    } catch (Exception e) {

        if (incomingCall != null) {
            incomingCall.close();
        }
        Log.e("IncomingWakeful service", "" + e);
    }
}

/**
 * Handling incoming call and passing it to the IncomingCalActivity
 * 
 * @param intent
 * @param context
 */

private void showIncomingCall(Intent intent, Context context) {

    Intent intentCall = new Intent(context, IncomingCallActivity.class);
    intentCall.putExtra("INCALL_USER_NAME", userName);
    context.startActivity(intentCall);

}

public void answerIncomingCall() {

    try {
        incomingCall.answerCall(30);
        incomingCall.startAudio();
        if (incomingCall.isMuted()) {
            incomingCall.toggleMute();

        }

    }

    catch (Exception e) {
        System.out.println(e.toString());
    }

}

public void rejectIncomingCall() {

    try {
        if (incomingCall != null) {

            incomingCall.endCall();
            incomingCall.close();

        }

    } catch (Exception e) {

        System.out.println(e.toString());
    }

}
}

清单文件和权限

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
>
<uses-permission android:name="android.permission.USE_SIP" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.CONFIGURE_SIP" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature
    android:name="android.hardware.sip.voip"
    android:required="true" />
<uses-feature
    android:name="android.software.sip"
    android:required="true" />
<uses-feature
    android:name="android.software.voip.sip"
    android:required="true" />
<uses-feature
    android:name="android.hardware.telephony"
    android:required="false" />
<uses-feature
    android:name="android.hardware.wifi"
    android:required="true" />
<uses-feature
    android:name="android.hardware.microphone"
    android:required="true" />

>