Altbeacon-锁定和拔下电源线时,Samsung Galaxy s9不在预期范围内的信标范围

时间:2018-09-09 03:45:35

标签: altbeacon

我正在使用Altbeacon库并实现前台服务以实现更快的测距。我的应用程序旨在在范围内匹配信标时向用户发送通知。目标是无论如何,手机锁定,解锁,应用程序打开,应用程序关闭以及从任务管理器清除应用程序,都将发生这种情况。

该应用程序可以在运行Android 8.0的Samsung Galaxy s7上正常运行。我在运行Android 8.0的Samsung Galaxy s9上遇到的问题是按下电源按钮以锁定手机。手机不再像以前那样应该经常接收通知,就像前台信标扫描被阻止一样。

发送信标的设备可以以25毫秒的速率连续发送新信标12秒钟,出于测试目的,设置为在12秒钟结束时重复该过程。用户应该每12秒接收一次新的通知,但是s9可能只收到1条通知,然后可能会错过5条通知。 s7将按预期接收每个通知。

将背景扫描速率设置为扫描1.1秒,然后等待10秒。我希望我可以提供有关该问题的日志,但是当电话插入时不会发生该问题,因此我无法确切指出为什么s9不会以这种方式表现s9的原因。我认为它一定是打do睡模式或睡眠模式,因为插入电源线后,s9会按预期接收所有通知。那是我能够测试的仅有的两部手机,所以我不知道s8是否也有问题。

由电源按钮锁定时,可能导致s9的范围与s7不同吗?如果电话只是自己进入睡眠状态,则其作用与按电源按钮使其进入睡眠状态相同。下面的代码段。

谢谢!

    mBeaconManager = BeaconManager.getInstanceForApplication(this.getApplicationContext());
    set_forground_notification(true);
    logManager.setLogger(Loggers.verboseLogger());
    logManager.setVerboseLoggingEnabled(true);
    mBeaconManager.setAndroidLScanningDisabled(false); // Setting to false allows low latency scanning
    mBeaconManager.setRegionStatePersistenceEnabled(false);
    mBeaconManager.setBackgroundScanPeriod(1100);
    mBeaconManager.setForegroundScanPeriod(1100);
    mBeaconManager.setForegroundBetweenScanPeriod(2000);
    mBeaconManager.setBackgroundBetweenScanPeriod(10000);
    mBeaconManager.setBackgroundMode(true); // this is being set to true here so that on app termination
    // or reboot when the app starts back up because of the service, the scanning period
    // is set to background and not foreground

private void set_forground_notification(boolean post)
{
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        if (post) {

            String CHANNEL_ID = "Scanning_for_device";
            CharSequence name = "Scanning_for_device";
            NotificationChannel mChannel = new NotificationChannel(CHANNEL_ID, name, android.app.NotificationManager.IMPORTANCE_HIGH);
            mChannel.setShowBadge(false);
            mChannel.setSound(null,null);

            NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this, CHANNEL_ID)
                    .setSmallIcon(R.drawable.ic_foreground_logo)
                    .setContentTitle("Scanning for Device")
                    .setSound(null)
                    .setOnlyAlertOnce(true);

            Intent intent = new Intent(this, MainActivity.class);
            PendingIntent pendingIntent = PendingIntent.getActivity(
                    this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT
            );

            mBuilder.setContentIntent(pendingIntent);

            android.app.NotificationManager mNotificationManager =
                    (android.app.NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
            mNotificationManager.createNotificationChannel(mChannel);
            // sends foreground notification and starts foreground scanning?
            mBeaconManager.enableForegroundServiceScanning(mBuilder.build(), 457);
        } else {
            // removes foreground notification and stops foreground scanning?
            mBeaconManager.disableForegroundServiceScanning();
        }
    }
}

0 个答案:

没有答案