广播接收器对象内部或服务内?

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

我有一个Android应用程序,它使用蓝牙。为了始终蓝牙,我已经实现了一个服务有它始终,即使应用程序在后台。因为那里将是一个很大的专用蓝牙代码,我决定为所有方法的ListActivity等与蓝牙有关。我每次启动该服务,创建这个蓝牙类的新对象。

现在,这个细节一点,我的问题是:如果我做了adapter.Discovery在这个对象,我该如何处理广播接收器?对于接收器,我有:

   private final BroadcastReceiver BEReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        int a = 1;
        a++;
};

我把这个在服务和对象做不同的测试。对于将接收器我有:

            IntentFilter BEFilter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
            mycontext.registerReceiver(BEReceiver, BEFilter);

我加入的服务beggining这些线路在本地调用它,但它不工作。然后,我创建BEFilter蓝牙物体内部,在这里我把BEFilter蓝牙对象。无论是它的工作。我还添加了蓝牙对象的构造内的线在本地做,但它既不工作。我该怎么办?我需要的,而适配器被发现添加设备。

在清单中,我有:

   <intent-filter>
                <action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
            <action android:name="android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED" />
            <action android:name="android.bluetooth.device.action.ACL_CONNECTED" />
            <action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" />
     </intent-filter>

用于蓝牙对象,服务和在其中创建服务的主要活动。

Myproblem是BEReceiver从未叫,我有调试任何错误。

在清单我也有:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>  <!-- BLE needs this! -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/><!-- BLE needs this! -->
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
android bluetooth android-service android-broadcast
1个回答
0
投票

Android Broadcast Receiver bluetooth events catching

看来,我一直在寻找的是:

IntentFilter filter2 = new IntentFilter();
filter2.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
filter2.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
filter2.addAction(BluetoothAdapter.ACTION_SCAN_MODE_CHANGED);
registerReceiver(mBroadcastReceiver2, filter2);

这一点,被触发时适配器扫描。

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