最好的电子音响科技diy制作网站

haoDIY创好电子音响电脑科技DIY小制作发明

当前位置: 主页 > 电子DIY > 综合DIY >

基于安卓的视频遥控小车(4)

时间:2022-05-26 14:01来源:mbb.eet-china.com 作者:RoachWZ 点击:
e1.printStackTrace(); } } } public void keyReleased(KeyEvent e) { int KeyCode = e.getKeyCode(); // 返回所按键对应的整数值 if(KeyCode==38||KeyCode==40||KeyCode==37||KeyCode==39) { try { ss = new Serve
  •  
  •                                 e1.printStackTrace();
  •                         }
  •                         }
  •                         
  •                 }
  •                 public void keyReleased(KeyEvent e) {
  •                         int KeyCode = e.getKeyCode(); // 返回所按键对应的整数值
  •                         if(KeyCode==38||KeyCode==40||KeyCode==37||KeyCode==39) {
  •                                 try {
  •                                         ss = new ServerSocket(7788);
  •                                                 stop();
  •                                                 sendFlag=false;
  •                                         } catch (Exception e1) {
  •                                                 e1.printStackTrace();
  •                                         }
  •                         }
  •                 }
  •  
  •                         public void send(int i) throws Exception{
  •                                         @SuppressWarnings("resource")
  •                                         ServerSocket serverSocket = ss;//new ServerSocket(7788); // 创建ServerSocket对象
  •                                         Socket client = serverSocket.accept(); // 调用ServerSocket的accept()方法接收数据
  •                                         OutputStream os = client.getOutputStream();// 获取客户端的输出流
  •                                         System.out.println("开始与客户端交互数据");
  •                                         switch (i) {
  •                                 case 38:os.write(("01").getBytes());break;//上
  •                                 case 40:os.write(("02").getBytes());break;//下
  •                                 case 37:os.write(("03").getBytes());break;//左
  •                                 case 39:os.write(("04").getBytes());break;//右
  •                                 }                        
  •                                        
  •                                         System.out.println("结束与客户端交互数据");
  •                                         os.close();
  •                                         client.close();
  •                         }
  •                         protected void stop() throws Exception {
  •                                 ServerSocket serverSocket = ss;// 创建ServerSocket对象
  •                                 Socket client = serverSocket.accept(); // 调用ServerSocket的accept()方法接收数据
  •                                 OutputStream os = client.getOutputStream();// 获取客户端的输出流
  •                                 os.write(("05").getBytes());//停止
  •                                 os.close();
  •                                 client.close();
  •                                 ss.close();
  •                         }
  •         });
  • 注意:
    基于安卓的视频遥控小车
    此部分源码链接http://www.pudn.com/Download/item/id/3913494.html

    参考的文献感谢以下博主的文章
    基于Socket的Android手机视频实时传输
    camera拍摄视频并在电脑上显示
    Android Studio+Eclipse 利用so基于安卓的视频遥控小车实现人脸跟随看起来好像高大上,其实是用的安卓自带的人脸检测API(FaceDetector),将其和红外发射代码结合起来,实现了小车人脸跟随功能。
    基于安卓的视频遥控小车 基于安卓的视频遥控小车
    人脸检测的接口为FaceDetectionListener,
    1. private class MyFaceDetectionListener implements Camera.FaceDetectionListener {
    2.  
    3.         @Override
    4.         public void onFaceDetection(Camera.Face[] faces, Camera camera) {
    5.             if (faces.length > 0){
    6.                 Log.d("FaceDetection", "face detected: "+ faces.length +
    7.                         " Face 1 Location X: " + faces[0].rect.centerX() +
    8.                         "Y: " + faces[0].rect.centerY() );
    9.             }
    10.         }
    11.     }

    通过Camera的setFaceDetedtionListener方法来接受底层检测到脸的回掉。
    1. mCamera.setFaceDetectionListener(new MyFaceDetectionListener());



    在摄像机开始预览了之后调用开始检测方法
    1. private void startFaceDetection(){
    2.         // Try starting Face Detection
    3.         Camera.Parameters params = mCamera.getParameters();
    4.  
    5.         // start face detection only *after* preview has started
    6.         if (params.getMaxNumDetectedFaces() > 0){
    7.             // camera supports face detection, so can start it:
    8.             mCamera.startFaceDetection();
    9.         }
    10.     }
    以上为通用步骤,我对MyFaceDetectionListener进行了改造,
    将其和红外发射代码transmit()方法结合起来,代码如下
    1. private class MyFaceDetectionListener implements Camera.FaceDetectionListener{
    2.                           private int faceX=0;
    3.                     private int faceY=0;
    4.                     boolean fMoveFlag = false;//设置标志位,只执行一次,不连续发送
    5.                     boolean bMoveFlag = false;
    6.                     boolean lMoveFlag = false;
    7.                     boolean rMoveFlag = false;
    8.                     Camera.Parameters parameters;
    9.                     public MyFaceDetectionListener(Camera.Parameters parameters) {
    10.                                 this.parameters=parameters;
    11.                         }
    12.                 @Override
    13.                 public void onFaceDetection(Camera.Face[] faces, Camera camera) { (责任编辑:admin)
    织梦二维码生成器
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    相关文章
    ------分隔线----------------------------
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    评价:
    表情:
    用户名: 验证码:点击我更换图片
    栏目列表
    广告位API接口通信错误,查看德得广告获取帮助
    推荐内容
    广告位API接口通信错误,查看德得广告获取帮助