由于蓝牙的搜索和匹配系统已经做的很好,大家可以可以调用系统的,所以主要的重点在于蓝牙建立连接接收和发送数据:

主要代码如下:

package com.examole.booth;import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.UUID;import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;public class BtSPP {public static String ErrorMessage = "No Error";private static final UUID SPP_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");private static BluetoothAdapter myBluetoothAdapter;private static BluetoothDevice myDevice;private static BluetoothSocket mySocket = null;private static OutputStream myOutStream = null;private static InputStream myInStream = null;public static boolean OpenPrinter(String BDAddr) {if (BDAddr == "" || BDAddr == null) {ErrorMessage = "没有选择小车";return false;}myBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();if (myBluetoothAdapter == null) {ErrorMessage = "蓝牙系统错误";return false;}myDevice = myBluetoothAdapter.getRemoteDevice(BDAddr);if (myDevice == null) {ErrorMessage = "读取蓝牙设备错误";return false;}if (!BtSPP.SPPOpen(myBluetoothAdapter, myDevice)) {return false;}return true;}public static boolean SPPOpen(BluetoothAdapter bluetoothAdapter,BluetoothDevice btDevice) {boolean error = false;myBluetoothAdapter = bluetoothAdapter;myDevice = btDevice;if (!myBluetoothAdapter.isEnabled()) {ErrorMessage = "蓝牙适配器没有打开";return false;}myBluetoothAdapter.cancelDiscovery();try {// mySocket = myDevice.createRfcommSocketToServiceRecord(SPP_UUID);Method m = myDevice.getClass().getMethod("createRfcommSocket",new Class[] { int.class });mySocket = (BluetoothSocket) m.invoke(myDevice, 1);} catch (SecurityException e) {mySocket = null;ErrorMessage = "蓝牙端口错误";return false;} catch (NoSuchMethodException e) {mySocket = null;ErrorMessage = "蓝牙端口错误";return false;} catch (IllegalArgumentException e) {mySocket = null;ErrorMessage = "蓝牙端口错误";return false;} catch (IllegalAccessException e) {mySocket = null;ErrorMessage = "蓝牙端口错误";return false;} catch (InvocationTargetException e) {mySocket = null;ErrorMessage = "蓝牙端口错误";return false;}try {mySocket.connect();} catch (IOException e2) {ErrorMessage = e2.getLocalizedMessage();// "无法连接蓝牙打印机";mySocket = null;return false;}try {myOutStream = mySocket.getOutputStream();} catch (IOException e3) {myOutStream = null;error = true;}try {myInStream = mySocket.getInputStream();} catch (IOException e3) {myInStream = null;error = true;}if (error) {SPPClose();return false;}return true;}public static boolean SPPClose() {try {Thread.sleep(1000);} catch (InterruptedException e) {}if (myOutStream != null) {try {myOutStream.flush();} catch (IOException e1) {}try {myOutStream.close();} catch (IOException e) {}myOutStream = null;}if (myInStream != null) {try {myInStream.close();} catch (IOException e) {}myInStream = null;}if (mySocket != null) {try {mySocket.close();} catch (IOException e) {}mySocket = null;}try {Thread.sleep(200);} catch (InterruptedException e) {}return true;}public static boolean SPPWrite(byte[] Data) {try {myOutStream.write(Data);} catch (IOException e) {ErrorMessage = "发送蓝牙数据失败";return false;}return true;}public static boolean SPPWrite(byte[] Data, int DataLen) {try {myOutStream.write(Data, 0, DataLen);} catch (IOException e) {ErrorMessage = "发送蓝牙数据失败";return false;}return true;}public static void SPPFlush() {int i = 0, DataLen = 0;try {DataLen = myInStream.available();} catch (IOException e1) {}for (i = 0; i < DataLen; i++) {try {myInStream.read();} catch (IOException e) {}}}public static boolean SPPRead(byte[] Data, int DataLen) {return SPPReadTimeout(Data, DataLen, 2000);}public static boolean SPPReadTimeout(byte[] Data, int DataLen, int Timeout) {int i;for (i = 0; i < (Timeout / 50); i++) {try {if (myInStream.available() >= DataLen) {try {myInStream.read(Data, 0, DataLen);return true;} catch (IOException e) {ErrorMessage = "读取蓝牙数据失败";return false;}}} catch (IOException e) {ErrorMessage = "读取蓝牙数据失败";return false;}try {Thread.sleep(50);} catch (InterruptedException e) {ErrorMessage = "读取蓝牙数据失败";return false;}}ErrorMessage = "蓝牙读数据超时";return false;}
}

