1. 程式人生 > >android 遠端視訊監控系統

android 遠端視訊監控系統

基本過程是Android作為socket客戶端將採集到的每一幀影象資料傳送出去,PC作為伺服器接收並顯示每一幀影象實現遠端監控。圖片如下(後來PC端加了個拍照功能)。。。

(PS。剛學android和Java不久很多東西還不懂,高手若是知道哪些地方可以繼續優化的話還請多多指點下啊)

系統程式碼如下:
一、android手機客戶端
(1)AndroidManifest.xml檔案。新增camera和socket許可權,並設定了程式開始執行的activity、

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <
    manifestxmlns:android="http://schemas.android.com/apk/res/android"
  3.     package="org.wanghai.CameraTest"
  4.     android:versionCode="1"
  5.     android:versionName="1.0">
  6.     <uses-sdkandroid:minSdkVersion="15"/>
  7.     <!-- 授予程式使用攝像頭的許可權 -->
  8.         <uses-permissionandroid:name="android.permission.CAMERA"
    />
  9.         <uses-featureandroid:name="android.hardware.camera"/>
  10.         <uses-featureandroid:name="android.hardware.camera.autofocus"/>
  11.         <uses-permissionandroid:name="android.permission.INTERNET"/>
  12.     <uses-permissionandroid:name="android.permission.KILL_BACKGROUND_PROCESSES"
    />
  13.     <uses-permissionandroid:name="android.permission.RESTART_PACKAGES"/>
  14.     <application
  15.         android:icon="@drawable/ic_launcher"
  16.         android:label="@string/app_name">
  17.         <activity
  18.             android:name=".GetIP"
  19.             android:screenOrientation="landscape"
  20.             android:label="@string/app_name">
  21.             <intent-filter>
  22.                 <actionandroid:name="android.intent.action.MAIN"/>
  23.                 <categoryandroid:name="android.intent.category.LAUNCHER"/>
  24.             </intent-filter>
  25.         </activity>
  26.         <activity
  27.             android:name=".CameraTest"
  28.             android:screenOrientation="landscape"
  29.             android:label="@string/app_name">
  30.         </activity>
  31.     </application>
  32. </manifest>

(2)main.xml 設定surfaceview用於攝像頭採集影象的預覽

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:layout_width="fill_parent"
  4.     android:layout_height="fill_parent"
  5.     android:orientation="vertical" >  
  6.    <SurfaceView  
  7.         android:id="@+id/sView"
  8.         android:layout_width="fill_parent"
  9.         android:layout_height="fill_parent"
  10.         android:scaleType="fitCenter"/>  
  11. </LinearLayout>  

(3)login.xml 登入介面,用於輸入伺服器IP

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <TableLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3.         android:id="@+id/loginForm"
  4.         android:orientation="vertical"
  5.         android:layout_width="fill_parent"
  6.         android:layout_height="fill_parent"
  7.         >
  8. <TableRow>
  9. <TextView
  10.         android:layout_width="fill_parent"
  11.         android:layout_height="wrap_content"
  12.         android:text="IP:"
  13.         android:textSize="10pt"
  14.         />
  15. <!-- 輸入使用者名稱的文字框 -->
  16. <EditText
  17.     android:id="@+id/ipedittext"
  18.         android:layout_width="fill_parent"
  19.         android:layout_height="wrap_content"
  20.         android:digits="0123456789."
  21.         android:hint="請填寫伺服器IP"
  22.         android:selectAllOnFocus="true"
  23.         />
  24. </TableRow>
  25. </TableLayout>

(4)GetIP.java 獲得伺服器IP後,通過Intent啟動CameraTest的activity,ip資訊通過Bundle傳遞
  1. publicclass GetIP extends Activity {  
  2.         String ipname = null;  
  3.         @Override
  4.     publicvoid onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         // 設定全屏
  7.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  8.              getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);  
  9.         setContentView(R.layout.main);          
  10.               final Builder builder = new AlertDialog.Builder(this);   //定義一個AlertDialog.Builder物件