成功实现手机蓝牙控制智能小车机器人!视频+程序源代码(Android)

合集下载

基于Android的智能小车控制及路径规划

基于Android的智能小车控制及路径规划
基于Android的智能小车控制及路径规 划
目录
01 一、智能小车控制
02 二、路径规划
03 三、Android开发
04 四、传感器应用
05 五、实例分析
随着科技的快速发展,智能小车已经成为了人们研究的热点领域之一。基于 Android系统的智能小车控制及路径规划更是备受。本次演示将介绍智能小车 控制的基本原理、路径规划的方法,以及如何在Android系统中实现这些功能。
1、A*算法
A算法是一种经典的图搜索算法,它通过评估代价函数来找出从起点到终点的 最短路径。在Android系统中,我们可以使用A算法来实现小车的路径规划。 首先,将小车的行驶环境转化为二维网格图,每个网格点表示一个地理位置。 然后,从小车的起点开始搜索,依次遍历周围的网格点,并计算代价函数,直 到找到终点为止。
2、代码开发
代码开发是Android开发的核心环节,它包括应用程序的开发和底层驱动程序 的编写。在智能小车的控制及路径规划中,我们需要通过代码实现无线通在智能小车的控制及路径规划中起着至关重要的作用。通过内置或外接 传感器,Android系统可以获取小车及周围环境的实时信息,从而实现自动控 制和路径规划。
2、Dijkstra算法
Dijkstra算法也是一种常用的图搜索算法,它通过逐步扩展节点来找出从起 点到各个节点的最短路径。在Android系统中,我们可以使用Dijkstra算法来 实现小车的路径规划。首先,将小车的行驶环境转化为二维网格图,每个网格 点表示一个地理位置。然后,从小车的起点开始扩展,逐步遍历周围的网格点, 并计算代价函数,直到所有节点都被遍历为止。
三、Android开发
Android开发是基于Java或Kotlin语言进行的,它包括界面设计、代码开发等 环节。在智能小车的控制及路径规划中,Android开发可以为其提供强大的功 能和智能化。

基于Android平台的无线遥控智能小车

基于Android平台的无线遥控智能小车

基于Android平台的无线遥控智能小车朱丹峰;葛主冉;林晓雷【摘要】Design the hardware and software in the Android-based intelligent car with wireless remote control.The system has two kinds of remote control ways:Bluetooth and WiFi.As for the hardware,the system takes STC12C5A60S2 singlechip as the core,others is mainly composed by the Android devices,power supply modules,DC motor drivermodule,tracking module,obstacle avoidance module,light-searching module,WiFi module and camera module.Regarding the software,complete the programming of Android device in the upper computer and singlechip in the lower computer.After comparing the programs and testing the relevant parameters,the results show that the system of the intelligent car is stable and it can achieve the desired goals by perfectly performing functions of wireless remote control,tracking,obstacle avoidance,light-searching,video monitoring and so on.%设计基于Android平台的无线遥控智能小车的软硬件.该系统具有蓝牙和WiFi两种遥控方式.在硬件方面,该系统以STC12C5A60S2单片机为核心,其他主要由Android设备、稳压电源模块、直流电机驱动模块、循迹模块、避障模块、寻光模块、蓝牙模块、WiFi模块及摄像头模块等组成.在软件方面,完成了上位机Android设备程序、下位机单片机程序的编写.经过方案的对比,相关参数的测试,实验结果表明该智能小车系统稳定,能完成无线遥控、循迹、避障、寻光、视频监控等功能,达到预期目标.【期刊名称】《电子器件》【年(卷),期】2013(036)003【总页数】5页(P408-412)【关键词】Android;WiFi;蓝牙;单片机;监控;智能小车【作者】朱丹峰;葛主冉;林晓雷【作者单位】温州医学院生物医学工程系,浙江温州325035;温州医学院生物医学工程系,浙江温州325035;温州医学院生物医学工程系,浙江温州325035【正文语种】中文【中图分类】TP242.6目前,蓝牙和WiFi技术得到了空前广泛的应用,使用蓝牙和WiFi的产品非常多,如手机、电脑、汽车、游戏设备和医疗设备等。

