与obd2的Android蓝牙连接

时间:2016-01-07 16:15:58

标签: android bluetooth obd-ii

直到现在我的应用程序可以发现可以发现和所有这些。当我按下设备的名称,例如我的近手机(我已打开蓝牙)时,它出现在我的列表视图中我想要的事实。当我按它时,我有经典错误<< " 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();
    }
};

}

1 个答案:

答案 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入门库的链接,您可以根据自己的特殊需求进行扩展和改进:

https://github.com/pires/obd-java-api