Camera无法回调picturecallback函数

mzhua78 2013-04-02 08:25:36
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就行
...全文
614 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
zh5243a 2014-10-21
  • 打赏
  • 举报
回复
在华为手机上遇到了同样的问题,拍照没有回调,之前在小米的手机上调试一直是正常
夏洛克 2013-07-13
  • 打赏
  • 举报
回复
我的原因是,为了使预览图不变形,将PictureSize与PreviewSize的值设置为相同相同的值,但是设置的PictureSize是不被支持的Size,因此造成了拍照后不调用此回调方法的bug。详解请看:http://blog.csdn.net/wangfayinn/article/details/9319161
mzhua78 2013-04-15
  • 打赏
  • 举报
回复
引用 13 楼 tcmakebest 的回复:
mCam = Camera.open(); 之后,接着就 mCam.takePicture(null, null, pictureCallBack); 根本没有开始预览的代码,感觉 open 已经报错了。
有些代码没贴而已,现在莫名其妙正常了
mzhua78 2013-04-15
  • 打赏
  • 举报
回复
引用 12 楼 monodin 的回复:
引用 11 楼 zmhzhangminhua 的回复:引用 10 楼 comeoverjava 的回复: 关于拍照,有前置拍照和后置拍照,如果是前置拍照,你如果是用的2.2的SDK,测试手机是2.3就不会回调,2.2的前置拍照,不同的手机,其中传入的参数也不同,想要兼容用反射是可以的 是基于4.0.3的SDK,在4.1.1的机子上运行的问题,调用后置摄像头,主要是……
方向问题的话,魅族开发者支持那里有解决方法
tcmakebest 2013-04-13
  • 打赏
  • 举报
回复
mCam = Camera.open(); 之后,接着就 mCam.takePicture(null, null, pictureCallBack); 根本没有开始预览的代码,感觉 open 已经报错了。
monodin 2013-04-13
  • 打赏
  • 举报
回复
引用 11 楼 zmhzhangminhua 的回复:
引用 10 楼 comeoverjava 的回复: 关于拍照,有前置拍照和后置拍照,如果是前置拍照,你如果是用的2.2的SDK,测试手机是2.3就不会回调,2.2的前置拍照,不同的手机,其中传入的参数也不同,想要兼容用反射是可以的 是基于4.0.3的SDK,在4.1.1的机子上运行的问题,调用后置摄像头,主要是魅族手机上就是不回调,在三星上是没问题的,所以想问下有谁遇到过相似的问题
确实没遇到过这个问题,之前在做Camera项目时魅族手机上回调正常,只是摄像头方向有些问题
mzhua78 2013-04-04
  • 打赏
  • 举报
回复
引用 6 楼 monodin 的回复:
open和takepicture最好不要放在onCreate中,建议使用线程来open,待open成功之后再向activity发消息执行takepicture方法 另外,open完后最好执行startpreview
我试试,但是之前试过另外的方法,也是说为了防止各步骤执行顺序不正确,但还是不行,我试试你说的吧
mzhua78 2013-04-04
  • 打赏
  • 举报
回复
引用 7 楼 shen332401890 的回复:
你没有 startPreview 不预览 是不可以 拍照的
预览,拍照那一下声音和拍照动画都有,就是不回调 预览已经在创建时初始化了,这里没有贴代码
顾小林 2013-04-04
  • 打赏
  • 举报
回复
你没有 startPreview 不预览 是不可以 拍照的
mzhua78 2013-04-04
  • 打赏
  • 举报
回复
引用 10 楼 comeoverjava 的回复:
关于拍照,有前置拍照和后置拍照,如果是前置拍照,你如果是用的2.2的SDK,测试手机是2.3就不会回调,2.2的前置拍照,不同的手机,其中传入的参数也不同,想要兼容用反射是可以的
是基于4.0.3的SDK,在4.1.1的机子上运行的问题,调用后置摄像头,主要是魅族手机上就是不回调,在三星上是没问题的,所以想问下有谁遇到过相似的问题
深夜深几许 2013-04-04
  • 打赏
  • 举报
回复
关于拍照,有前置拍照和后置拍照,如果是前置拍照,你如果是用的2.2的SDK,测试手机是2.3就不会回调,2.2的前置拍照,不同的手机,其中传入的参数也不同,想要兼容用反射是可以的
monodin 2013-04-03
  • 打赏
  • 举报
回复
open和takepicture最好不要放在onCreate中,建议使用线程来open,待open成功之后再向activity发消息执行takepicture方法 另外,open完后最好执行startpreview
mzhua78 2013-04-02
  • 打赏
  • 举报
回复
引用 4 楼 shen332401890 的回复:
试试 四参数的 takepicture public final void takePicture (Camera.ShutterCallback shutter, Camera.PictureCallback raw, Camera.PictureCallback postview, Camera.PictureCallback jpeg)
四个参数的takepicture()也不行还是这个错误, 04-02 09:05:44.745: E/Camera(6923): Error -38 04-02 09:06:31.455: E/Trace(7033): error opening trace file: No such file or directory (2)
顾小林 2013-04-02
  • 打赏
  • 举报
回复
试试 四参数的 takepicture public final void takePicture (Camera.ShutterCallback shutter, Camera.PictureCallback raw, Camera.PictureCallback postview, Camera.PictureCallback jpeg)
mzhua78 2013-04-02
  • 打赏
  • 举报
回复
引用 1 楼 guoyoulei520 的回复:
takepicture前先调用camera.startPreview试试
加了也没有回调函数,不懂为什么了
mzhua78 2013-04-02
  • 打赏
  • 举报
回复
引用 1 楼 guoyoulei520 的回复:
takepicture前先调用camera.startPreview试试
初始化相机的时候已经startPreview()了,还要在开始拍照时再次start?
凉凉二点凉 2013-04-02
  • 打赏
  • 举报
回复
takepicture前先调用camera.startPreview试试

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