基于Android手机蓝牙控制的智能小车设计

基于Android手机蓝牙控制的智能小车设计

基于Android手机蓝牙控制的智能小车设计汤莉莉;黄伟【摘要】This design is based on the Android,and provides a new research method for wireless smart car control by means of the bluetooth communication technology. With more and more wide use of Bluetooth in people's lives,a wireless smart car controlled by Bluetooth was designed in combination with of Bluetooth,wireless electronictechnology,microcontroller tech⁃nology and Android mobile intelligent terminal platform,as well as car hardware. The forward move,backward move,right front turn,left front turn,right rear turn,left rear turn and other functions of the smart car were achieved with bluetooth controltech⁃nology. In the course of the car moving,the car’s movement state can be controlled and changed by means of APP interfacebut⁃ton,gravity,voice through the Android mobile client. It provides a new design method for vehicle⁃mounted electronics for wire⁃less communication. It also provides a certain reference significance for the future design of wireless car and modern smart home.%基于Android平台,借助于蓝牙通信技术,为无线智能小车的设计提供一种新的研究方法。

蓝牙(NXT)机器人编程指导

蓝牙(NXT)机器人编程指导

应用领域及前景
• 教育领域:蓝牙(NXT)机器人可以作为教育工具,帮助学生了解机器人技术和编程知识。通过搭建和编程蓝牙 (NXT)机器人,学生可以培养动手能力和创新思维。
• 研究领域:蓝牙(NXT)机器人可以作为研究平台,用于研究机器人技术、人工智能等领域的前沿问题。研究人 员可以通过对蓝牙(NXT)机器人的改进和优化,推动相关技术的发展。
优化算法实现
对所选算法进行优化,包 括改进算法逻辑、减少计 算复杂度、提高代码执行 效率等方面。
性能评估与调优
通过性能测试和评估,发 现程序中存在的性能瓶颈 ,并针对性地进行优化和 调整。
错误处理与调试技巧
错误处理机制
建立完善的错误处理机制,包括错误检测、错误报告和错 误恢复等方面,以确保程序在出现异常情况时能够及时处 理并恢复正常运行。
感谢您的观看
调试与测试方法
使用LEGO MINDSTORMS NXT软件进行调试
该软件提供了实时数据监控和调试功能,方便用户查看和修改机器人状态。
使用蓝牙进行远程调试
通过蓝牙连接,将程序下载到NXT机器人上,进行实际运行测试。
日志记录与分析
在程序中添加日志记录功能,将机器人运行状态和相关数据记录下来,以便后续分析和 优化。
03
使用Python语言编程,易于学习和使用,同时拥有强大的库支
持和跨平台兼容性。
基本语法和编程规范
01
02
03
04
程序结构
了解主程序、子程序和中断服 务程序的概念及其在组织程序
中的作用。
语法规则
学习并掌握所选编程语言的基 本语法规则,如语句、表达式
、控制结构等。
命名规范
采用有意义的变量名和函数名 ,提高代码可读性和可维护性

蓝牙小车原理

蓝牙小车原理

蓝牙小车原理蓝牙小车是一种基于蓝牙通信技术的智能小车,它可以通过蓝牙与手机或其他设备进行连接,实现远程控制和数据传输。

在这篇文档中,我们将介绍蓝牙小车的原理及其工作方式。

首先,蓝牙小车的核心部件是蓝牙模块。

蓝牙模块是一种集成了蓝牙通信协议的硬件设备,它可以实现与其他蓝牙设备的无线通信。

在蓝牙小车中,蓝牙模块负责与手机或其他设备进行连接,接收控制指令并将其转换为小车的运动控制信号。

其次,蓝牙小车通常配备有多个传感器,如红外线传感器、超声波传感器等。

