|  |  | 
 |  |  |     private Button turnLeftBtn; | 
 |  |  |     private Button turnRightBtn; | 
 |  |  |  | 
 |  |  |     private Button cameraResetBtn; | 
 |  |  |     private Button loadResetBtn; | 
 |  |  |     private Button forkResetBtn; | 
 |  |  |     private Button gyroResetBtn; | 
 |  |  |     private Button liftResetBtn; | 
 |  |  |     private Button allResetBtn; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     private Button bodySwitchBtn; // 底盘/货叉切换 | 
 |  |  |     private Socket socket; | 
 |  |  | 
 |  |  |     private RelativeLayout layout_reset; | 
 |  |  |  | 
 |  |  |     int liftHeight = 400; | 
 |  |  |     int extendWidth = 0; | 
 |  |  |     int extendWidth = -450; | 
 |  |  |     int angle = -91;  // 7 度 | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     SocketManager socketManager; | 
 |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     // 底盘前进、后退、左旋转、右旋转 | 
 |  |  |     private Handler handler = new Handler(new Handler.Callback() { | 
 |  |  |         @Override | 
 |  |  |         public boolean handleMessage(Message msg) { | 
 |  |  | 
 |  |  |                         .setVal(1) | 
 |  |  |                         .bodySync((action) -> action.setPwd((short) 10)); | 
 |  |  |                 nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 | 
 |  |  |                 handler.sendEmptyMessageDelayed(0, 100); | 
 |  |  |                 handler.sendEmptyMessageDelayed(0, 100);  //  100ms 后发送下一条消息 | 
 |  |  |             } | 
 |  |  |             if (isGoBackward) { | 
 |  |  |                 String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16); | 
 |  |  | 
 |  |  |         layout_single = findViewById(R.id.layout_single); | 
 |  |  |         layout_reset = findViewById(R.id.layout_reset); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         cameraResetBtn = findViewById(R.id.btn_camera_reset); | 
 |  |  |         loadResetBtn = findViewById(R.id.btn_load_reset); | 
 |  |  |         forkResetBtn = findViewById(R.id.btn_fork_reset); | 
 |  |  |         gyroResetBtn = findViewById(R.id.btn_gyro_reset); | 
 |  |  |         liftResetBtn = findViewById(R.id.btn_lift_reset); | 
 |  |  |         allResetBtn = findViewById(R.id.btn_all_reset); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         Intent intent = getIntent(); | 
 |  |  |         clientId = intent.getStringExtra("message"); | 
 |  |  |         Log.i("message1",clientId); | 
 |  |  | 
 |  |  |                 if (vibrator != null && vibrator.hasVibrator()) { | 
 |  |  |                     vibrator.vibrate(500); | 
 |  |  |                 } | 
 |  |  |                 if (liftHeight >= 3200) { | 
 |  |  |                 if (liftHeight <= 3200) { | 
 |  |  |                     String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16); | 
 |  |  |                     AgvAction agvAction = new AgvAction<>(HandLift.class) | 
 |  |  |                             .setAgvNo(AgvNo) | 
 |  |  | 
 |  |  |                 if (vibrator != null && vibrator.hasVibrator()) { | 
 |  |  |                     vibrator.vibrate(500); | 
 |  |  |                 } | 
 |  |  |                 if (liftHeight >= 3200) { | 
 |  |  |                 if (extendWidth <= 450) { | 
 |  |  |                     String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16); | 
 |  |  |                     AgvAction agvAction = new AgvAction<>(HandExtendCollect.class) | 
 |  |  |                             .setAgvNo(AgvNo) | 
 |  |  | 
 |  |  |                             .setVal(1) | 
 |  |  |                             .bodySync((action) -> action.setPwd((short) 21)); | 
 |  |  |                     nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 | 
 |  |  |                     liftHeight += 100; | 
 |  |  |                     extendWidth += 50; | 
 |  |  |                 } else { | 
 |  |  |                     DialogUtil.showAlertDialog(MainActivity.this, "提示", "已超最大值!"); | 
 |  |  |                 } | 
 |  |  | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         // 收起 | 
 |  |  |         frontPaddleExtendBtn.setOnClickListener(new View.OnClickListener() { | 
 |  |  |         // 收叉 | 
 |  |  |         collectForkBtn.setOnClickListener(new View.OnClickListener() { | 
 |  |  |             @Override | 
 |  |  |             public void onClick(View v) { | 
 |  |  |                 if (vibrator != null && vibrator.hasVibrator()) { | 
 |  |  |                     vibrator.vibrate(500); | 
 |  |  |                 } | 
 |  |  |                 String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16); | 
 |  |  |                 AgvAction agvAction = new AgvAction<>(HandExtendCollect.class) | 
 |  |  |                         .setAgvNo(AgvNo) | 
 |  |  |                         .setSerialNo(substring) | 
 |  |  |                         .setVal(1) | 
 |  |  |                         .bodySync((action) -> action.setPwd((short) 21)); | 
 |  |  |                 nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 | 
 |  |  |                 if (extendWidth >= -450) { | 
 |  |  |                     String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16); | 
 |  |  |                     AgvAction agvAction = new AgvAction<>(HandExtendCollect.class) | 
 |  |  |                             .setAgvNo(AgvNo) | 
 |  |  |                             .setSerialNo(substring) | 
 |  |  |                             .setVal(1) | 
 |  |  |                             .bodySync((action) -> action.setPwd((short) 21)); | 
 |  |  |                     nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端户端 | 
 |  |  |                     extendWidth -= 50; | 
 |  |  |                 } else { | 
 |  |  |                     DialogUtil.showAlertDialog(MainActivity.this, "提示", "已超最大值!"); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         // 左旋 | 
 |  |  |         frontPaddleExtendBtn.setOnClickListener(new View.OnClickListener() { | 
 |  |  |         turnLeftBtn.setOnClickListener(new View.OnClickListener() { | 
 |  |  |             @Override | 
 |  |  |             public void onClick(View v) { | 
 |  |  |                 if (vibrator != null && vibrator.hasVibrator()) { | 
 |  |  |                     vibrator.vibrate(500); | 
 |  |  |                 } | 
 |  |  |                 String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16); | 
 |  |  |                 AgvAction agvAction = new AgvAction<>(HandForkRotatopn.class) | 
 |  |  |                         .setAgvNo(AgvNo) | 
 |  |  |                         .setSerialNo(substring) | 
 |  |  |                         .setVal(1) | 
 |  |  |                         .bodySync((action) -> action.setPwd((short) 21)); | 
 |  |  |                 nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 | 
 |  |  |                 if (angle <= 91) { | 
 |  |  |                     String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16); | 
 |  |  |                     AgvAction agvAction = new AgvAction<>(HandForkRotatopn.class) | 
 |  |  |                             .setAgvNo(AgvNo) | 
 |  |  |                             .setSerialNo(substring) | 
 |  |  |                             .setVal(1) | 
 |  |  |                             .bodySync((action) -> action.setPwd((short) 21)); | 
 |  |  |                     nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 | 
 |  |  |                     angle += 7; | 
 |  |  |                 } else { | 
 |  |  |                     DialogUtil.showAlertDialog(MainActivity.this, "提示", "已超最大值!"); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         // 右旋 | 
 |  |  |         frontPaddleExtendBtn.setOnClickListener(new View.OnClickListener() { | 
 |  |  |         turnRightBtn.setOnClickListener(new View.OnClickListener() { | 
 |  |  |             @Override | 
 |  |  |             public void onClick(View v) { | 
 |  |  |                 if (vibrator != null && vibrator.hasVibrator()) { | 
 |  |  |                     vibrator.vibrate(500); | 
 |  |  |                 } | 
 |  |  |                 if (angle >= -91) { | 
 |  |  |                     String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16); | 
 |  |  |                     AgvAction agvAction = new AgvAction<>(HandForkRotatopn.class) | 
 |  |  |                             .setAgvNo(AgvNo) | 
 |  |  |                             .setSerialNo(substring) | 
 |  |  |                             .setVal(1) | 
 |  |  |                             .bodySync((action) -> action.setPwd((short) 21)); | 
 |  |  |                     nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 | 
 |  |  |                     angle -= 7; | 
 |  |  |                 } else { | 
 |  |  |                     DialogUtil.showAlertDialog(MainActivity.this, "提示", "已超最小值!"); | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         // 相机复位按钮 | 
 |  |  |         cameraResetBtn.setOnClickListener(new View.OnClickListener() { | 
 |  |  |             @Override | 
 |  |  |             public void onClick(View v) { | 
 |  |  |                 if (vibrator != null && vibrator.hasVibrator()) { | 
 |  |  |                     vibrator.vibrate(500); | 
 |  |  |                 } | 
 |  |  |                 String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16); | 
 |  |  |                 AgvAction agvAction = new AgvAction<>(HandForkRotatopn.class) | 
 |  |  |                 AgvAction agvAction = new AgvAction<>(FrontPaddle.class) | 
 |  |  |                         .setAgvNo(AgvNo) | 
 |  |  |                         .setSerialNo(substring) | 
 |  |  |                         .setVal(1) | 
 |  |  |                         .bodySync((action) -> action.setPwd((short) 21)); | 
 |  |  |                         .bodySync((action) -> action.setPwd((short) 1)); | 
 |  |  |                 nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         // 路径清除按钮 | 
 |  |  |         loadResetBtn.setOnClickListener(new View.OnClickListener() { | 
 |  |  |             @Override | 
 |  |  |             public void onClick(View v) { | 
 |  |  |                 if (vibrator != null && vibrator.hasVibrator()) { | 
 |  |  |                     vibrator.vibrate(500); | 
 |  |  |                 } | 
 |  |  |                 String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16); | 
 |  |  |                 AgvAction agvAction = new AgvAction<>(FrontPaddle.class) | 
 |  |  |                         .setAgvNo(AgvNo) | 
 |  |  |                         .setSerialNo(substring) | 
 |  |  |                         .setVal(1) | 
 |  |  |                         .bodySync((action) -> action.setPwd((short) 1)); | 
 |  |  |                 nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         // 货叉归零按钮 | 
 |  |  |         forkResetBtn.setOnClickListener(new View.OnClickListener() { | 
 |  |  |             @Override | 
 |  |  |             public void onClick(View v) { | 
 |  |  |                 if (vibrator != null && vibrator.hasVibrator()) { | 
 |  |  |                     vibrator.vibrate(500); | 
 |  |  |                 } | 
 |  |  |                 String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16); | 
 |  |  |                 AgvAction agvAction = new AgvAction<>(FrontPaddle.class) | 
 |  |  |                         .setAgvNo(AgvNo) | 
 |  |  |                         .setSerialNo(substring) | 
 |  |  |                         .setVal(1) | 
 |  |  |                         .bodySync((action) -> action.setPwd((short) 1)); | 
 |  |  |                 nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         // 陀螺仪复位按钮 | 
 |  |  |         gyroResetBtn.setOnClickListener(new View.OnClickListener() { | 
 |  |  |             @Override | 
 |  |  |             public void onClick(View v) { | 
 |  |  |                 if (vibrator != null && vibrator.hasVibrator()) { | 
 |  |  |                     vibrator.vibrate(500); | 
 |  |  |                 } | 
 |  |  |                 String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16); | 
 |  |  |                 AgvAction agvAction = new AgvAction<>(FrontPaddle.class) | 
 |  |  |                         .setAgvNo(AgvNo) | 
 |  |  |                         .setSerialNo(substring) | 
 |  |  |                         .setVal(1) | 
 |  |  |                         .bodySync((action) -> action.setPwd((short) 1)); | 
 |  |  |                 nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         // 升降归零按钮 | 
 |  |  |         liftResetBtn.setOnClickListener(new View.OnClickListener() { | 
 |  |  |             @Override | 
 |  |  |             public void onClick(View v) { | 
 |  |  |                 if (vibrator != null && vibrator.hasVibrator()) { | 
 |  |  |                     vibrator.vibrate(500); | 
 |  |  |                 } | 
 |  |  |                 String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16); | 
 |  |  |                 AgvAction agvAction = new AgvAction<>(FrontPaddle.class) | 
 |  |  |                         .setAgvNo(AgvNo) | 
 |  |  |                         .setSerialNo(substring) | 
 |  |  |                         .setVal(1) | 
 |  |  |                         .bodySync((action) -> action.setPwd((short) 1)); | 
 |  |  |                 nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  |  | 
 |  |  |         // 整机复位按钮 | 
 |  |  |         allResetBtn.setOnClickListener(new View.OnClickListener() { | 
 |  |  |             @Override | 
 |  |  |             public void onClick(View v) { | 
 |  |  |                 if (vibrator != null && vibrator.hasVibrator()) { | 
 |  |  |                     vibrator.vibrate(500); | 
 |  |  |                 } | 
 |  |  |                 String substring = String.valueOf(new SnowflakeIdWorker().nextId()).substring(0,16); | 
 |  |  |                 AgvAction agvAction = new AgvAction<>(FrontPaddle.class) | 
 |  |  |                         .setAgvNo(AgvNo) | 
 |  |  |                         .setSerialNo(substring) | 
 |  |  |                         .setVal(1) | 
 |  |  |                         .bodySync((action) -> action.setPwd((short) 1)); | 
 |  |  |                 nettyServerHandler.sendMessageToClient(clientId, agvAction); // 发送消息到客户端 | 
 |  |  |             } | 
 |  |  |         }); | 
 |  |  | 
 |  |  |                     isRotatopnRight = false; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  | //            else if (view.getId() == R.id.btn_front_paddle_extend) { | 
 |  |  | //                // 前拨杆伸出 | 
 |  |  | //                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) { | 
 |  |  | //                    isFrontPaddleExtendBtn = true; | 
 |  |  | //                    handler.sendEmptyMessage(0); | 
 |  |  | //                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) { | 
 |  |  | //                    isFrontPaddleExtendBtn = false; | 
 |  |  | //                } | 
 |  |  | //            } else if (view.getId() == R.id.btn_front_paddle_collect) { | 
 |  |  | //                // 前拨杆收起 | 
 |  |  | //                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) { | 
 |  |  | //                    isFrontPaddleCollectBtn = true; | 
 |  |  | //                    handler.sendEmptyMessage(0); | 
 |  |  | //                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) { | 
 |  |  | //                    isFrontPaddleCollectBtn = false; | 
 |  |  | //                } | 
 |  |  | //            } else if (view.getId() == R.id.btn_back_paddle_extend) { | 
 |  |  | //                // 后拨杆伸出 | 
 |  |  | //                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) { | 
 |  |  | //                    isBackPaddleExtendBtn = true; | 
 |  |  | //                    handler.sendEmptyMessage(0); | 
 |  |  | //                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) { | 
 |  |  | //                    isBackPaddleExtendBtn = false; | 
 |  |  | //                } | 
 |  |  | //            } else if (view.getId() == R.id.btn_back_paddle_collect) { | 
 |  |  | //                // 后拨杆收起 | 
 |  |  | //                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) { | 
 |  |  | //                    isBackPaddleCollectBtn = true; | 
 |  |  | //                    handler.sendEmptyMessage(0); | 
 |  |  | //                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) { | 
 |  |  | //                    isBackPaddleCollectBtn = false; | 
 |  |  | //                } | 
 |  |  | //            } else if (view.getId() == R.id.btn_rise) { | 
 |  |  | //                // 上升 | 
 |  |  | //                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) { | 
 |  |  | //                    isRiseBtn = true; | 
 |  |  | //                    handler.sendEmptyMessage(0); | 
 |  |  | //                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) { | 
 |  |  | //                    isRiseBtn = false; | 
 |  |  | //                } | 
 |  |  | //            } else if (view.getId() == R.id.btn_drop) { | 
 |  |  | //                // 下降 | 
 |  |  | //                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) { | 
 |  |  | //                    isDropBtn = true; | 
 |  |  | //                    handler.sendEmptyMessage(0); | 
 |  |  | //                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) { | 
 |  |  | //                    isDropBtn = false; | 
 |  |  | //                } | 
 |  |  | //            } else if (view.getId() == R.id.btn_extend_fork) { | 
 |  |  | //                // 伸叉 | 
 |  |  | //                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) { | 
 |  |  | //                    isExtendForkBtn = true; | 
 |  |  | //                    handler.sendEmptyMessage(0); | 
 |  |  | //                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) { | 
 |  |  | //                    isExtendForkBtn = false; | 
 |  |  | //                } | 
 |  |  | //            } else if (view.getId() == R.id.btn_collect_fork) { | 
 |  |  | //                // 收叉 | 
 |  |  | //                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) { | 
 |  |  | //                    isCollectForkBtn = true; | 
 |  |  | //                    handler.sendEmptyMessage(0); | 
 |  |  | //                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) { | 
 |  |  | //                    isCollectForkBtn = false; | 
 |  |  | //                } | 
 |  |  | //            } else if (view.getId() == R.id.btn_turn_left) { | 
 |  |  | //                // 左旋转 | 
 |  |  | //                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) { | 
 |  |  | //                    isTurnLeftBtn = true; | 
 |  |  | //                    handler.sendEmptyMessage(0); | 
 |  |  | //                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) { | 
 |  |  | //                    isTurnLeftBtn = false; | 
 |  |  | //                } | 
 |  |  | //            } else if (view.getId() == R.id.btn_turn_right) { | 
 |  |  | //                // 左旋转 | 
 |  |  | //                if (motionEvent.getAction() == KeyEvent.ACTION_DOWN) { | 
 |  |  | //                    isTurnRightBtn = true; | 
 |  |  | //                    handler.sendEmptyMessage(0); | 
 |  |  | //                } else if (motionEvent.getAction() == KeyEvent.ACTION_UP) { | 
 |  |  | //                    isTurnRightBtn = false; | 
 |  |  | //                } | 
 |  |  | //            } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |             return false; | 
 |  |  |  |