1
숨겨진 카메라 응용 프로그램에서 작업하고 있지만 사진을 찍는 데 문제가 있습니다.Android takePicture는 콜백 메서드를 호출하지 않습니다 onPictureTaken()
응용 프로그램을 디버깅 할 때 takePicture를 호출 할 수 있지만 pictureCallback 클래스를 호출하지 않습니다.
나는 수업을하고 있는데, 나는 너의 도움을 기다리고있다.
public class TakePhotoClass {
private final String LOG_TAG="Photo Taker Class";
private Context context;
private Camera cam;
private Camera.PictureCallback pictureCallback;
private AudioManager audioManager;
public TakePhotoClass(Context con) {
// TODO Auto-generated constructor stub
context=con;
audioManager=(AudioManager) con.getSystemService(Context.AUDIO_SERVICE);
}
public void takePhoto(){
prepareCamera();
audioManager.setStreamMute(AudioManager.STREAM_SYSTEM, true);
try{
cam.startPreview();
cam.takePicture(null, null, pictureCallback);
}catch(Exception ex)
{
Log.e(LOG_TAG, "Couldn't be taken photo. Error message: "+ex.getLocalizedMessage());
}
}
private void prepareCamera(){
cam=Camera.open();
Camera.Parameters param=cam.getParameters();
param.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
param.setJpegQuality(100);
param.setFocusMode(param.FOCUS_MODE_AUTO);
param.setPictureFormat(ImageFormat.JPEG);
cam.setParameters(param);
SurfaceView view=new SurfaceView(context);
try {
cam.setPreviewDisplay(view.getHolder());
} catch (IOException e) {
// TODO Auto-generated catch block
Log.e(LOG_TAG, "Can not set surface");
}
setCallback();
}
private void setCallback(){
pictureCallback=new Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
// TODO Auto-generated method stub
try{
File parentFolder=new File(Environment.getExternalStorageDirectory()+"/Agent Cam/Photo");
File photoFile=new File(parentFolder,"photo_"+getPhotoTime()+".jpg");
if(!photoFile.exists())
photoFile.mkdirs();
FileOutputStream stream=new FileOutputStream(photoFile);
stream.write(data);
stream.flush();
stream.close();
audioManager.setStreamMute(AudioManager.STREAM_SYSTEM, false);
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,Uri.parse("file://"+Environment.getExternalStorageDirectory())));
camera.release();
}catch(Exception ex)
{
Log.e(LOG_TAG, "Photo coluldn't be saved. Error message: "+ex.getLocalizedMessage());
}
}
};
}
private String getPhotoTime(){
SimpleDateFormat sdf=new SimpleDateFormat("ddMMyy_hhmmss");
return sdf.format(new Date());
}
}