这些传感器可以实时感知周围环境的信息,并将其转化为电信号,传输给控制系统。

通过这些传感器,蓝牙小车可以实现避障、跟随等智能功能。

另外,蓝牙小车还包括电机驱动模块。

电机驱动模块负责控制小车的轮子转动,从而实现小车的前进、后退、转向等动作。

通过蓝牙模块接收到的控制指令,电机驱动模块可以精确地控制小车的运动。

除此之外,蓝牙小车还需要一个控制系统来整合各个部件的功能。

控制系统通常由单片机或嵌入式系统构成,它接收蓝牙模块传来的控制指令,再根据传感器的反馈信息和预设的算法进行运算,最终输出控制信号给电机驱动模块,实现小车的运动控制。

综上所述,蓝牙小车的原理是通过蓝牙模块与手机或其他设备进行连接,接收控制指令并将其转换为小车的运动控制信号;通过传感器感知周围环境的信息,并将其转化为电信号传输给控制系统;通过电机驱动模块控制小车的轮子转动,实现小车的运动;最后,通过控制系统整合各个部件的功能,实现蓝牙小车的智能控制和运动功能。

希望通过本文档的介绍,读者对蓝牙小车的原理有了更深入的了解,为后续的设计和应用提供了一定的参考和帮助。

基于安卓手机蓝牙控制的智能小车设计

基于安卓手机蓝牙控制的智能小车设计

基于安卓手机蓝牙控制的智能小车设计智能小车是一种集成了多种智能技术的机械装置,可以通过蓝牙控制进行操作。

本文将基于安卓手机蓝牙控制的智能小车设计进行详细介绍。

1.设计背景和目标智能小车是近年来智能家居和物联网技术的热门应用之一、本设计旨在通过安卓手机蓝牙控制,实现对小车的远程操控,并能够获取小车的状态数据。

2.硬件设计本设计所需的硬件主要有:安卓手机、Arduino控制器、蓝牙模块、直流电机和车轮。

2.1 Arduino控制器Arduino控制器作为智能小车的主控,负责接收蓝牙模块发送的指令,并控制直流电机完成相应的运动。

2.2蓝牙模块蓝牙模块负责与安卓手机进行通信。

当用户在手机上发送指令时,蓝牙模块将指令通过串口发送给Arduino控制器。

2.3直流电机和车轮直流电机是智能小车的推动力源,通过车轮将电机的转动转化为小车的运动。

可以根据实际需要选择单个电机或多个电机的配置。

3.软件设计本设计主要涉及两个方面的软件设计:安卓手机控制应用和Arduino控制程序。

3.1安卓手机控制应用安卓手机控制应用是用户与智能小车交互的界面。

用户可以通过应用界面发送指令给小车,控制其前进、后退、转向等行为。

应用还可以显示小车的实时状态数据,例如电池电量、速度等。

3.2 Arduino控制程序Arduino控制程序是小车的控制逻辑,通过与蓝牙模块的通信接收指令,并控制直流电机完成相应的动作。

可以根据用户指令的不同,控制电机正转、反转或停止。

4.系统功能本设计的智能小车主要具备以下功能:1)远程控制:通过安卓手机控制应用,用户可以远程控制小车的行动。

2)实时数据显示:应用可以显示小车的实时状态数据,方便用户了解小车的工作状态。

3)电量提醒:当小车的电池电量低于设定值时,应用将会提醒用户及时充电。

4)编程扩展性:用户可以通过简单的编程方式扩展小车的功能,例如添加避障传感器、红外遥控等模块。

5)兼容性:本设计兼容大多数安卓手机,并且可以与其他智能设备进行蓝牙通信。

51单片机智能小车蓝牙遥控+测速程序源代码、电路原理图和电路器件表

51单片机智能小车蓝牙遥控+测速程序源代码、电路原理图和电路器件表

