============问题描述============
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============
引用 11 楼 zmhzhangminhua 的回复:
引用 10 楼 comeoverjava 的回复:
关于拍照,有前置拍照和后置拍照,如果是前置拍照,你如果是用的2.2的SDK,测试手机是2.3就不会回调,2.2的前置拍照,不同的手机,其中传入的参数也不同,想要兼容用反射是可以的
是基于4.0.3的SDK,在4.1.1的机子上运行的问题,调用后置摄像头,主要是魅族手机上就是不回调,在三星上是没问题的,所以想问下有谁遇到过相似的问题
确实没遇到过这个问题,之前在做Camera项目时魅族手机上回调正常,只是摄像头方向有些问题