我有一个服务可以打开前置摄像头并显示其预览。 现在我想对预览图像进行一些图像处理,因此我设置了一个预览回调。
我的问题是没有调用回调,我得到臭名昭着的Choreographer消息"跳过X帧......在其主线程上做了太多工作" 这看起来很奇怪,因为我目前在回调中所做的就是打印一条日志行。 此外,当我调试(通过ADT),并且我在日志打印行上打破时,它被调用(但是如果我让它运行,那么尝试在线上的某个时候打破它)。 这种情况发生在我在平板电脑上运行时(我不使用emultor),但是当我在手机上运行它(Nexus 5,比我的平板电脑更强)时,每次都成功调用回调,没有跳过任何帧
我的自定义surfaceholder surfaceCreated():
public void surfaceCreated(SurfaceHolder holder) {
try {
mCamera.setPreviewDisplay(holder);
} catch (IOException e) {
Log.d(TAG, "Error setting camera preview: " + e.getMessage());
}
try {
mCamera.setPreviewCallback(new Camera.PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera arg1) {
Log.d("Freshub.BackgroundService", "onPreviewFrame Called!!");
}
});
} catch (Throwable e) {
e.printStackTrace();
}
mCamera.startPreview();
}
有关如何让它在我的平板电脑上运行的任何建议吗?
答案 0 :(得分:0)