基本过程是android作为socket客户端将采集到的每一帧图像数据发送出去,PC作为服务器接收并显示每一帧图像实现远程监控。图片如下(后来PC端加了个拍照功能)。。。
(PS。刚学android和java不久很多东西还不懂,高手若是知道哪些地方可以继续优化的话还请多多指点下啊)
系统代码如下:
一、android手机客户端
(1)AndroidManifest.xml文件。添加camera和socket权限,并设置了程序开始执行的activity、
<?xml version=
"1.0"
encoding=
"utf-8"
?>
<manifest xmlns:android=
"http://schemas.android.com/apk/res/android"
package
=
"org.wanghai.CameraTest"
android:versionCode=
"1"
android:versionName=
"1.0"
>
<uses-sdk android:minSdkVersion=
"15"
/>
<!-- 授予程序使用摄像头的权限 -->
<uses-permission android:name=
"android.permission.CAMERA"
/>
<uses-feature android:name=
"android.hardware.camera"
/>
<uses-feature android:name=
"android.hardware.camera.autofocus"
/>
<uses-permission android:name=
"android.permission.INTERNET"
/>
<uses-permission android:name=
"android.permission.KILL_BACKGROUND_PROCESSES"
/>
<uses-permission android:name=
"android.permission.RESTART_PACKAGES"
/>
<application
android:icon=
"@drawable/ic_launcher"
android:label=
"@string/app_name"
>
<activity
android:name=
".GetIP"
android:screenOrientation=
"landscape"
android:label=
"@string/app_name"
>
<intent-filter>
<action android:name=
"android.intent.action.MAIN"
/>
<category android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<activity
android:name=
".CameraTest"
android:screenOrientation=
"landscape"
android:label=
"@string/app_name"
>
</activity>
</application>
</manifest>
|
(2)main.xml 设置surfaceview用于摄像头采集图像的预览
<?xml version=
"1.0"
encoding=
"utf-8"
?>
<LinearLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"fill_parent"
android:layout_height=
"fill_parent"
android:orientation=
"vertical"
>
<SurfaceView
android:id=
"@+id/sView"
android:layout_width=
"fill_parent"
android:layout_height=
"fill_parent"
android:scaleType=
"fitCenter"
/>
</LinearLayout>
|
(3)login.xml 登录界面,用于输入服务器IP
<?xml version=
"1.0"
encoding=
"utf-8"
?>
<TableLayout xmlns:android=
"http://schemas.android.com/apk/res/android"
android:id=
"@+id/loginForm"
android:orientation=
"vertical"
android:layout_width=
"fill_parent"
android:layout_height=
"fill_parent"
>
<TableRow>
<TextView
android:layout_width=
"fill_parent"
android:layout_height=
"wrap_content"
android:text=
"IP:"
android:textSize=
"10pt"
/>
<!-- 输入用户名的文本框 -->
<EditText
android:id=
"@+id/ipedittext"
android:layout_width=
"fill_parent"
android:layout_height=
"wrap_content"
android:digits=
"0123456789."
android:hint=
"请填写服务器IP"
android:selectAllOnFocus=
"true"
/>
</TableRow>
</TableLayout>
|
(4)GetIP.java 获得服务器IP后,通过Intent启动CameraTest的activity,ip信息通过Bundle传递
public
class
GetIP
extends
Activity {
|