首页 > 移动平台 > 详细

android蓝牙(二)——接收数据

时间:2014-04-27 18:24:20      阅读:551      评论:0      收藏:0      [点我收藏+]

   在蓝牙开发中,我们有这样的一个需求:我们的android客户端要始终保持和蓝牙的连接,当蓝牙有数据返回的时候,android客户端就要及时的收取数据,当蓝牙没有数据返回的时候我们就要保持android客户端和蓝牙之间的连接。这个时候我们就要采取socket来实现和蓝牙之间的连接。做项目使用过http轮询去获取数据,但是发现那样总是有一定的弊端。于是就才用了socket方式去获取数据。

    实现步骤:1、启动一个service去监听是否有数据返回。一旦有数据返回就启动一个线程去处理数据

                      2、处理完数据,通过广播去通知UI。

     在开发中,如果采用循环方式去监听数据很容易产生一些bug。因为java中的socket默认是阻塞的,循环有可能会造成退出不了。我自己用了几个状态值来实现对其的控制

service类

/**
 * 
 * @author li
 *负责监听启动应用程序 后的接收数据
 */
public class ReceiveThread extends Service {

    private Socket socket;
    private String workStatus;// 当前工作状况,null表示正在处理,success表示处理成功,failure表示处理失败
    public static Boolean mainThreadFlag = true;  ;  //状态
	@Override
	public IBinder onBind(Intent intent) {
		// TODO Auto-generated method stub
		return null;
	}
	private void doListen()
	{
		Log.d("chl", "doListen()");
		//开始监听
		while (mainThreadFlag)
		{
         //开始监听数据
	      new Thread(new ThreadReadWriterSocketServer(ReceiveThread.this, socket));
		}
	}

	
}
Thread

public class ThreadReadWriterSocketServer implements Runnable{
	private  Socket client=null;
	private Context context=null;
	public ThreadReadWriterSocketServer(Context context,Socket client)
	{
		this.context=context;
		this.client=client;
	}
	
	
	@Override
	public void run()
	{
		Receive();
	}
	
	
	private void Receive() {
	//处理数据	
	}
}




android蓝牙(二)——接收数据,布布扣,bubuko.com

android蓝牙(二)——接收数据

原文:http://blog.csdn.net/chenli522/article/details/24582939

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!