1、成功实现手机蓝牙控制智能小车机器人视频程序源代码Android上次成功实现了通过笔记本电脑蓝牙来控制智能小车机器人的运动,但是通过电脑控制毕竟不方便,于是乎本人打算将控制程序移植到手机上。目前主流的手机操作系统有塞班、安卓(Android)、Windows Mobile,对比了一下,首先,塞班是用C+写的,这么多门语言我唯独看到C+就头大,放弃了,Windows Moblie其实和之前发的电脑端程序基本是一样的,也就没什么意思了,最后决定选择目前正火的Android手机作为控制平台。Android是个开源的应用,使用Java语言对其编程。于是这次的开发我选用Eclipse作为开发工具,用Jav
2、a语言开发手机端的控制程序,由于之前对Android的蓝牙通信这块涉及不多,一开始感觉有点小茫然,而网上也少有这方面的例程,有少数人做出了类似的东西,但是只传了个视频装X!雪特经过几天的研究,最终确定了手机蓝牙通信其实就是Socket编程,再经过一番编写和调试,昨晚终于大功告成!这是视频:下面开始介绍Android手机端控制程序的编写:首先打开Eclipse,当然之前的Java开发环境和安卓开发工具自己得先配置好,这里就不多说了,网上教程一大摞。然后新建一个Android项目,修改布局文件main.xml,代码如下: 这个布局文件的效果就是如视频中所示的手机操作界面。然后是权限声明,这一步不能
3、少,否则将无法使用安卓手机的蓝牙功能。权限声明如下:打开AndroidManifest.xml文件,修改代码如下: 其中红色、加粗部分就是要添加的权限声明。然后编写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.ap
4、p.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 android.provider.ContactsContract.C
5、ommonDataKinds.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 B
6、luetoothAdapter 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); pr
7、ivate static String address = 00:11:03:21:00:43; / =要连接的蓝牙设备MAC地址 /* Called when the activity is first created. */ Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); /前进 mButtonF=(Button)findViewById(R.id.btnF); mButtonF.setOnT
8、ouchListener(new Button.OnTouchListener() Override public boolean onTouch(View v, MotionEvent event) / TODO Auto-generated method stub String message; byte msgBuffer; int action = event.getAction(); switch(action) case MotionEvent.ACTION_DOWN: try outStream = btSocket.getOutputStream(); catch (IOExc
9、eption 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(); cat
10、ch (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); mBu
11、ttonB.setOnTouchListener(new Button.OnTouchListener() Override public boolean onTouch(View v, MotionEvent event) / TODO Auto-generated method stub String message; byte msgBuffer; int action = event.getAction(); switch(action) case MotionEvent.ACTION_DOWN: try outStream = btSocket.getOutputStream();
12、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.getOutputS
13、tream(); 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.i
14、d.btnL); mButtonL.setOnTouchListener(new Button.OnTouchListener() Override public boolean onTouch(View v, MotionEvent event) / TODO Auto-generated method stub String message; byte msgBuffer; int action = event.getAction(); switch(action) case MotionEvent.ACTION_DOWN: try outStream = btSocket.getOutp
15、utStream(); 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 = btSocke
16、t.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)find
17、ViewById(R.id.btnR); mButtonR.setOnTouchListener(new Button.OnTouchListener() Override public boolean onTouch(View v, MotionEvent event) / TODO Auto-generated method stub String message; byte msgBuffer; int action = event.getAction(); switch(action) case MotionEvent.ACTION_DOWN: try outStream = btSo
18、cket.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 outStre
19、am = 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=
20、(Button)findViewById(R.id.btnS); mButtonS.setOnTouchListener(new Button.OnTouchListener() Override public boolean onTouch(View v, MotionEvent event) / TODO Auto-generated method stub if(event.getAction()=MotionEvent.ACTION_DOWN) try outStream = btSocket.getOutputStream(); catch (IOException e) Log.e
21、(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 = BluetoothAdapt
22、er.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-run this program., Toast.LENGTH_LONG).show(); finish(); ret
23、urn; if (D) Log.e(TAG, + DONE IN ON CREATE, GOT LOCAL BT ADAPTER +); Override public void onStart() super.onStart(); if (D) Log.e(TAG, + ON START +); Override public 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();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1