Bluetooth Adapter m Bluetooth Adapter Bluetooth Adapter get
关键步骤 • 获取本地蓝牙适配器 Bluetooth. Adapter m. Bluetooth. Adapter = Bluetooth. Adapter. get. Default. Adapter(); • 打开/关闭手机蓝牙 打开手机蓝牙 m. Bluetooth. Adapter. enable(); 关闭手机蓝牙 m. Bluetooth. Adapter. disable(); • 扫描/取消蓝牙设备 扫描蓝牙设备 m. Bluetooth. Adapter. start. Discovery(); 取消扫描蓝牙设备, 减少资源的消耗 m. Bluetooth. Adapter. cancel. Discovery();
关键步骤 • 注册蓝牙广播接受者 Intent. Filter filter = new Intent. Filter(); // 开始扫描的广播 filter. add. Action(Bluetooth. Adapter. ACTION_DISCOVERY_STARTED); // 扫描完成的广播 filter. add. Action(Bluetooth. Adapter. ACTION_DISCOVERY_FINISHED); // 发现一个可用的设备的广播 filter. add. Action(Bluetooth. Device. ACTION_FOUND); m. Bluetooth. Receiver = new Bluetooth. Receiver(); //注册监听 register. Receiver(m. Bluetooth. Receiver, filter);
关键步骤 • 蓝牙广播接受者 class Bluetooth. Receiver extends Broadcast. Receiver { @Override public void on. Receive(Context context, Intent intent) { //获取蓝牙设备 } }
• 连接设备 public void connect. Server(final Bluetooth. Device device) { new Thread(new Runnable(){ @Override public void run() { try { System. out. println(random. UUID. to. String()); Bluetooth. Socket client. Socket = device. create. Rfcomm. Socket. To. Service. Record( UUID. from. String("00001101 -0000 -1000 -8000 -00805 f 9 b 34 fb")); client. Socket. connect(); out = client. Socket. get. Output. Stream(); System. out. println("连接成功"); Looper. prepare(); Toast. make. Text(Bluetooth. Demo. Activity. this, "连接成功", 0). show(); Looper. loop(); } catch (IOException e) { e. print. Stack. Trace(); } }}). start(); }
关键步骤 • 打开灯泡 private void open. Light() { if(out == null) return; try { // 向服务端写数据 byte[] b = new byte[5]; b[0] = (byte) 0 x 01; b[1] = (byte) 0 x 99; b[2] = (byte) 0 x 10; b[3] = (byte) 0 x 10; b[4] = (byte) 0 x 99; out. write(b); out. flush(); } catch (IOException e) { Toast. make. Text(this, "打开失败", 0). show(); e. print. Stack. Trace(); } }
关键步骤 • 注销广播接受者 @Override protected void on. Destroy() { super. on. Destroy(); unregister. Receiver(m. Bluetooth. Receiver); }
jar包中需要用到的类和参数 • Monitor 监控画面控件, 继承自Surface. View – 初始化参数和方法 – 例如: DEFAULT_MAX_ZOOM_SCALE 默认最大焦距 PTZ_SPEED 移动速度 PTZ_DELAY 移动延时 FLING_MIN_DISTANCE 转动的最小距离 FLING_MIN_VELOCITY 移动的速率 set. Max. Zoom() 设置最大的焦距 attach. Camera (Camera camera, int channel) 绑 定摄像头 deattach. Camera() 解除绑定
关键步骤 • 2. 连接摄像头 – • • – 2. 1初始化显示控件 com. tutk. IOTC. Monitor 2. 2初始化摄像头和连接 初始化摄像头 Camera. init(); Camera camera=new Camera(); 连接摄像头 camera. connect(uid); camera. start(Camera. DEFAULT_AV_CHANEL, name, passowrd); 2. 3注册监听发送测试指令 注册监听 camera. register. IOTCListener(this); 发送指令 camera. send. IOCtrl(Camera. DEFAULT_AV_CHANNEL, AVIOCTRLDEFs. IOTYPE_USER_IPCAM_GETSUPPORTSTREAM_ REQ, SMsg. AVIoctrl. Get. Support. Stream. Req. parse. Content());
关键步骤 • 3. 获取指令返回信息和连接状态 • 获取指令信息的方法 @Override public void receive. Channel. Info(Camera camera, int channel, result. Code) { Message message = Message. obtain(); message. what = result. Code; handler. send. Message(message); } int
关键步骤 • 4. 显示监控画面 //1, 判断摄像头是否在连接状态 if (camera != null&& camera. is. Channel. Connected(Camera. DEFAULT_AV_CHANNEL)) { // 2, 设置最大焦距 monitor. set. Max. Zoom(1. 0 f); // 3, 绑定摄像头 monitor. attach. Camera(camera, Camera. DEFAULT_AV_CHANNEL); // 参数 1: 渠道号 // 参数 2: 是否允许拍照, true 允许拍照; false 不允许拍 照 camera. start. Show(Camera. DEFAULT_AV_CHANNEL, true); }
关键步骤 • 5. 上下左右移动控制 //移动指令 camera. send. IOCtrl(Camera. DEFAULT_AV_CHANNEL, AVIOCTRLDEFs. IOTYPE_USER_IPCAM_PTZ_COMMAND, SMsg. AVIoctrl. Ptz. Cmd. parse. Content( (byte)AVIOCTRLDEFs. AVIOCTRL_PTZ_UP, (byte)0, (byte)Camera. DEFAULT_AV_CHANNEL));
关键步骤 • 6. 断开连接 1). 解除绑定 cameraplay. deattach. Camera(); 解除绑定 camera. stop. Show(Camera. DEFAULT_AV_CHANNEL); 结束显 示 2). 断开连接 camera. stop(Camera. DEFAULT_AV_CHANNEL); 停止渠道使用 camera. disconnect(); 断开连接 camera. unregister. IOTCListener(this); 注销监听
- Slides: 32