2013-10-29 32 views
-1

我對android編程非常陌生,我只想在相機視圖中打開相機應用程序,以便我可以打開相機並設置如下參數?在空白的表面打開相機查看

Camera camera = Camera.open(); 
Parameters p = camera.getParameters(); 
p.setFlashMode(Parameters.FLASH_MODE_ON); 
camera.setParameters(p); 
camera.startPreview();   
camera.release(); 

我遇到過評論說我必須通過表面。所以我創建了以下表面:

package com.example.fcloader; 

import java.io.IOException; 

import android.content.Context; 
import android.view.SurfaceView; 
import android.view.SurfaceHolder; 
import android.hardware.Camera; 


public class CameraSurfaceView extends SurfaceView implements SurfaceHolder.Callback 
{ 
     private SurfaceHolder holder; 
     private Camera camera; 

     public CameraSurfaceView(Context context) 
     { 
       super(context); 

       //Initiate the Surface Holder properly 
       this.holder = this.getHolder(); 
       this.holder.addCallback(this); 
       this.holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
     } 

     @Override 
     public void surfaceCreated(SurfaceHolder holder) 
     { 
       try 
       { 
         //Open the Camera in preview mode 
         this.camera = Camera.open(); 
         this.camera.setPreviewDisplay(this.holder); 
       } 
       catch(IOException ioe) 
       { 
         ioe.printStackTrace(System.out); 
       } 
     } 

     @Override 
     public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) 
     { 
       // Now that the size is known, set up the camera parameters and begin 
       // the preview. 
       Camera.Parameters parameters = camera.getParameters(); 
       parameters.setPreviewSize(width, height); 
       camera.setParameters(parameters); 
       camera.startPreview(); 
     } 


     @Override 
     public void surfaceDestroyed(SurfaceHolder holder) 
     { 
       // Surface will be destroyed when replaced with a new screen 
       //Always make sure to release the Camera instance 
       camera.stopPreview(); 
       camera.release(); 
       camera = null; 
     } 

     public Camera getCamera() 
     { 
       return this.camera; 
     } 
} 

這是我上線的基本表面代碼。我的問題是,我應該改變什麼以使這些事情相互配合?

回答

0

清單應包括以下內容:

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-feature android:name="android.hardware.camera" /> 
<uses-feature android:name="android.hardware.camera.autofocus" /> 

您添加CameraSurfaceView到您的佈局?您可以將它部署在您的layout.xml中或以編程方式將其添加到onCreate()之前layout.addView

1

camera.startPreview()之後,您必須編寫preview.setCamera(camera)來設置相機。 preview是您的課程的目標,其延伸SurfaceView並實施SurfaceHolder.Callback

camera.startPreview(); 
preview.setCamera(camera);