Java Android蓝牙扫描仪未作为服务运行

Java Android蓝牙扫描仪未作为服务运行,java,android,service,bluetooth-lowenergy,ibeacon,Java,Android,Service,Bluetooth Lowenergy,Ibeacon,我正在尝试将bluetooth beacon scanner作为一项服务运行,因此当应用程序未处于活动状态时,当检测到信标时,可以发送通知 服务代码(Java): 还有一个BroadcastReceiver类来启动服务 public class BtStartServiceReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) {

我正在尝试将bluetooth beacon scanner作为一项服务运行,因此当应用程序未处于活动状态时,当检测到信标时,可以发送通知

服务代码(Java):

还有一个BroadcastReceiver类来启动服务

public class BtStartServiceReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Intent service = new Intent(context, BtService.class);
        context.startService(service);
    }
}
之间的Manifest.xml中的声明。已完成启动的权限,也已添加

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<service
    android:name=".BtService"
    android:icon="@mipmap/ic_launcher"
    android:enabled="true">
</service>

<receiver android:name=".BtStartServiceReceiver" >
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

当应用程序处于活动状态或不活动状态时,它似乎不工作。在logcat中,我没有看到我在服务代码中添加的任何日志

当我终止应用程序时,logcat显示应用程序正在重新启动,但与代码中的日志无关

当我尝试运行适合某个活动的代码时,它会工作,会检测到信标并发出通知

我不想使用任何beacon库或SDK,因为我使用的是通用beacon


感谢您的帮助。

如果您关闭应用程序,为什么希望服务重新启动?你只需要将它设置为在启动时启动。我刚刚发现,在重新启动设备后,它似乎工作正常。我还试图从服务器下载APK(签名),但我有同样的情况。如何更正此问题,使其在不重新启动设备的情况下工作。它应该在安装之后工作。在我的三星S5上,什么也没发生,在华威P9上,我听到了通知的声音,但没有听到通知栏中的图标。两个设备在重新启动后都能正常工作。明白。所有这些设置都有点棘手。这就是我们构建并使其开源的原因,因为它为您处理所有这些事情。我知道你不想使用SDK,但我意识到,结果会有很多这样的复杂性,你必须自己解决。您可能需要查看源代码以获得解决这些问题的想法。Thank’s David将查看此库,并花几天时间重新编程应用程序的beacon部分。但就我而言,似乎我必须在第一次启动应用程序时启动服务。但却不知道该怎么做?设备重新启动后,工作正常。已解决!我找到了解决办法!必须在检查请求权限的结果后启动服务。(英国电信需要访问客户地址)
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<service
    android:name=".BtService"
    android:icon="@mipmap/ic_launcher"
    android:enabled="true">
</service>

<receiver android:name=".BtStartServiceReceiver" >
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>