gpt4 book ai didi

java - 扩展 BroadcastReceiver 的类不起作用

转载 作者:行者123 更新时间:2023-11-30 04:04:51 25 4
gpt4 key购买 nike

我制作了一个扩展 BroadcastReceiver 的辅助类,以监听找到的 BluetoothDevice 和发现完成的 Intent 。我有两个 Activity 通过传递处理程序来使用此类。处理程序根据 Intent 接收消息。我像这样实例化类和 registerReceiver:

来自 mainActivity:

deviceHelper=new DevicesHelper(myHandler,DevicesHelper.REQUEST_DETECT_DEVICES_IN_RANGE);

IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
this.registerReceiver(deviceHelper, filter);

filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
this.registerReceiver(deviceHelper, filter);

if(myBluetoothAdapter.isDiscovering())myBluetoothAdapter.cancelDiscovery();
myBluetoothAdapter.startDiscovery();

来自 ListActivity:

deviceHelper=new DevicesHelper(deviceListHandler,DevicesHelper.REQUEST_DEVICE_LIST_ACTIVITY);

IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
this.registerReceiver(deviceHelper, filter);

filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
this.registerReceiver(deviceHelper, filter);

DeviceHelper 类:

public class DevicesHelper extends BroadcastReceiver {

public final static int REQUEST_DEVICE_LIST_ACTIVITY=1;
public final static int REQUEST_DETECT_DEVICES_IN_RANGE=2;


Handler myHandler;
int requestCode;

public DevicesHelper(){

}
public DevicesHelper(Handler handler,int requestCode){
this.requestCode=requestCode;
myHandler=handler;

}

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String action = intent.getAction();

// When discovery finds a device
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

if (BluetoothDevice.ACTION_FOUND.equals(action)) {
// Get the BluetoothDevice object from the Intent
switch(requestCode){
case REQUEST_DEVICE_LIST_ACTIVITY:
if (device.getBondState() != BluetoothDevice.BOND_BONDED) {
//newDevicesCount++;
String[] deviceInfo={device.getName(),device.getAddress()};

myHandler.obtainMessage(DeviceListActivity.MESSAGE_NEW_DEVICE,deviceInfo);
};


break;

case REQUEST_DETECT_DEVICES_IN_RANGE:

String[] deviceInfo={device.getName(),device.getAddress()};

myHandler.obtainMessage(StripChartRecorder.MESSAGE_NEW_DEVICE,deviceInfo);
break;

}


// When discovery is finished, change the Activity title
} else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {

myHandler.obtainMessage(StripChartRecorder.MESSAGE_DISCOVERY_FINISHED);

}
}

处理程序:

private final Handler myHandler=new Handler() {
@Override
public void handleMessage(Message msg) {
switch(msg.what) {
case MESSAGE_NEW_DEVICE:
doOtherStuff();

case MESSAGE_DISCOVERY_FINISHED:
dostuff();
}
break;
}}

我是不是漏掉了什么?感谢您的帮助。

最佳答案

您需要sendMessage(Message msg),其中msg 是您通过obtainMessage 获得的Message

关于java - 扩展 BroadcastReceiver 的类不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11868490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com