这是我正在使用的测试代码:
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)
代码工作(你需要先激活蓝牙),我只是无法做它我想要的,检索我从活动中选择的蓝牙设备名称和地址.
注意 :
UPDATE
我最终使用了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
| 归档时间: | 
 | 
| 查看次数: | 8432 次 | 
| 最近记录: |