android camera無預覽拍照 後台拍照

來源:互聯網
上載者:User

前言:相信有許多人和我一樣,希望在不讓使用者知道的情況下,使用後台Server調用網路攝影機拍照,

在網上找了不少資料,大致都講到不預覽無法實現拍照,涉及到使用者隱私,屬於非法調用網路攝影機...怎麼辦!!!


,再來個,和,不就和沒東西彈出來一個效果。

   了...設這SurfaceView長和寬都為0.1  你不是要預覽嗎,也有,問題是預覽框這麼小,要是你還能看到那就沒辦   法了...

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".MyCamera" >    <!-- 預覽框,長寬都為0.1 -->    <SurfaceView        android:id="@+id/camera_surfaceview"        android:layout_width="0.1dp"        android:layout_height="0.1dp" >    </SurfaceView></RelativeLayout>


<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.chenww.camera.ui"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="10"        android:targetSdkVersion="16">    </uses-sdk>        <!-- 調用相機許可權 -->    <uses-permission android:name="android.permission.CAMERA" />    <uses-feature android:name="android.hardware.camera" />    <uses-feature android:name="android.hardware.camera.autofocus" />        <!-- 讀寫SD卡許可權 -->    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />        <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <!-- 拍照介面Activity -->        <activity            android:name="com.chenww.camera.ui.CameraActivity"            android:theme="@android:style/Theme.Translucent" >            <!-- theme設定成全透明 -->            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>


然後是CameraActivity.java檔案,這裡就得在oncreate開頭添加如下代碼設定視窗全屏並且無標題。
// 無title requestWindowFeature(Window.FEATURE_NO_TITLE); // 全屏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,         WindowManager.LayoutParams.FLAG_FULLSCREEN);

綁定SurfaceView 初始化SurfaceHolder

//初始化surfaceviewmySurfaceView = (SurfaceView) findViewById(R.id.camera_surfaceview);//初始化surfaceholdermyHolder = mySurfaceView.getHolder();myHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

接下來,初始化Camera對象,並調用該對象的setPreviewDisplay函數設定SurfaceHolder對象(這裡為myHolder)

//這裡的myCamera為已經初始化的Camera對象myCamera.setPreviewDisplay(myHolder);

接下來就是拍照,不過記得

myCamera.startPreview();//自動對焦myCamera.autoFocus(myAutoFocus);//對焦後拍照myCamera.takePicture(null, null, myPicCallback);

上面的myAutoFocus及myPicCallback分別自動對焦回呼函數和成功拍照回呼函數


//自動對焦回呼函數(空實現)private AutoFocusCallback myAutoFocus = new AutoFocusCallback() {@Overridepublic void onAutoFocus(boolean success, Camera camera) {}};


//拍照成功回呼函數private PictureCallback myPicCallback = new PictureCallback() {@Overridepublic void onPictureTaken(byte[] data, Camera camera) {}}

騷年,在處理完Camera返回的資料之後,記得關閉Activity並各種釋放資源

//完成拍照後關閉ActivityMyCameraActivity.this.finish();myCamera.stopPreview();myCamera.release();myCamera = null;


PS:對照片的處理,我在上一篇博文中有講到,比如android網路攝影機擷取的照片都是橫屏的...要讓他直起來怎麼搞或者是豎直預覽:點擊開啟連結


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.