//设备连接

public class BluetoothConnect implements Runnable {

private static final UUID CONNECT_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");

private Loger loger = Loger.getLoger();

private BluetoothDevice mDevice;

private BluetoothSocket mSocket;

private IInterface iInterface;

private OutputStream out;

private boolean isConnected = false;

public BluetoothConnect(BluetoothDevice device) {

this.mDevice = device;

}

public interface IInterface {

void connected(BluetoothDevice device);

void receive(String string);

void disconnect(BluetoothDevice device);

void connectError();

}

@Override

public void run() {

try {

if (iInterface == null) {

loger.e("IBluetoothData interface is null");

return;

}

loger.d("connecting bluetooth device................");

int sdk = Build.VERSION.SDK_INT;

if (sdk >= 10) {

mSocket = mDevice.createInsecureRfcommSocketToServiceRecord(CONNECT_UUID);

} else {

mSocket = mDevice.createRfcommSocketToServiceRecord(CONNECT_UUID);

}

mSocket.connect();

iInterface.connected(mDevice);

isConnected = true;

InputStream in = mSocket.getInputStream();

out = mSocket.getOutputStream();

String s = "";

byte[] buffer = new byte[1024 * 3];

int len;

while((len = in.read(buffer)) > 0){

s += new String(buffer, 0, len, "GBK");

int index = -1;

while ((index = s.indexOf("\r\n")) != -1) {

iInterface.receive(s.substring(0, index + 2));

s = s.substring(index + 2, s.length());

index = -1;

}

}

} catch (IOException e) {

loger.e("", e);

iInterface.connectError();

}finally{

iInterface.disconnect(mDevice);

isConnected = false;

}

}

public void setInterface(IInterface iInterface) {

this.iInterface = iInterface;

}

public boolean isConnected(){

return isConnected;

}

public void write(byte[] buffer) {

if (out != null) {

try {

out.write(buffer);

out.flush();

} catch (IOException e) {

loger.e("write error", e);

}

}

}

public void close() {

try {

if (mSocket != null) {

mSocket.close();

}

} catch (IOException e) {

loger.e("close error", e);

}

}

}

搜索设备

//首先动态注册广播

IntentFilter filter = new IntentFilter();

filter.setPriority(Integer.MAX_VALUE);

filter.addAction(BluetoothDevice.ACTION_FOUND);

filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);

filter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED);

registerReceiver(receiver, filter);

//创建广播接收器

public BroadcastReceiver receiver = new BroadcastReceiver() {

@Override

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

BluetoothDevice device;

if (BluetoothDevice.ACTION_FOUND.equals(action)) {

device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

String name = device.getName();

String address = device.getAddress();

int state = device.getBondState();

loger.d(String.format("found bluetooth device name=%s address=%s state=%s", name, address, state == BluetoothDevice.BOND_BONDED ? "BOND_BONDED" : "BOND_NONE"));

if (!adapter.getDevices().contains(device)) {

adapter.addDevice(device);

}

} else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {

loger.d("select bluetooth device over!!!");

if (mBluetoothAdapter.isDiscovering()) {

mBluetoothAdapter.cancelDiscovery();

}

} else if (BluetoothDevice.ACTION_BOND_STATE_CHANGED.equals(action)) {

device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);

switch (device.getBondState()) {

case BluetoothDevice.BOND_BONDING:

loger.d("bluetooth device bonding....");

break;

case BluetoothDevice.BOND_BONDED:

adapter.notifyDataSetChanged();

loger.d("bluetooth device bonded");

break;

case BluetoothDevice.BOND_NONE:

loger.d("bluetooth device none!!!");

break;

default:

break;

}

}

}

};

//配对方法

public boolean createBond(BluetoothDevice device) {

try {

Method createBondMethod = device.getClass().getMethod("createBond");

return (Boolean) createBondMethod.invoke(device);

} catch (Exception e) {

e.printStackTrace();

}

return false;

}

