2010-11-16 29 views
7

Şu anda resim çekmek için bir android uygulama oluşturmaya çalışıyorum ve belirli bir olaydaki (yani çekilen fotoğraf) kamera önizlemesini dondurmalı ve yalnızca başka bir etkinlikten sonra yeniden başlatmalıyım. görünümü görüntüsünü dondurmak için daha sonra donma olayı gerçekleşene kadar kamera görür ne olursa olsun görüntülemek ve için istediğim neAndroid Kamera Önizleme - Fotoğraf makinesini nasıl 'dondurursunuz?

, başka bir deyişle, bu olayın anda ekranda ne olursa olsun (yani göstergesidir - sanki Çözelti oluşana kadar bir fotoğraf çekildi.

Şu anda SurfaceHolder.Callback ile SurfaceView kullanıyorum ve bunu yapmak için ekran görüntüsünü dondurmak üzere PreviewCallback kullanmaya çalıştım ama maalesef bir örnek veya öğretici bulamıyorum ve Bu noktada gerçekten sıkışmış.

public class: herkes bir rehber ya da bu halletmek için bazı işaretçiler varsa

, ben aşağıda benim kod alakalı kısımları yapıştırarak ediyorum

... yardımını takdir gerçekten ediyorum CustomCameraView

Yardımlarınız için çok teşekkür ederim SurfaceView {

Camera camera; 
SurfaceHolder previewHolder; 

//Callback for the surfaceholder 
SurfaceHolder.Callback surfaceHolderListener = new SurfaceHolder.Callback() { 
    public void surfaceCreated(SurfaceHolder holder) { 
     camera=Camera.open(); 

     try 
     { 
      camera.setPreviewDisplay(previewHolder); 
     } 
     catch (Throwable t) { 

     } 
    } 

    public void surfaceChanged(SurfaceHolder surfaceHolder, int format, int w, int h) 
    { 
     Parameters params = camera.getParameters(); 
     params.setPictureFormat(PixelFormat.JPEG); 
      camera.setParameters(params); 
      camera.startPreview(); 
    } 

    public void surfaceDestroyed(SurfaceHolder arg0) 
    { 
     camera.stopPreview(); 
     camera.release(); 
    } 
}; 
public CustomCameraView(Context ctx) 
{ 
    super(ctx); 

    previewHolder = this.getHolder(); 
     previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
     previewHolder.addCallback(surfaceHolderListener); 
     setBackgroundColor(Color.TRANSPARENT); 
} 
public CustomCameraView(Context context, AttributeSet attrs) 
{ 
    super(context, attrs); 
} 
protected void onDraw (Canvas canvas) 
{ 
} 
public void closeCamera() 
{ 
    if(camera != null) 
     camera.release(); 
} 
public void dispatchDraw(Canvas c) 
{ 
    super.dispatchDraw(c); 
} 

} uzanır!

-Billy

cevap

14

Eski bir soru, biliyorum, ama kuşaklar için cevaplama. Sadece

camera.stopPreview(); 

önizleme tekrar() startPreview çağırana kadar bakıyoruz ne olursa olsun donacak aramak gerekir.

İlgili konular