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

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

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

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

时间:2022-05-26 14:01来源:mbb.eet-china.com 作者:RoachWZ 点击:
调用image.compressToJpeg()将YUV格式图像数据转为jpg格式代码如下,其参数作用如下表所示。 image.compressToJpeg(Rect rectangle, int quality, OutputStream stream); 参数 类型 作用 rectangle Rect 要压缩的矩
调用image.compressToJpeg()将YUV格式图像数据转为jpg格式代码如下,其参数作用如下表所示。
image.compressToJpeg(Rect rectangle,
int quality,
OutputStream stream);

参数
类型
作用
rectangle
Rect
要压缩的矩形区域。方法检查矩形是否在图像内。此外,如果矩形中的色度像素与其中的亮度像素不匹配,则该方法修改矩形。
quality
int
提示压缩机,范围0-100。0表示压缩小尺寸,100表示压缩以获得最高质量。
stream
OutputStream
OutputStream写入压缩数据。
预览一般用SurfaceView显示摄像头采集到的画面内容。需要用到preview class。这个类需要实现android.view.SurfaceHolder.Callback接口,并用此接口把摄像头采集到的画面送到当前的预览界面。
当应用调用完摄像头之后,必须进行清理释放资源的操作。必须释放Camera对象,不然的话可能会引起其他应用程序使用Camera实例的时候发生崩溃。相应代码如下。
if (mCamera != null) {
        mCamera.stopPreview();//停止预览
        //调用release()以释放相机以供其他应用程序使用。应用程序应在onPause()期间 //立即释放相机,并在onResume()期间重新open()。
        mCamera.release();
        mCamera = null;
    }

二、红外遥控
详见基于安卓的视频遥控小车红外遥控部分
基于安卓的视频遥控小车
此部分代码
http://www.pudn.com/Download/item/id/3913496.html


参考文献的链接(可以点击访问)
感谢以下博主的文章
Google Android官方培训课程中文版——控制相机硬件
Android音视频-视频采集(Camera预览)
android实时视频网络传输方案总结(一共有五套)
android闪关灯的开启和关闭方法代码实例
关于降低android手机摄像头预览分辨率 - 莹波&微步
Android摄像头自定义相机拍照流程 - 景兄弟的博客
基于Socket的Android手机视频实时传输
Android Studio+Eclipse 利用socket实现视频的实时传输与接收

 
 
回复
 
 
基于安卓的视频遥控小车
本帖最后由 RoachWZ 于 2019-7-9 14:14 编辑

基于安卓的视频遥控小车的电脑端程序采用Java语言编写,Java可以做到一次编译到处运行,因为Java程序是在Java虚拟机中运行的,和平台无关,只要平台上有相应的Java虚拟机。
基于安卓的视频遥控小车 基于安卓的视频遥控小车
本设计中安卓手机是客户端,电脑是服务器端。采用ServerSocket类与多线程技术相互配合共同完成服务器端与客户端的程序开发。
Socket通信步骤如下图所示。手机采集到的图像通过Socket一帧一帧发送,电脑通过Socket接收每一帧图像。
基于安卓的视频遥控小车
电脑端Java程序主要代码
  1.  
  2. /**
  3. *在服务器开启情况下,启动客户端,创建套接字接收图像
  4. */
  5.  
  6. public class ImageServer {        
  7.     public static ServerSocket ss = null;
  8.    
  9.     public static void main(String args[]) throws Exception,IOException{   
  10.             ss = new ServerSocket(6000);
  11.         
  12.         final ImageFrame frame = new ImageFrame(ss);
  13.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  14.         frame.setVisible(true);
  15.       
  16.         while(true){
  17.                 frame.panel.getimage();
  18.             frame.repaint();
  19.         }        
  20.     }
  21.       
  22. }

建立好连接后,getimage()负责接收手机端传过来的图像,repaint()负责将接收到的图像绘制在窗体组件上。在此使用的是动画播放原理,实时视频是通过电脑窗体一帧一帧播放图片,形成视频动画效果。没有采用主流的视频压缩分包技术,而是选择牺牲画质。摄像头采集到的是最低画质,这样每一帧图像的数据量就小了,延迟也就下去了。
对小车的控制放在另一个线程中,监听按键的状态来判断要发送的命令。
主要代码如下所示
  1. jb.addKeyListener(new KeyAdapter() {
  2.                 ServerSocket ss;
  3.                 boolean sendFlag = false;//设置标志位,按下时只执行一次,不连续发送
  4.                 public void keyPressed(KeyEvent e) {
  5.                         int KeyCode = e.getKeyCode(); // 返回所按键对应的整数值
  6.                         String s = KeyEvent.getKeyText(KeyCode); // 返回按键的字符串描述
  7.                         System.out.print("输入的内容为:" + s + ",");
  8.                         System.out.println("对应的KeyCode为:" + KeyCode);
  9.                         if(!sendFlag) {
  10.                         try{
  11.                                 ss = new ServerSocket(7788);
  12.                                 send(KeyCode);
  13.                                 ss.close();
  14.                                 sendFlag=true;
  15.                         }catch (Exception e1) {
  16. (责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
相关文章
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
广告位API接口通信错误,查看德得广告获取帮助
推荐内容
广告位API接口通信错误,查看德得广告获取帮助