手机客户端的实现


通过手机自身所带的蓝牙实现连接蓝牙模块,从而实现通过单片机控制继电器,实现弱电控制强电(由之前项目拆分出来用来演示的小demo)

首先要实现开启蓝牙设备,以及设置可见时间

{
BluetoothAdapter adapter =BluetoothAdapter.getDefaultAdapter();
if(!adapter.isEnabled())
{
adapter.enable();
}
Intent enable new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
enable.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,3600);
startActivity(enable);
Intent searchIntent =new Intent(thia,led.class);
startActivity(searchIntent);
}

获得一个BluetoothAdapter适配器,通过getDefaultAdapter()获得系统默认蓝牙适配器。

private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");private static BluetoothAdapter myAdapter=null;private ConnectThread myConnectThread;private static Handler myHandler;private ConnectedThread myConnectedThread;private static Bluetoothserive mBluetoothserive = new Bluetoothserive();//private static int mState;// Constants that indicate the current connection statepublic static final int STATE_NONE = 0;       // we're doing nothingpublic static final int STATE_LISTEN = 1;     // now listening for incoming connectionspublic static final int STATE_CONNECTING = 2; // now initiating an outgoing connectionpublic static final int STATE_CONNECTED = 3;  // now connected to a remote deviceprivate static int mState = STATE_NONE;<pre name="code" class="java">public synchronized void connected(BluetoothSocket socket, BluetoothDevice device) {if(myConnectedThread!=null){myConnectedThread.cancel();myConnectedThread=null;}myConnectedThread = new ConnectedThread(socket);myConnectedThread.start();setState(STATE_CONNECTED);Message msg = myHandler.obtainMessage(Kongtiao.MESSAGE_TOAST);Bundle bundle = new Bundle();bundle.putString(Kongtiao.TOAST, "连接智能盒成功");MainActivity.isConnected = true;msg.setData(bundle);myHandler.sendMessage(msg);}

实现读写函数

