关于获取监控摄像头数据。车联网

最近再做一个车联网管理系统demo。

在车辆上安装gps和摄像头采集数据,然后通过tcp传输16进制数据到手机端,手机端显示定位速度和视频功能。

开发过程中碰到几个难点记录下来,以便以后查看。

1.tcp传输16进制问题。

首先建立tcp链接

 try {
                        /* 建立socket */
                        socket = new Socket(IPAdr, PORT);
                        /* 输出流 */
                        writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
                        /* 输入流 */
                        InputStream inputStream = socket.getInputStream();
                        Thread.sleep(50, 0);
                        DataInputStream din = new DataInputStream(inputStream);
                        byte[] buf = new byte[12];
                        int i;
                        while ((i = din.read(buf, 0, 12)) != -1) {
                            Message msg = handler.obtainMessage();
                            msg.obj = bytesToHexString(buf);
                            msg.what = 10;
                            handler.sendMessage(msg);
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                        isConnected = false;
                    }
然后获取16进制数据
    public static String bytesToHexString(byte[] bytes) {
        String result = "";
        for (int i = 0; i < bytes.length; i++) {

            String hexString = Integer.toHexString(bytes[i] & 0xFF);
            if (hexString.length() == 1) {
                hexString = '0' + hexString;
            }
            result += hexString.toUpperCase();
        }
        return result;
    }
再根据与c++的对接,定好数据格式,按照当前情况解析,比如c++定好了是2个字符代表一位,解析的时候
 List stringList = new ArrayList<>();
                    for (int i = 0; i < (result.length() / 8); i++) {
                        stringList.add(result.substring(i * 8, (i + 1) * 8));
                    }
就可以得到数据集合。

2.传输的时候有经纬度,而且是高精度的,直接使用double可能会自动4舍5入,影响定位准确性。

解决办法:直接转string,再判断得到的数据长度,在规定的位置添加小数点。(谁有更好的办法欢迎留言)

3.关于视频直接采用

EasyDSS

直接去拉流播放就行。播放rtmp流媒体使用的是upplayer,在github上搜索就能找到,使用也非常简单
    public void refresh(View view) {
//        path = mPathEt.getText().toString();
        upVideoView.setVideoPath(path);
        upVideoView.start();
    }
刚开始写博客,语言总结不犀利,我会改进的。






你可能感兴趣的:(关于获取监控摄像头数据。车联网)