radiusnetworks ibeacon服务后台触发器在android

时间:2015-04-30 12:27:23

标签: android ibeacon-android

我正在使用radiusnetworks的ibeacon服务。但它总是在第一秒扫描下一个munites。我怎么能每10秒触发一次?

触发beaconserviceutility:

private void startBackgroundScan() {

alarm.setInexactRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(), 6000, pintent);

    context.startService(iService);
}
beaconservice的通知:

private static void generateNotification(Context context, String message) {

    Intent launchIntent = new Intent(context, MonitoringActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
            | Intent.FLAG_ACTIVITY_SINGLE_TOP);

    ((NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE)).notify(
            0,
            new NotificationCompat.Builder(context).setWhen(System.currentTimeMillis())
                    .setSmallIcon(R.drawable.ic_launcher).setTicker(message)
                    .setContentTitle(context.getString(R.string.app_name)).setContentText(message)
                    .setContentIntent(PendingIntent.getActivity(context, 0, launchIntent, 0)).setAutoCancel(true)
                    .build());

}
我每6秒触发一次,但它总是在下一个munite运行。例如,它在13:00:00工作,下一次扫描在13:01:00。

如何改变它并每隔10秒触发一次?感谢

1 个答案:

答案 0 :(得分:0)

如果您使用Android Beacon Library,则无需设置任何警报或计时器,以使其定期在后台扫描信标。它会自动完成,您可以配置频率。

您可以在此处的“在后台启动应用”部分中看到如何进行设置的示例:http://altbeacon.github.io/android-beacon-library/samples.html

为了自定义它以在后台每隔10秒对信标进行两秒扫描,您修改上面引用的示例代码以添加下面的三行:

    Region region = new Region("com.example.myapp.boostrapRegion", null, null, null);
    regionBootstrap = new RegionBootstrap(this, region);
    BeaconManager manager = BeaconManager.getInstanceForApplication(this);
    manager.setBackgroundBetweenScanPeriod(10000l); // 10 seconds
    manager.setBackgroundScanPeriod(2000l); // 2 seconds

您可以在此处详细了解如何自定义扫描间隔:http://altbeacon.github.io/android-beacon-library/battery_manager.html