gpt4 book ai didi

android - 如何使用 Android 蓝牙设备选择器检索蓝牙设备信息?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:29:42 29 4
gpt4 key购买 nike

这是我使用的测试代码:

public class IOConnectDirect extends Activity {

private static final String TAG = "IOConnectDirect";

private static final int REQCODE_BLUETOOTH_RESULT = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(TAG, "onCreate");
setTitle(getTitle() + "--" + TAG);
Intent intentBluetooth = new Intent();
intentBluetooth.setAction("android.bluetooth.devicepicker.action.LAUNCH");
//android.bluetooth.devicepicker.action.DEVICE_SELECTED not working .
startActivityForResult(intentBluetooth, REQCODE_BLUETOOTH_RESULT);
}


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.i(TAG, "onActivityResult(" + requestCode +"," + resultCode + ")");

switch (requestCode) {
case REQCODE_BLUETOOTH_RESULT:
Log.i(TAG, "requestCode = REQCODE_BLUETOOTH_RESULT");

if(resultCode == RESULT_OK) {
Log.i(TAG, "RESULT_OK");

// Retrieve the Info
Bundle extras = data.getExtras();

if(extras != null) {
Log.i(TAG, "Bundle ok");
}
}
else {
Log.i(TAG, "!RESULT_OK = FAILED(" + resultCode + ")");
Toast.makeText(this, "Failed(" + resultCode +")", Toast.LENGTH_SHORT).show();
}

break;

default:
Log.i(TAG, "requestCode = ????");
break;
}
}

这是 Logcat 输出:

I/IOConnectDirect(14956): onActivityResult(0,0)
I/IOConnectDirect(14956): requestCode = REQCODE_BLUETOOTH_RESULT
I/IOConnectDirect(14956): !RESULT_OK = FAILED(0)

代码有效(你需要先激活蓝牙),我只是无法让它做我想做的事情,即检索我从 Activity 中选择的蓝牙设备名称和地址。

注意:

  • 我不是要连接,我只是想要选择的设备信息。
  • 我熟悉执行此操作的其他方法,例如 Android 蓝牙聊天示例中的方法

更新

我最终使用了 BroadcastReceiver

public class IOConnectDirect extends Activity {

private static final String TAG = "IOConnectDirect";


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(TAG, "onCreate");

BluetoothConnectActivityReceiver mBluetoothPickerReceiver = new BluetoothConnectActivityReceiver();
registerReceiver(mBluetoothPickerReceiver, new IntentFilter(BluetoothDevicePicker.ACTION_DEVICE_SELECTED));
startActivity(new Intent(BluetoothDevicePicker.ACTION_LAUNCH)
.putExtra(BluetoothDevicePicker.EXTRA_NEED_AUTH, false)
.putExtra(BluetoothDevicePicker.EXTRA_FILTER_TYPE, BluetoothDevicePicker.FILTER_TYPE_ALL)
.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS));

}

public class BluetoothConnectActivityReceiver extends BroadcastReceiver {


@Override
public void onReceive(Context context, Intent intent) {
if(BluetoothDevicePicker.ACTION_DEVICE_SELECTED.equals(intent.getAction())) {
context.unregisterReceiver(this);
BluetoothDevice device = (BluetoothDevice) intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Toast.makeText(context, "device" + device.getAddress(), Toast.LENGTH_SHORT).show();
}
}
}

最佳答案

试试这段代码:

private final BroadcastReceiver mBluetoothPickerReceiver = new BluetoothConnectActivityReceiver(this);

void connectToService(String defaultAdapter) {
if (defaultAdapter == null) {
registerReceiver(mBluetoothPickerReceiver, new IntentFilter(BluetoothDevicePicker.ACTION_DEVICE_SELECTED));
startActivity(new Intent(BluetoothDevicePicker.ACTION_LAUNCH)
.putExtra(BluetoothDevicePicker.EXTRA_NEED_AUTH, false)
.putExtra(BluetoothDevicePicker.EXTRA_FILTER_TYPE, BluetoothDevicePicker.FILTER_TYPE_ALL)
.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS));
} else {
mCardroid.getCardroidService().connectTo(defaultAdapter);
}
}

public class BluetoothConnectActivityReceiver extends BroadcastReceiver {
private BluetoothConnectActivity bluetoothConnectActivity;
public BluetoothConnectActivityReceiver(BluetoothConnectActivity bluetoothConnectActivity) {
this.bluetoothConnectActivity = bluetoothConnectActivity;
}

@Override
public void onReceive(Context context, Intent intent) {
if(BluetoothDevicePicker.ACTION_DEVICE_SELECTED.equals(intent.getAction())) {
context.unregisterReceiver(this);
BluetoothDevice device = (BluetoothDevice) intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
bluetoothConnectActivity.connectToService(device.getAddress());
}
}
}

完整代码引用:

http://code.google.com/p/carbot/source/browse/trunk/src/net/cardroid/?r=8

关于android - 如何使用 Android 蓝牙设备选择器检索蓝牙设备信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8712365/

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