我正在尝试拍照,但在调用 takePicture 时照片挂起。不会产生异常。我的代码在从服务启动的 AsyncTask 中运行。未使用任何 Activity ,也不得使用任何 Activity 。我在 Android 2.3.6 上运行这个。我可以等几分钟,永远不会调用 onPictureTaken。
代码:
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)
{
}
}
list :
<?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>
最佳答案
您需要在拍照前调用 this.camera.startPreview() ,然后在拍照后调用 stopPreview() 。 此外,如果您调用 release,就像您在示例中所做的那样,您的回调将永远不会执行
关于安卓:takePicture 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14254519/