蓝牙灯泡
来源:互联网 发布:加速度传感器算法 编辑:程序博客网 时间:2024/04/29 00:23
今天学习了一下智能家居方面的内容,我作为一个新手感觉其实作为Android程序员对于智能家居的软件开发,就类似与我们使用环信的平台的SDK一样,对于SDK内的方法进行调用.
蓝牙灯泡的工作原理:
手机—>蓝牙—>灯泡的蓝牙模块—>灯泡接受指令运行
布局文件:打开蓝牙,关闭蓝牙,扫描周围蓝牙,停止扫描,开灯,关灯,点动等按钮.
权限问题:一定要有两个对蓝牙的操作功能
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/><uses-permission android:name="android.permission.BLUETOOTH"/>
获取本地蓝牙适配器:
BluetoothAdapter mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
打开/关闭手机蓝牙
// 打开手机蓝牙 mBluetoothAdapter .enable(); // 关闭手机蓝牙 mBluetoothAdapter.disable();
当然,我们在实际操作中,我还是觉得我们应该对于对象要先判断空不空的问题.
//蓝牙是否可用 if(!mBluetoothAdapter.isEnabled()){ mBluetoothAdapter.enable(); } //关闭蓝牙 if(mBluetoothAdapter.isEnabled()){ mBluetoothAdapter.disable(); }
扫描蓝牙设备
// 扫描蓝牙设备 mBluetoothAdapter.startDiscovery(); 取消扫描蓝牙设备,减少资源的消耗 mBluetoothAdapter.cancelDiscovery();
那么到这里就出现一个问题,扫描到了的蓝牙设备怎么呈现他们的数据给我,所以为了及时能够获取到信息.我们可以通过广播接收者,蓝牙扫描完成会发送广播,告诉我们他扫描到了什么.
注册广播接收者
添加蓝牙广播接受者
IntentFilter filter = new IntentFilter(); // 开始扫描的广播 filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED); // 扫描完成的广播 filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED); // 发现一个可用的设备的广播 filter.addAction(BluetoothDevice.ACTION_FOUND); mBluetoothReceiver = new BluetoothReceiver(); //注册监听 registerReceiver(mBluetoothReceiver, filter);
获取蓝牙接收者的设备
`//设备数据对象 BluetoothDevice device= intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);`
连接蓝牙设备
这里我们需要注意,因为我们的连接是通过socket连接,需要耗时操作,所以我们就需在子线程运行.
public void connectServer(final BluetoothDevice device) { new Thread(new Runnable(){ @Override public void run() { try { System.out.println(randomUUID.toString()); BluetoothSocket clientSocket = device. createRfcommSocketToServiceRecord( UUID.fromString("00001101-0000-1000-8000-00805f9b34fb")); clientSocket.connect(); out = clientSocket.getOutputStream(); System.out.println("连接成功"); Looper.prepare(); Toast.makeText(BluetoothDemoActivity.this, "连接成功", 0).show(); Looper.loop(); } catch (IOException e) { e.printStackTrace(); } }}).start(); }
操作灯泡
根据您的客户给的继电器控制指令表,然后你才决定要输出什么数据,决定不同操作,用流的形式输出,16进制.
try { // TODO Auto-generated method stub byte[] bs=new byte[5]; bs[0] = (byte)0x01; bs[1] = (byte)0x99; if(i== 0) { bs[2] = (byte)0x10; bs[3] = (byte)0x10; }else if(i==1) { bs[2] = (byte)0x11; bs[3] = (byte)0x11; }else if(i==2) { bs[2] = (byte)0x17; bs[3] = (byte)0x17; } bs[4] = (byte)0x99; mOutputStream.write(bs); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
0 0
- 蓝牙灯泡
- arduino蓝牙控制灯泡
- 灯泡
- UHP 灯泡
- UHE灯泡
- 灯泡开关
- 按灯泡
- 灯泡开关
- 灯泡开关
- 意大利灯泡
- 灯泡的故事
- 投影机灯泡常识
- 开关和灯泡问题
- 百度:100个灯泡
- 灯泡,PC 与 云
- 华为灯泡问题
- 灯泡排列题
- .有100盏灯泡
- Android仿微信选择图片
- 建造者模式——建立流水线
- js 三元操作符
- 如何在debug模式下,使用正式的签名文件
- Android: Resource Type Animation
- 蓝牙灯泡
- C++/Java 实现多态的方法(Java)
- 外观模式——设立办事处
- react教程
- butterknife自定义view出错
- android连接wifi
- sql查询之exitst
- Problem-H
- android下基于开源浏览器项目crosswalk的js与java交互