android obd编程,Android蓝牙连接汽车OBD设备相关推荐

  1. android 蓝牙连接obd,Android蓝牙连接汽车OBD设备

    //设备连接 public class BluetoothConnect implements Runnable { private static final UUID CONNECT_UUID =  ...

  2. Android Socket编程android端服务器和客户端的实现

     Android Socket编程android端服务器和客户端的实现       其实和java实现的差不多,或本质是用java实现的,但由于android有自身的独特性,所以还是有一些要注意的点: ...

  3. android开发重要控件,Android界面编程——Android基本控件

    Android界面编程 Android应用开发的一项重要内容就是界面开发.对于用户来说,不管APP包含的逻辑多么复杂,功能多么强大,如果没有提供友好的图形交互界面,将很难吸引最终用户. 作为一个程序员 ...

  4. android 蓝牙设备断开,android – 如何检查设备的蓝牙连接是否断开?

    我想知道我与设备的蓝牙连接何时断开连接.我发现这个要检查: IntentFilter filter1 = new IntentFilter(BluetoothDevice.ACTION_ACL_CON ...

  5. android 无sdk usb/蓝牙 连接热敏打印机外卖小票打印

    这是部分代码 获取代码 ->发送标题作为验证信息到该邮箱 itperson@foxmail.com ​​​​​​ /** js spi 蓝牙连接 接收 mac address :返回mac ad ...

  6. android高级编程-android高级应用

    android高级应用>>> 第一阶段 程序员基本素质养成 程序员所需要具备的12条职业素质 让学员初步了解和审视自己所应该具备的职业素质.并且我们会在授课中随时训练和贯彻这样的素质 ...

  7. android 扫码枪编程,android 扫码枪解惑

    第一次知道超市用的那种扫描枪居然还可以通过蓝牙连接,直接把扫描结果显示在editText. 既然需求来了那就做把,刚开始一脸懵逼,google一下吧!看了几篇相关的文章大概了解有两种连接蓝牙的方式,一 ...

  8. 蓝牙最新版本6.0_手机蓝牙连接汽车放歌。放30秒就没声音了是什么坏了?

    展开全部 车载蓝牙的驱动比较旧,32313133353236313431303231363533e59b9ee7ad9431333433656632可尝试使用手机最低版本的蓝牙传送试一下. 1.先检查 ...

  9. android surface编程,Android编程之SurfaceView实例详解

    本文实例讲述了Android编程之SurfaceView用法.分享给大家供大家参考,具体如下: 关于surfaceView相关知识: View和SurfaceView主要区别: 1. View只能在U ...

最新文章

  1. 冰球项目开发日志(一)
  2. 交管12123显示当前环境存在风险_政策|取消驾驶证年龄上限、推行异地通办,12项交管新政来了...
  3. JAVA基础——最简单的多重循环程序
  4. 利用BADI ME_PROCESS_PO_CUST進行PO check
  5. http消息当中,post和get两种请求方式的区别
  6. Find the Kth number(找第K大数)
  7. win7+vs2010+opnet教程
  8. 数学建模4 拟合算法
  9. linux java运行环境_linux(centos)中java运行环境_jdk安装与配置 | OPS技术联盟
  10. qq恢复官方网站服务器繁忙,qq恢复官方网站
  11. 量化开发必掌握的30个知识点【什么是分笔逐笔数据】?
  12. 液晶显示器不宜使用屏幕保护程序
  13. 规划求解 python_使用Python/PuLp解决线性规划问题
  14. (arduino基于W5100实现TCP客户端
  15. pytest入门_测试用例分类_@pytest.mark.smoke
  16. 女生节横幅标语计算机学院,计算机院第四届女生节活动
  17. pta—紧急救援 (dijkstra)
  18. 京东辟谣程序员在页面置入骂人代码
  19. [HR面试] 65个最常见的面试问题
  20. mysql语法太难记住了_MYSQL语法实例(仅学习)

热门文章

  1. python 文件管理_python 文件操作
  2. UE3 渲染线程的分析及优化
  3. java 多线程基础, 我觉得还是有必要看看的
  4. 《中国人工智能学会通讯》——4.32 数据包丢失
  5. 网易财报暗藏玄机,不经意间已编织出电商大网
  6. 怎么搞一个ORM出来用用呢???迷茫中
  7. pyplot 画多个图时搅合到了一起_这些认数字游戏,宝宝最喜欢,家长可以和宝宝一起玩...
  8. strcmp可以比较数组么_数组:总结篇
  9. python栈应用_栈应用之 后缀表达式计算 (python 版)
  10. docker 启动时指定需要绑定的网卡_Docker容器网络-基础篇