Android手机通过蓝牙控制小车相关推荐

  1. STM32循迹小车/Android蓝牙控制小车(三)

    STM32循迹小车/Android蓝牙控制小车(三) 循迹蓝牙小车的第三篇终于来了,这篇开篇先来介绍一下整个开发过程中得构思思路.本来这应该放在第一篇,但是实际思路会因为开发过程中遇到的问题而改变,到 ...

  2. 蓝牙模块hc05原理图_使用步进电机和Android App的蓝牙控制迷你升降机

    背景知识视频教程 使用App Inventor创建Android应用​viadean.com Arduino微控制器:学习Arduino制作项目 - 国外课栈​viadean.com Arduino ...

  3. Android手机HC-05蓝牙连接Arduino nano获取DHT-11温湿度传感器数据

    如果您觉得本文对您有用,希望您点赞,收藏并且把它分享出去,不明白的可以在评论区留言,我会一一解答,感谢您的支持!! 目标 Android手机HC-05蓝牙连接Arduino nano获取DHT-11温 ...

  4. android系统手机流量控制方法,如何实现Android手机流量的控制

    如何实现Android手机流量的控制 随着智能手机变得强大起来,也变得很耗流量了.那么如何实现Android手机流量的控制呢?下面就让jy135小编来告诉大家吧,欢迎阅读. 1.打开手机,进入设置按钮 ...

  5. Java关于蓝牙单片机的类,BluetoothCar 蓝牙控制小车 需要硬件单片机电源等配合 需 模块 Java Develop 256万源代码下载- www.pudn.com...

    文件名称: BluetoothCar下载  收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 976 KB 上传时间: 2016-04-18 下载次数: 0 提 供 者: ...

  6. 基于51单片机的蓝牙控制小车的简单实现(有源代码,无图) (上篇)

    1. 简介 这是2016年底两周时间做的一个蓝牙小车,它分为上下两篇,本文是上篇.原本是发在了http://bbs.elecfans.com/ 的,不过由于我的博客都在CSDN上,因此我就把它们重新复 ...

  7. 【51】基于51单片机的蓝牙控制小车的简单实现(有源代码,无图)

    原文地址:http://bbs.elecfans.com/forum.php?mod=viewthread&tid=544143 此帖子现在有一个后续版本,实现了手机端的蓝牙程序控制小车运动以 ...

  8. Android手机靠近蓝牙模块自动连接蓝牙模块,断后自动重连。也可以手机靠近手机自动连接。连接成功率百分之百,可后台运行

    BluetoothChat手机与串口模块通信靠近自动连接2.0apk示例:链接: https://pan.baidu.com/s/1YoMNNBfLTAuXm2XukG5s9g 提取码: sm3h 全 ...

  9. Android手机连接蓝牙打印机连接不上的问题

    目前碰到的情况(虽然可能是小情况,但是在解决的时候还是很费时间的): 问题描述:用Android机连接蓝牙打印机,发现华为P7可以连接,而其余的手机都连接失败,找了一上午资料也没解决这个问题. 接着我 ...

最新文章

  1. Pandas中iloc、loc、ix三者的区别
  2. 上周新闻回顾:Vista麻烦不断 Office波澜再起(2.26-3.4)
  3. linux 无线网络配置工具wpa_supplicant与wireless-tools
  4. 无线信标功能调试-2021-3-9-输出功率恒定限制
  5. 手机端 超链接 识别电话号码
  6. 5、学MySQL前必须要了解的数据库专业术语
  7. bangbang控制c语言代码大全,算法2-3~2-6:Big Bang-题解(C语言代码)
  8. PLinq Lookup ParallelQuery
  9. 一张图清晰明了将Java面向对象全部搞定!
  10. 导入数据库时报错1067 – Invalid default value for ‘字段名’
  11. hdoj 3400 三分
  12. echarts柱状图铺满_echarts 柱状图多种样式设置
  13. 基于Struts2的网上书城(仿当当网)系统设计与实现
  14. 机器学习(聚类七)——层次聚类的优化算法
  15. 赛事相关 | 腾讯觅影×腾讯云TI平台,锁了
  16. 宝塔linux 解压文件,宝塔面板能否解压缩文件
  17. 用MySQL后电脑频繁蓝屏_电脑容易蓝屏怎么办_电脑突然开始频繁蓝屏修复方法-win7之家...
  18. 提交代码遇到的问题remote: Support for password authentication was removed on August 13, 2021.
  19. PPT转HTML手机软件,《PPT转换成Html》PPT转Htm、Html软件和方法大全
  20. 小米airdots2蓝牙耳机连上手机后没有声音

热门文章

  1. 前端小菜 - web 初相识
  2. 01_Chrome模拟微信内置浏览器
  3. 【并查集】感冒病毒 suspects
  4. ISO认证怎么办理,申请流程
  5. php invoker,SECURITY INVOKER存储过程权限提升漏洞_MySQL
  6. Spring HttpInvoker 远程调用
  7. 前端常见笔试题(持续更新)
  8. 豆芽八股专栏之嵌入式
  9. Angular基础教程+Demo项目——尽可能全面一些——第二节
  10. Matplotlib删除特定的线