即使在深度睡眠中,也要在pjsua2 voip应用程序中保持sip注册?

时间:2017-09-17 08:17:12

标签: android voip pjsip

我有一个带有pjsua2开源项目的android应用程序。它可以正常传入和传出呼叫。但是当安卓进入深度睡眠时,sip注册无法工作。我正在使用服务进行注册。但是它没有重新注册..

 accCfg.getRegConfig().setRetryIntervalSec(600);
 accCfg.getRegConfig().setFirstRetryIntervalSec(15);

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

当android进入深度睡眠时,android os几乎可以杀死所有服务和其他后台任务。因此,为了保持sip注册,我相信AlarmManager将是一个非常好的选择。示例将每5分钟唤醒你的应用程序..然后重新注册那个时间......

public void setAlarmManagerFroDeepSleep() {

    int interval = 1000 * 60 * 5;

    Intent alarmIntent = new Intent(this, AlarmReceiver.class);
    pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0);
    AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    /* Repeating on every 5 minutes interval */
    manager.setRepeating(AlarmManager.RTC_WAKEUP, interval,
            interval, pendingIntent);
}

以下是AlarmReciever类的示例..

public class AlarmReceiver extends BroadcastReceiver {

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

    Log.e("Alerm Manager", "I'm running");

    if(Connectivity.isConnected(context)) {
        try {
            //make re-register here....
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
  }
}