2012-02-14 11 views
3

私はカメラの機能を知っていますgetMaxZoom()isZoomSupported()またはget/setZoom()です。私はこれらの機能を使用することができますが、Surface-Camera-Previewでは何も起こりません。私はすべての時間ズームで私のプレビューを開始したい。私はAndroid 2.3.3を使用します。私は何かを忘れますか?SurfaceViewでのズームカメラ - プレビュー

コードは次のとおりです。

Camera.Parameters parameters = camera.getParameters(); 
if(parameters.isZoomSupported()) 
      { 
       int maxZoom= parameters.getMaxZoom(); 
       parameters.setZoom(maxZoom); 
       camera.setParameters(parameters); 
      } 

ホープ誰もがアイデアを持っている...

ありがとう!

答えて

2

どの携帯電話を使用していますか?私は、カメラと私がテストしたすべてのデバイスを使用するアプリケーションを別々に動作させています。あなたが望むなら、私はテストアプリを投稿することができます。 http://www.mediafire.com/?laxtolevt57vax2

ここでは、私が使っているテストアプリへのリンクです。私は、複数の電話機で作業するために多くの変更を加えました。それはまだ完全ではありませんが、ズームは機能します。私はテストしました サムスン銀河s2、 ドロイドX、 ドロイドバイオン、 ドロイド2、 LGアリー。 HTCの感覚では機能しません。 getMaxZoom()はゼロを返します。また、HTC Incredible 2では動作しません。AutoFocusCallbackは実行されず、アプリケーションがハングしてカメラをロックします。

+0

のplsは答えがリンクをたどるすることなく、ソリューションを持っている必要がありますので、あなたが...ダウン投票 – prakash

+0

をコーディング投稿してください。 BTWのリンクが死んでしまった。 –

5
import android.content.Context; 
import android.graphics.PixelFormat; 
import android.hardware.Camera; 
import android.hardware.Camera.Parameters; 
import android.view.SurfaceHolder; 
import android.view.SurfaceView; 

public class CustomCameraView extends SurfaceView 
{ 
    Camera camera; 
    SurfaceHolder previewHolder; 

    public void zoom() 
    { 
     Parameters params=camera.getParameters(); 
     params.setZoom(params.getMaxZoom()); 
     camera.setParameters(params); 
    } 

    public void unzoom() 
    { 
     Parameters params=camera.getParameters(); 
     params.setZoom(0); 
     camera.setParameters(params); 
    } 

    public CustomCameraView(Context context) 
    { 
     super(context); 
     previewHolder=this.getHolder(); 
     previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 

     SurfaceHolder.Callback surfaceHolderListener=new SurfaceHolder.Callback() 
     { 
      public void surfaceCreated(SurfaceHolder holder) 
      { 
       camera=Camera.open(); 
       try{ 
        camera.setPreviewDisplay(previewHolder); 
       } 
       catch (Exception e) { 
       } 
      } 

      public void surfaceChanged(SurfaceHolder holder, int format, 
        int width, int height) { 
       Parameters params=camera.getParameters(); 
       params.setPreviewSize(width, height); 
       params.setPictureFormat(PixelFormat.JPEG); 

       //if you want the preview to be zoomed from start : 
       params.setZoom(params.getMaxZoom()); 

       camera.setParameters(params); 
       camera.startPreview(); 
      } 

      public void surfaceDestroyed(SurfaceHolder holder) { 
       camera.stopPreview(); 
       camera.release(); 
      } 
     }; 
     previewHolder.addCallback(surfaceHolderListener); 
    } 

} 
+0

parameters.isZoomSupported()がfalseを返してもズームが機能しました。 –

6
if (params.isZoomSupported()) { 
    final int maxZoomLevel = params.getMaxZoom(); 
    Log.i("max ZOOM ", "is " + maxZoomLevel); 
    zoomControls.setIsZoomInEnabled(true); 
    zoomControls.setIsZoomOutEnabled(true); 

    zoomControls.setOnZoomInClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      if(currentZoomLevel < maxZoomLevel){ 
       currentZoomLevel++; 
       //mCamera.startSmoothZoom(currentZoomLevel); 
       params.setZoom(currentZoomLevel); 
       mCamera.setParameters(params); 
      } 
     } 
    }); 

    zoomControls.setOnZoomOutClickListener(new OnClickListener(){ 
     public void onClick(View v){ 
      if(currentZoomLevel > 0){ 
       currentZoomLevel--; 
       params.setZoom(currentZoomLevel); 
       mCamera.setParameters(params); 
      } 
     } 
    });  
} 
else 
    zoomControls.setVisibility(View.GONE);