毕业论文

打赏
当前位置: 毕业论文 > 计算机论文 >

Android安卓手机游戏连连看设计(9)

时间:2017-02-27 22:04来源:毕业论文
if (mConnectedThread != null) { // 停止一切已经配对的线程 mConnectedThread.cancel(); mConnectedThread = null; } mConnectThread = new ConnectThread(device); // 开始进行新的配对 mConn


    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]; Android安卓手机游戏连连看设计(9):http://www.youerw.com/jisuanji/lunwen_3518.html
------分隔线----------------------------
推荐内容