51单片机智能小车蓝牙遥控+测速程序源代码、电路原理图、电路器件表HC-05蓝牙模块测速模块智能小车蓝牙遥控+测速是:可以用智能小车手机蓝牙遥控APP 控制智能小车的前进,后退,左转,右转和停止。

同时利用测速模块测量智能小车的运动速度,并将智能小车的速度显示在液晶屏上。

智能小车蓝牙遥控+测速程序流程图如下:下文主要提供了51单片机智能小车蓝牙遥控+测速完整程序源代码、电路原理图以及电路器件表。

智能小车核心板原理图STC15W4K56S4智能小车核心板器件(BOM)表实物图060306030603PIN插针PIN2x1406030603直插LQFP7x7-48 STC15W4K56S4智能小车核心板正面STC15W4K56S4智能小车核心板背面智能小车驱动板原理图51单片机(STC15W4K56S4)智能小车驱动板器件(BOM)表实物图直插直插直插直插直插直插直插直插直插直插PIN与PIN之间的间隔2.54mm插电池盒PIN与PIN间隔2.54mm,插电机3PIN插针,针与针间隔2.54mm插舵机红色插针和黑色插针3.3V红色插针、GND黑色插针PIN红色插针和黑色插针5V PIN红色插针和黑色插针VINPIN与PIN之间的间隔2.54mm 插MQ2模块针与针间隔2.54mm插GP2Y1014AU模块针与针间隔2.54mm语音播报实验时,串口4插语音播报模块针与针间隔2.54mmIO扩展用,没有必要不要焊接针与针间隔2.54mm插DHT11模块用4PIN插针,针与针间隔2.54mm用杜邦线连接超声波模块针与针间隔2.54mm插蓝牙模块(要原厂原装的)用8PIN插针,针与针间隔2.54mm杜邦线连接红外循迹避障模块用4PIN插针,针与针间隔2.54mm用杜邦线连接测速模块针与针间隔2.54mm插5V的LCD1602液晶MPU6050不要焊接。

也可以用导线直接将但一定要注意不要短接直插直插直插电阻直插直插电阻这直插电阻直插电阻电阻电阻5V3.3V5V红外遥控信号接收管直插针与针间隔2.54mm,插MPU6050模块,目前只是在电路图上保留了该接口,并无相关实验程序。

蓝牙智能小车的原理

蓝牙智能小车的原理

蓝牙智能小车的原理硬件原理:1.主控制器:主控制器是智能小车的大脑,负责解析接收到的指令并控制电机的转动。

主控制器中通常包含一个具有处理能力的微控制器单元(MCU),由它负责整个系统的控制和运算。

2.电机驱动:电机驱动模块负责将主控制器传来的信号转化为电机能够接收的电流和电压,实现电机的正转、反转或停止。

3.电源系统:为了供给小车的各个模块和电机驱动模块所需的电能,蓝牙智能小车通常需要一个电源系统,可以使用电池或者外部电源供电。

软件原理:1.蓝牙通信:主控制器通过配备的蓝牙模块与手机或电脑进行通信。

当手机或电脑上的蓝牙设备到智能小车时,可以通过连接和配对的方式建立起通信。

2.指令解析:蓝牙模块接收到手机或电脑发送的指令后,传递给主控制器进行解析。

主控制器根据指令的不同,识别指令的类型并进行相应的处理,例如转动电机、改变小车的方向等。

3.控制信号输出:主控制器根据指令解析的结果,将处理后的控制信号输出给电机驱动,通过控制电机驱动的转动方式,实现小车的运动。

1.手机或电脑通过蓝牙与小车建立连接,并通过特定的应用程序发送控制指令。

2.小车的蓝牙模块接收到指令后,将指令传递给主控制器。

3.主控制器解析指令后,根据指令的内容控制电机驱动模块的工作。

4.电机驱动模块根据主控制器的指令控制电机的转动方向和速度,从而控制小车的运动。

5.用户通过手机或电脑的操作界面不断发送指令,控制小车的移动、停止或拐弯等。

