Android安卓手机游戏连连看设计(9)
时间:2017-02-27 22:04 来源:毕业论文 作者:毕业论文 点击:次
if (mConnectedThread != null) { // 停止一切已经配对的线程 mConnectedThread.cancel(); mConnectedThread = null; } mConnectThread = new ConnectThread(device); // 开始进行新的配对 mConnectThread.start(); setState(STATE_CONNECTING); } 蓝牙通信时,需要向蓝牙端口填写发送数据。 public void write(byte[] out) { ConnectedThread r; // 临时线程 synchronized (this) { // 同步一个已配对线程的副本 if (mState != STATE_CONNECTED) return; r = mConnectedThread; } r.write(out); // 填写发送数据并发送 } 蓝牙文护一个数据分派处理器,统一将蓝牙数据进行处理。 private final Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case MESSAGE_WRITE: byte[] writeBuf = (byte[]) msg.obj; // 将发送数据转换 String writeMessage = new String(writeBuf); mChatService.send(writeMessage); break; case MESSAGE_READ: byte[] readBuf = (byte[]) msg.obj; // 提取并重新构造发送数据 String readMessage = new String(readBuf, 0, msg.arg1); BTReader.option(readMessage); // 蓝牙接收器处理接收数据 break; } } }; 7.5 抖动重排功能实现 在蓝牙对战中,加入抖动重排功能。可利用的手机传感器有多种选择,例如重力传感器、加速度传感器和陀螺仪等。本课题中,选用常用的重力传感器,原因有二:第一,每部Android手机都配有重力传感器,第二,重力传感器相对简单,使用方便。 // 获取系统传感器服务 sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE); sensor = sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); x = y = 0; // 假定重力传感器初始坐标值 z = 10; // 同上 SensorEventListener sensorListener = new SensorEventListener() { public void onSensorChanged(SensorEvent e) { // 当在0.1秒内重力值在任一坐标上摆动幅度不低于6阶时, // 认为手机抖动 if( ((e.values[SensorManager.DATA_X] - x >= 6) || (e.values[SensorManager.DATA_Y] - y >= 6) || (e.values[SensorManager.DATA_Z] - z >= 6)) && (e.timestamp - timestamp < 100000000)) gameView.change(); x = e.values[SensorManager.DATA_X]; y = e.values[SensorManager.DATA_Y]; z = e.values[SensorManager.DATA_Z]; (责任编辑:qin) |