我正在制作一个小应用程序,其中手机使用蓝牙协议(protocol)自动连接到某个设备,所以基本上我正在尝试这样做:
我有一个已发现设备的列表。
当用户点击列表中的任何元素(设备)时,手机应连接到“硬编码”的设备。
这是当用户点击列表时生成的事件:
public void onItemClick(AdapterView adapterView, View view, int i, long l) {
//first cancel discovery because its very memory intensive.
mBluetoothAdapter.cancelDiscovery();
Log.d(TAG, "onItemClick: You Clicked on a device.");
String deviceName = mBTDevices.get(i).getName();
String deviceAddress = mBTDevices.get(i).getAddress();
Log.d(TAG, "onItemClick: deviceName = " + deviceName);
Log.d(TAG, "onItemClick: deviceAddress = " + deviceAddress);
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2) {
Log.d(TAG, "Trying to pair with " + deviceName);
<b>for (BluetoothDevice device: mBTDevices){
if (device.equals("HTC")){
device.createBond();
}
}</b>
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener{
private static final String TAG = "MainActivity";
BluetoothAdapter mBluetoothAdapter;
Button btnEnableDisable_Discoverable;
public ArrayList mBTDevices = new ArrayList();
public DeviceListAdapter mDeviceListAdapter;
ListView lvNewDevices;
我的问题是,我哪里弄错了?
for (BluetoothDevice device: mBTDevices){
if (device.equals("HTC")){
device.createBond();
因为应用程序没有按预期运行。更准确地说,当我点击列表中的设备时,我想自动与名称为“HTC”的设备建立联系,但没有任何反应。
最佳答案
尝试使用 device.getName().equals("HTC")
而不是 device.equals("HTC")
。
此时您的代码正在将 BluetoothDevice 类型的对象与字符串进行比较。因此,即使设备可用,您也不会获得匹配项,因此永远不会到达 device.createBond();
行。
关于Android Studio 蓝牙应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41894594/