我已经创建了一个自定义的系统服务,我希望我的服务能够在没有预览的情况下在后台捕获相框。我已经按照developer.android网站中的步骤操作并实现了以下代码,但它没有生成任何框架。这是代码:
public void startCapture() {
//Start The camera
int openCamera = 0;//default camera to be opened
mCamera = Camera.open(openCamera);
Camera.Parameters p = mCamera.getParameters();
setPreviewSize(p.getPreviewSize());//method to get Camera size
mCamera.getParameters().setPreviewFpsRange(1, 2);
try{
Camera.PreviewCallback mPreviewCallback = new Camera.PreviewCallback()
{
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
// public void cameraPreview(byte[] data, Camera camera) {
// TODO Auto-generated method stub
decodeYUV420SP(rgb, data, width, height);//method for processing the image
bitmap.setPixels(rgb, 0, width, 0, 0, width, height);
String newFolder = "/Pictures";
String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
File myNewFolder = new File(extStorageDirectory + newFolder);
if (!myNewFolder.exists())
myNewFolder.mkdir();
File file = new File(path, "/Pictures/Frame-"+count+".jpg");
boolean fileCreated = file.createNewFile();
FileOutputStream out = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
out.flush();
out.close();
};
}catch (Exception e)
{
e.printStackTrace();
}
}
mCamera.setPreviewCallback(mPreviewCallback);
mCamera.startPreview();
}
我希望在提到的路径中捕获帧并存储在SD卡中。但我没有完成它。我在这做错了什么。需要一些帮助!
感谢提前回复。
答案 0 :(得分:0)
我有类似的问题。您需要与视图的“持有者”对象同步,锁定画布,处理框架,然后再次解锁画布。我认为问题是预览数据在回调中返回并串联绘制到屏幕上(同步关键字允许您捕获它)。