前台服务的安卓游戏震动

问题描述 投票:0回答:1

我正在做什么。

我正在用Android Beacon库制作一个应用程序。我使用的是 RegionBootstrap 用于实现前景测距和Altbeacons的传输。

我想要什么。

我想让手机振动500毫秒 当我能在一定范围内找到一个信标时 即使我的应用程序作为前台服务运行也是如此

我的逻辑是什么?

逻辑很简单,我在一个特定的时间间隔内进行扫描。假设我找到了距离为1米、1.5米、0.6米的信标A、B、C。现在我的阈值距离是0.8m,所以只要满足上述条件,我就会让手机震动,也就是说用户要出去把距离变大,这样才能停止震动。

我使用的代码。

我找到了一个代码片段来让手机振动

import android.os.Vibrator;
...
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
// Vibrate for 500 milliseconds
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    v.vibrate(VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE));
} else {
    //deprecated in API 26 
    v.vibrate(500);
}

我面临的问题。

当我的应用程序打开时,它可以完美地工作。一旦我关闭应用程序,前台服务继续扫描和传输,振动就不会发生。

我是安卓开发新手,请帮我解决这个问题。

android beacon altbeacon foreground-service vibration
1个回答
0
投票

尝试发送本地通知 与振动的信标附近的事件。 这可能会克服您的手机型号上振动的背景限制,并为您提供一个简单的方法来确认事件正在发射。 如果你不想让视觉通知停留在这里,你可以在几秒钟的延迟后解除它。 你甚至可以在一秒左右后重新发送通知,以继续振动效果,直到条件清除。

友情提示:请注意这些蓝牙距离估计对于你的用例来说足够准确。 其他的应用,比如OnePointFive,就犯了发送太多虚假通知的错误,导致用户非常不满意。 你一定要谨慎,不要重蹈他们的覆辙。 请看 滥用蓝牙估计 的部分 我的博客文章在这里。

© www.soinside.com 2019 - 2024. All rights reserved.