我正在用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);
}
当我的应用程序打开时,它可以完美地工作。一旦我关闭应用程序,前台服务继续扫描和传输,振动就不会发生。
我是安卓开发新手,请帮我解决这个问题。
尝试发送本地通知 与振动的信标附近的事件。 这可能会克服您的手机型号上振动的背景限制,并为您提供一个简单的方法来确认事件正在发射。 如果你不想让视觉通知停留在这里,你可以在几秒钟的延迟后解除它。 你甚至可以在一秒左右后重新发送通知,以继续振动效果,直到条件清除。
友情提示:请注意这些蓝牙距离估计对于你的用例来说足够准确。 其他的应用,比如OnePointFive,就犯了发送太多虚假通知的错误,导致用户非常不满意。 你一定要谨慎,不要重蹈他们的覆辙。 请看 滥用蓝牙估计 的部分 我的博客文章在这里。