直到现在我的应用程序可以发现可以发现和所有这些。当我按下设备的名称,例如我的近手机(我已打开蓝牙)时,它出现在我的列表视图中我想要的事实。当我按它时,我有经典错误<< " W / BluetoothAdapter:调用了getBluetoothService(),没有BluetoothManagerCallback W / System.err:java.io.IOException:读取失败,套接字可能关闭或超时,读取ret:-1">>。它在我的代码中不起作用bluetoothSocket.connect。 在其他情况下,当我用我的平板电脑进入我的车(其中包括我的Android工作室的应用程序),我可以搜索obd2,当我按下它,它使债券要求。我在键入1234密码,并在平板电脑蓝牙功能,我可以看到它。我需要有人做过这样的事情来帮助我进行下一步。例如如何发送rpm或速度的命令并采取响应。请帮助我!
这是我的代码:
公共类BluetoothActivity扩展了AppCompatActivity {
Test& &&
// IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
// registerReceiver(broadcastReceiver,filter)//在onDestroy期间忘记取消注册
private static final String TAG ="msg" ;
private BluetoothAdapter bluetoothAdapter;
private ToggleButton toggleButton;
private ListView listview;
private ArrayAdapter adapter;
private static final int MESSAGE_READ =1;
private static final int ENABLE_BT_REQUEST_CODE = 1;
private static final int DISCOVERABLE_BT_REQUEST_CODE = 2;
private static final int DISCOVERABLE_DURATION = 300;
private final static UUID uuid = UUID.fromString("8ce255c0-200a-11e0-ac64-0800200c9a66");
// Create a BroadcastReceiver for ACTION_FOUND
private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
// Whenever a remote Bluetooth device is found
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
// Get the BluetoothDevice object from the Intent
BluetoothDevice bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
// Add the name and address to an array adapter to show in a ListView
adapter.add(bluetoothDevice.getName() + "\n"
+ bluetoothDevice.getAddress());
adapter.notifyDataSetChanged();
}
//uuid=BluetoothDevice.getUuids()[0].getUuid();
}
};
}
答案 0 :(得分:1)
您已经能够将插入车辆诊断端口的OBDII适配器与手机配对,但现在需要连接到它。
使用以下方式连接设备:
BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter();
BluetoothDevice device = btAdapter.getRemoteDevice(deviceAddress);
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
BluetoothSocket socket = device.createInsecureRfcommSocketToServiceRecord(uuid);
socket.connect();
连接到设备后,您可以使用AT命令初始化OBDII适配器,例如“AT E0”表示回声关闭,“AT L0”表示换行。
然后,您可以通过发出相应的PID代码从车辆连续获取数据:对于RPM,使用“01 0C”,速度使用“01 0D”。
更多细节和讨论可以在以下链接找到:
http://blog.lemberg.co.uk/how-guide-obdii-reader-app-development
这是一个指向优秀OBD2入门库的链接,您可以根据自己的特殊需求进行扩展和改进: