============问题描述============
package com.test;
import android.app.Activity;
import android.hardware.Camera;
import android.hardware.Camera.PictureCallback;
import android.os.Bundle;
public class BootTestActivity extends Activity {
private Camera mCam;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try
{
mCam = Camera.open();
if (mCam != null)
{
System.out.println("开始拍照了吗?");
mCam.takePicture(null, null, pictureCallBack);
System.out.println("拍照结束了吗?");
}
}
catch(Exception e)
{
System.out.println(e);
}
finally
{
if (mCam != null)
{
mCam .release();
System.out.println("release");
}
}
}
private PictureCallback pictureCallBack = new Camera.PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
System.out.println("可是我并没有被调用呀!");
}
};
}
权限:
<!-- 授予程序使用摄像头的权限 -->
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.CAMERA" />
为什么呢?在魅族MX2上就没用,但是在三星9300就行
============解决方案1============
试试 四参数的 takepicture public final void takePicture (Camera.ShutterCallback shutter, Camera.PictureCallback raw, Camera.PictureCallback postview, Camera.PictureCallback jpeg)
============解决方案2============
open和takepicture最好不要放在onCreate中,建议使用线程来open,待open成功之后再向activity发消息执行takepicture方法
另外,open完后最好执行startpreview
============解决方案3============
确实没遇到过这个问题,之前在做Camera项目时魅族手机上回调正常,只是摄像头方向有些问题