总结:蓝牙智能小车的原理主要包括硬件和软件两个方面。

硬件部分包括主控制器、电机驱动和电源系统,软件部分包括蓝牙通信、指令解析和控制信号输出。

通过手机或电脑与小车的蓝牙设备建立连接,并通过应用程序发送指令,控制小车的运动。

蓝牙智能小车的原理可使用户通过手机或电脑实现对小车的无线控制,为用户带来更好的体验。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

上次成功实现了通过笔记本电脑蓝牙来控制智能小车机器人的运动,但是通过电脑控制毕竟不方便,于是乎~本人打算将控制程序移植到手机上。

目前主流的手机操作系统有塞班、安卓(Android)、Windows Mobile,对比了一下,首先,塞班是用C++写的,这么多门语言我唯独看到C++就头大···,放弃了···,Windows Moblie 其实和之前发的电脑端程序基本是一样的,也就没什么意思了,最后决定选择目前正火的Android手机作为控制平台。

Android是个开源的应用,使用Java语言对其编程。

于是这次的开发我选用Eclipse作为开发工具,用Java语言开发手机端的控制程序,由于之前对Android的蓝牙通信这块涉及不多,一开始感觉有点小茫然,而网上也少有这方面的例程,有少数人做出了类似的东西,但是只传了个视频装X!雪特····经过几天的研究,最终确定了手机蓝牙通信其实就是Socket编程,再经过一番编写和调试,昨晚终于大功告成!这是视频:下面开始介绍Android手机端控制程序的编写:首先打开Eclipse,当然之前的Java开发环境和安卓开发工具自己得先配置好,这里就不多说了,网上教程一大摞。

然后新建一个Android项目,修改布局文件main.xml,代码如下:<?xml version="1.0" encoding="utf-8"?><AbsoluteLayoutandroid:id="@+id/widget0"android:layout_width="fill_parent"android:layout_height="fill_parent"xmlns:android="/apk/res/android"><Buttonandroid:id="@+id/btnF"android:layout_width="100px"android:layout_height="60px"android:text="前进"android:layout_x="130px"android:layout_y="62px"></Button><Buttonandroid:id="@+id/btnL"android:layout_width="100px"android:layout_height="60px"android:text="左转"android:layout_x="20px"android:layout_y="152px"></Button><Buttonandroid:id="@+id/btnR"android:layout_width="100px"android:layout_height="60px"android:text="右转"android:layout_x="240px"android:layout_y="152px"></Button><Buttonandroid:id="@+id/btnB"android:layout_width="100px"android:layout_height="60px"android:text="后退"android:layout_x="130px"android:layout_y="242px"></Button><Buttonandroid:id="@+id/btnS"android:layout_width="100px"android:layout_height="60px"android:text="停止"android:layout_x="130px"android:layout_y="152px"></Button></AbsoluteLayout>这个布局文件的效果就是如视频中所示的手机操作界面。

然后是权限声明,这一步不能少,否则将无法使用安卓手机的蓝牙功能。

权限声明如下:打开AndroidManifest.xml文件,修改代码如下:<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package="com.ThinBTClient.www"android:versionCode="1"android:versionName="1.0"><uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /><uses-permission android:name="android.permission.BLUETOOTH" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".ThinBTClient"android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="UNCHER" /> </intent-filter></activity></application></manifest>其中红色、加粗部分就是要添加的权限声明。

然后编写Activity中的执行代码,这些代码的作用就是发送指令,控制小车的运动。