public void write(byte[] out) {ConnectedThread r;synchronized (this) {r = myConnectedThread;}r.write(out);}
public void read(byte[] in){ConnectedThread m;synchronized (this) {m  = myConnectedThread;}}
Connected类,用于流的处理private class ConnectedThread extends Thread {private final BluetoothSocket mySocket;private final InputStream myInStream;private final OutputStream myOutStream;public ConnectedThread(BluetoothSocket socket) {// 这个是之前的用于连接的socket mySocket = socket;InputStream tmpIn = null;OutputStream tmpOut = null;//从连接的socket里获取InputStream和OutputStream  try {tmpIn = socket.getInputStream();tmpOut = socket.getOutputStream();} catch (IOException e) { }myInStream = tmpIn;myOutStream = tmpOut;}public void run() {byte[] buffer = new byte[1024];  // buffer store for the streamint bytes; // bytes returned from read()// 已经连接上以后持续从通道中监听输入流的情况 while (true) {try {//  从通道的输入流InputStream中读取数据到buffer数组中bytes = myInStream.read(buffer);//  myInStream.read(bytes);// 将获取到数据的消息发送到UI界面,同时也把内容buffer发过去显示myHandler.obtainMessage(Kongtiao.MESSAGE_READ, bytes, -1, buffer).sendToTarget();} catch (IOException e) {break;}}}public void write(byte[] bytes) {try {//将buffer内容写进通道myOutStream.write(bytes);// 用于将自己发送给对方的内容也在UI界面显示  //    mHandler.obtainMessage(BluetoothChat.MESSAGE_WRITE, -1, -1, buffer)  } catch (IOException e) { }}/* //关闭socket,即关闭通道  */public void cancel() {try {mySocket.close();} catch (IOException e) { }}}

接收以及发送字符的形式,十六进制

// byte write[] = new byte[]{-1,0,0x0f};设置多个十六进制字符,可以有效的防止信号干扰// 十六进制数据声明byte write[] = new byte[] { 0x0f };
数据处理:public final Handler myHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {switch (msg.what) {case MESSAGE_TOAST:Toast.makeText(getApplicationContext(),msg.getData().getString(TOAST), Toast.LENGTH_SHORT).show();break;case MESSAGE_READ:byte[] readBuf = (byte[]) msg.obj;//在读别人发过来的数据的时候,由于别人发过来的是一个byte数组,//然后数组里面不是每个元素都是有效数据,所以要自己对数据进行String再构造处理//第一个参数是字节数组,第二个为偏移量,(内容是从第一个位置写入的),第三个参数是长度。break;} catch (Exception e) {// TODO: handle exception}default:break;}super.handleMessage(msg);}};

Click函数对应的处理

public void onClick(View v) {switch (v.getId()) {// 关闭灯case R.id.guan:write[0] = 0x02;break;// 打开灯case R.id.dakaikongtiao:write[0] = 0x01;break;default:break;
}

如果希望获取源码或毕设指导,软、硬件都可以提供协助支持。请打赏支持! 微信扫一扫支付

android蓝牙控制继电器——手机客户端的实现相关推荐

  1. steam android app,steam手机客户端下载

    steam app是适用于移动设备的国际游戏平台Steam手机客户端,你现在可以用手机随时随地加入到Steam社区中去,玩游戏应该没有人不知道Steam吧,像很多很好玩的PC游戏都可以在Steam上购 ...

  2. android 蓝牙控制继电器——单片机控制端

    一直没怎么写博客,贴一个比较简单小例子(以前做的 android 通过wifi实现万能遥控器 中拆分出来的小案例): android客户端通过蓝牙协议,控制继电器(想控制其他玩意,自己设计) 图示: ...

  3. android端蓝牙控制单片机,android 蓝牙控制继电器——单片机控制端

    一直没怎么写博客,贴一个比较简单小例子(以前做的 android 通过wifi实现万能遥控器 中拆分出来的小案例): android客户端通过蓝牙协议,控制继电器(想控制其他玩意,自己设计) 图示: ...

  4. 蓝牙助手android,蓝牙助手手机版

    蓝牙分享助手是一款可以帮你传输手机上文件的应用,有了这款工具,你一定会爱上系统蓝牙的.相信大家一般都没用到android手机的蓝牙功能吧!为什么,因为不实用!蓝牙分享助手让你爱上蓝牙,她可以帮你将手机 ...

  5. android蓝牙电话音量,android – 蓝牙免提客户端音量控制

    我有一个Android设备作为一个免提客户端设备使用hfp. 我可以接到一个电话,扬声器和麦克风工作正如预期. 我的问题是,我似乎无法控制音量. 我试着使用下面的代码行找到正确的流,但没有一个似乎工作 ...

  6. 观众网app android,观众网手机客户端(电视节目录制报名)

    很多电视节目都会邀请一些观众参加到节目的录制过程中,观众也可以近距离接触自己喜欢的节目,观众网能帮助大家免费报名参加节目的录制,如果你对某档节目十分喜欢的话,那就赶紧通过观众网报名参加录制吧! 官方介 ...

  7. 银行排队系统服务器端,手机客户端实现 - 银行叫号手机排队系统解决方案

    2.3.2 手机客户端实现 项目组实现了基于Android 平台的手机客户端,当前支持操作系统为Android 2.0 以上版本的手机.在实现中充分考虑了用户使用的方便性,需要用户输入的操作极少,大部 ...

  8. discuz手机客户端java_APPCAN推Discuz手机论坛客户端插件

    2012年2月16日,APPCAN手机论坛客户端beta版正式发布.在这个移动OS风起云涌的移动互联时代,APPCAN让论坛不再是PC的专 利,帮站长轻松实现论坛移动化.AppCan手机论坛客户端是A ...

  9. Android通过Bluetooth蓝牙发送手机照片文件到Windows PC:Java实现

    Android通过Bluetooth蓝牙发送手机照片文件到Windows PC:Java实现 本文在<Android通过蓝牙发送数据到Windows PC电脑:Java实现(链接地址:https ...

最新文章

  1. 通过python+ftps远程备份企业数据
  2. 常见TCP/UDP端口
  3. 金环(2017佛山市选拔初中组)
  4. 2d绘制 c# dx_C# DX 编程
  5. how is ui5 resource root calculated
  6. scrapy保存、中断、继续执行爬虫程序
  7. JDK 14 调试神器了解一下?| 原力计划
  8. Java学习笔记 --- IDEA
  9. python源码剖析_Python源码剖析
  10. Python npy文件
  11. 实用常识 | 写论文时如何引用插入脚注 / 如何自定义脚注符号 / 如何将多个脚注合并在一起
  12. 成功将qt程序移植到arm板上
  13. tx2上装scikit-image
  14. 实际BCI应用:异步EEG/EOG BCI手抓取和释放的可行性
  15. kaggle之员工离职分析
  16. 表达矩阵melt之后 画图 reshape gaochao ards 1: Unknown or uninitialised column: `p`. 2: Computation failed i
  17. FHQ_TREAP学习笔记
  18. 六大布局之线性布局详解
  19. 强推面试前必刷:Alibaba 内部 Java 高级架构师
  20. 1094 习题6-6 杨辉三角

热门文章

  1. C++中使用剪贴板复制UNICODE/ANSI字符数据
  2. I00033 消除游戏
  3. C++ 中的友元(friend)
  4. 矩阵分解(matrix factorization)
  5. Linux 动态链接和静态链接简析(库名与库文件名)
  6. numpy 辨异(一) —— reshape 与 resize
  7. 仿函数(functors/function objects)原理及使用
  8. C++11::遍历tuple中的元素
  9. python如何读取csv文件列表页_Python:使用列表列表读取CSV文件的字段
  10. matlab nc转tif_旬和月NDVI最大值合成MATLAB