我有一个带有pjsua2开源项目的android应用程序。它可以正常传入和传出呼叫。但是当安卓进入深度睡眠时,sip注册无法工作。我正在使用服务进行注册。但是它没有重新注册..
accCfg.getRegConfig().setRetryIntervalSec(600);
accCfg.getRegConfig().setFirstRetryIntervalSec(15);
任何帮助将不胜感激。
答案 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();
}
}
}
}