代码如下:package com.ThinBTClient.www;import android.app.Activity;import android.os.Bundle;import java.io.IOException;import java.io.OutputStream;import java.util.UUID;import android.app.Activity;import android.bluetooth.BluetoothAdapter;import android.bluetooth.BluetoothDevice;import android.bluetooth.BluetoothSocket;import android.content.DialogInterface;import android.content.DialogInterface.OnClickListener;import android.os.Bundle;import monDataKinds.Event;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.widget.Button;import android.widget.Toast;public class ThinBTClient extends Activity {private static final String TAG = "THINBTCLIENT";private static final boolean D = true;private BluetoothAdapter mBluetoothAdapter = null;private BluetoothSocket btSocket = null;private OutputStream outStream = null;Button mButtonF;Button mButtonB;Button mButtonL;Button mButtonR;Button mButtonS;private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");private static String address = "00:11:03:21:00:43"; // <==要连接的蓝牙设备MAC 地址/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);//前进mButtonF=(Button)findViewById(R.id.btnF);mButtonF.setOnTouchListener(new Button.OnTouchListener(){ @Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stubString message;byte[] msgBuffer;int action = event.getAction();switch(action){case MotionEvent.ACTION_DOWN:try {outStream = btSocket.getOutputStream();} catch (IOException e) {Log.e(TAG, "ON RESUME: Output stream creation failed.", e);}message = "1";msgBuffer = message.getBytes();try {outStream.write(msgBuffer);} catch (IOException e) {Log.e(TAG, "ON RESUME: Exception during write.", e);}break;case MotionEvent.ACTION_UP:try {outStream = btSocket.getOutputStream();} catch (IOException e) {Log.e(TAG, "ON RESUME: Output stream creation failed.", e);}message = "0";msgBuffer = message.getBytes();try {outStream.write(msgBuffer);} catch (IOException e) {Log.e(TAG, "ON RESUME: Exception during write.", e);}break;}return false;}});//后退mButtonB=(Button)findViewById(R.id.btnB);mButtonB.setOnTouchListener(new Button.OnTouchListener(){ @Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stubString message;byte[] msgBuffer;int action = event.getAction();switch(action){case MotionEvent.ACTION_DOWN:try {outStream = btSocket.getOutputStream();} catch (IOException e) {Log.e(TAG, "ON RESUME: Output stream creation failed.", e);}message = "3";msgBuffer = message.getBytes();try {outStream.write(msgBuffer);} catch (IOException e) {Log.e(TAG, "ON RESUME: Exception during write.", e);}break;case MotionEvent.ACTION_UP:try {outStream = btSocket.getOutputStream();} catch (IOException e) {Log.e(TAG, "ON RESUME: Output stream creation failed.", e);}message = "0";msgBuffer = message.getBytes();try {outStream.write(msgBuffer);} catch (IOException e) {Log.e(TAG, "ON RESUME: Exception during write.", e);}break;}return false;}});//左转mButtonL=(Button)findViewById(R.id.btnL);mButtonL.setOnTouchListener(new Button.OnTouchListener(){@Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stubString message;byte[] msgBuffer;int action = event.getAction();switch(action){case MotionEvent.ACTION_DOWN:try {outStream = btSocket.getOutputStream();} catch (IOException e) {Log.e(TAG, "ON RESUME: Output stream creation failed.", e);}message = "2";msgBuffer = message.getBytes();try {outStream.write(msgBuffer);} catch (IOException e) {Log.e(TAG, "ON RESUME: Exception during write.", e);}break;case MotionEvent.ACTION_UP:try {outStream = btSocket.getOutputStream();} catch (IOException e) {Log.e(TAG, "ON RESUME: Output stream creation failed.", e);}message = "0";msgBuffer = message.getBytes();try {outStream.write(msgBuffer);} catch (IOException e) {Log.e(TAG, "ON RESUME: Exception during write.", e);}break;}return false;}});//右转mButtonR=(Button)findViewById(R.id.btnR);mButtonR.setOnTouchListener(new Button.OnTouchListener(){ @Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stubString message;byte[] msgBuffer;int action = event.getAction();switch(action){case MotionEvent.ACTION_DOWN:try {outStream = btSocket.getOutputStream();} catch (IOException e) {Log.e(TAG, "ON RESUME: Output stream creation failed.", e);}message = "4";msgBuffer = message.getBytes();try {outStream.write(msgBuffer);} catch (IOException e) {Log.e(TAG, "ON RESUME: Exception during write.", e);}break;case MotionEvent.ACTION_UP:try {outStream = btSocket.getOutputStream();} catch (IOException e) {Log.e(TAG, "ON RESUME: Output stream creation failed.", e);}message = "0";msgBuffer = message.getBytes();try {outStream.write(msgBuffer);} catch (IOException e) {Log.e(TAG, "ON RESUME: Exception during write.", e);}break;}return false;}});//停止mButtonS=(Button)findViewById(R.id.btnS);mButtonS.setOnTouchListener(new Button.OnTouchListener(){ @Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stubif(event.getAction()==MotionEvent.ACTION_DOWN)try {outStream = btSocket.getOutputStream();} catch (IOException e) {Log.e(TAG, "ON RESUME: Output stream creation failed.", e);}String message = "0";byte[] msgBuffer = message.getBytes();try {outStream.write(msgBuffer);} catch (IOException e) {Log.e(TAG, "ON RESUME: Exception during write.", e);}return false;}});if (D)Log.e(TAG, "+++ ON CREATE +++");mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();if (mBluetoothAdapter == null) {Toast.makeText(this, "Bluetooth is not available.", Toast.LENGTH_LONG).show();finish();return;}if (!mBluetoothAdapter.isEnabled()) {Toast.makeText(this, "Please enable your Bluetooth and re-runthis program.", Toast.LENGTH_LONG).show();finish();return;}if (D)Log.e(TAG, "+++ DONE IN ON CREATE, GOT LOCAL BT ADAPTER +++");}@Overridepublic void onStart() {super.onStart();if (D) Log.e(TAG, "++ ON START ++");}@Overridepublic void onResume() {super.onResume();if (D) {Log.e(TAG, "+ ON RESUME +");Log.e(TAG, "+ ABOUT TO ATTEMPT CLIENT CONNECT +");}BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);try {btSocket = device.createRfcommSocketToServiceRecord(MY_UUID);} catch (IOException e) {Log.e(TAG, "ON RESUME: Socket creation failed.", e);}mBluetoothAdapter.cancelDiscovery();try {btSocket.connect();Log.e(TAG, "ON RESUME: BT connection established, data transfer link open.");} catch (IOException e) {try {btSocket.close();} catch (IOException e2) {Log .e(TAG,"ON RESUME: Unable to close socket during connection failure", e2);}}// Create a data stream so we can talk to server.if (D)Log.e(TAG, "+ ABOUT TO SAY SOMETHING TO SERVER +");/* try {outStream = btSocket.getOutputStream();} catch (IOException e) {Log.e(TAG, "ON RESUME: Output stream creation failed.", e);}String message = "1";byte[] msgBuffer = message.getBytes();try {outStream.write(msgBuffer);} catch (IOException e) {Log.e(TAG, "ON RESUME: Exception during write.", e);}*/}@Overridepublic void onPause() {super.onPause();if (D)Log.e(TAG, "- ON PAUSE -");if (outStream != null) {try {outStream.flush();} catch (IOException e) {Log.e(TAG, "ON PAUSE: Couldn't flush output stream.", e);}}try {btSocket.close();} catch (IOException e2) {Log.e(TAG, "ON PAUSE: Unable to close socket.", e2);}}@Overridepublic void onStop() {super.onStop();if (D)Log.e(TAG, "-- ON STOP --");}@Overridepublic void onDestroy() {super.onDestroy();if (D) Log.e(TAG, "--- ON DESTROY ---");}}可以看到,在这个程序中我直接把小车蓝牙模块的MAC地址给写进去了,其实更合理一点应该让程序运行后搜索周围蓝牙设备,然后选择需要连接的设备,获取它的MAC地址再连接,但是我为了图省事,就直接把我的小车的蓝牙MAC给定死了(反正也没那么多小车让我遥控~~~),这样一打开程序,手机将自动连接智能小车。

相关文档
最新文档