2013-01-10 2 views
3

사진을 찍으려고하는데 takePicture가 호출 될 때 중단됩니다. 예외는 생성되지 않습니다. 내 코드는 서비스에서 실행되는 AsyncTask에서 실행됩니다. 활동이 사용되지 않으며 사용하지 않아야합니다. Android 2.3.6에서 실행하고 있습니다. 나는 분을 기다릴 수 있고 onPictureTaken은 결코 호출되지 않는다.Android : takePicture hangs

코드 :

import android.annotation.SuppressLint; 
import android.hardware.Camera; 
import android.hardware.Camera.PictureCallback; 
import android.os.AsyncTask; 
import android.os.Build; 

public class CameraAsyncTask extends AsyncTask<Void, Void, Boolean> implements Camera.PictureCallback 
{ 
    private Camera camera; 

    @Override 
    protected Boolean doInBackground(Void... params) 
    { 
    this.camera = Camera.open(); 
    this.camera.takePicture(null, null, (PictureCallback) this); 
    this.camera.release(); 
    } 

    @Override 
    protected void onPostExecute(Boolean succeeded) 
    { 
    } 

    public void onPictureTaken(byte[] data, Camera camera) 
    { 
    } 
} 

매니페스트 :

<?xml version="1.0" encoding="utf-8"?> 
<manifest> 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 

    <uses-permission android:name="android.permission.CAMERA" /> 

    <uses-feature 
     android:name="android.hardware.camera" 
     android:required="false" /> 
    <uses-feature 
     android:name="android.hardware.camera.autofocus" 
     android:required="false" /> 

</manifest> 
+0

안녕하세요, 당신은 해결책을 찾을 않았다 통해이어야합니다 ? 나는 똑같은 문제를 겪고있다. – Jakob

답변

1

당신은 사진을 촬영하기 전에 this.camera.startPreview()를 호출해야하고, stopPreview() 후. 백그라운드 스레드를 통해 호출 할 수 없습니다 당신이 당신의 예에서하고있는 것처럼, 릴리스를 호출하는 경우 또한, 콜백이 실행되지 얻을 않습니다

0

camera.takePicture는 메인 스레드