《基于android的远程视频监控系统(已开放源码).doc》由会员分享,可在线阅读,更多相关《基于android的远程视频监控系统(已开放源码).doc(11页珍藏版)》请在金锄头文库上搜索。
1、基于android的远程视频监控系统(已开放源码) 基本过程是android作为socket客户端将采集到的每一帧图像数据发送出去,PC作为服务器接收并显示每一帧图像实现远程监控。图片如下(后来PC端加了个拍照功能)。(PS。刚学android和java不久很多东西还不懂,高手若是知道哪些地方可以继续优化的话还请多多指点下啊)系统代码如下:一、android手机客户端(1)AndroidManifest.xml文件。添加camera和socket权限,并设置了程序开始执行的activity、(2)main.xml 设置surfaceview用于摄像头采集图像的预览(3)login.xml 登录
2、界面,用于输入服务器IP(4)GetIP.java 获得服务器IP后,通过Intent启动CameraTest的activity,ip信息通过Bundle传递publicclassGetIP extendsActivity String ipname = null;OverridepublicvoidonCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);/ 设置全屏requestWindowFeature(Window.FEATURE_NO_TITLE);getWindow().setFlags(Windo
3、wManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView(R.layout.main);finalBuilder builder = newAlertDialog.Builder(this); /定义一个AlertDialog.Builder对象builder.setTitle(登录服务器对话框); / 设置对话框的标题/装载/res/layout/login.xml界面布局TableLayout loginForm = (TableLayout)getLay
4、outInflater().inflate( R.layout.login, null);finalEditText iptext = (EditText)loginForm.findViewById(R.id.ipedittext);builder.setView(loginForm); / 设置对话框显示的View对象/ 为对话框设置一个“登录”按钮builder.setPositiveButton(登录/ 为按钮设置监听器, newOnClickListener() OverridepublicvoidonClick(DialogInterface dialog, intwhich) /
5、此处可执行登录处理ipname = iptext.getText().toString().trim();Bundle data = newBundle();data.putString(ipname,ipname);Intent intent = newIntent(GetIP.this,CameraTest.class);intent.putExtras(data);startActivity(intent););/ 为对话框设置一个“取消”按钮builder.setNegativeButton(取消, newOnClickListener()OverridepublicvoidonCli
6、ck(DialogInterface dialog, intwhich)/取消登录,不做任何事情。System.exit(1););/创建、并显示对话框builder.create().show();(5)CameraTest.java 程序主体。设置PreviewCallback后,每当一帧图像数据采集完成后将调用PreviewCallback的onPreviewFrame函数。在这里我们将YUV格式数据转为jpg,再启用线程将数据通过socket发送出去。publicclassCameraTest extendsActivity SurfaceView sView;SurfaceHolde
7、r surfaceHolder;intscreenWidth, screenHeight;Camera camera; / 定义系统所用的照相机booleanisPreview = false; /是否在浏览中privateString ipname;SuppressWarnings(deprecation)OverridepublicvoidonCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);/ 设置全屏requestWindowFeature(Window.FEATURE_NO_TITLE);getW
8、indow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView(R.layout.main);/ 获取IP地址Intent intent = getIntent();Bundle data = intent.getExtras();ipname = data.getString(ipname);screenWidth = 640;screenHeight = 480;sView = (SurfaceView) findViewById(R.id.sView);/ 获取界面中SurfaceView组件surfaceHolder =