2012-03-11 97 views
2

我想改变预览中的一些像素比其他的要暗一些。 假设我希望预览的上半部分比预览的下半部分更暗。Android相机 - 如何更改预览上的像素?

我试图用setPreviewCallback这样的:

camera.setPreviewCallback(new PreviewCallback() { 
    // Called for each frame previewed 
    public void onPreviewFrame(byte[] data, Camera camera) { 
    Log.d(TAG, "onPreviewFrame called at: " + System.currentTimeMillis()); 
    for (int i = 0; i < data.length; i++){ 
     if(i < data.length/2) 
     data[i] = manipulate(data[i]); 
    } 
    Preview.this.invalidate(); 
    } 
}); 

但它不工作,因为我做错了什么。我怎样才能使它工作?

感谢 的Eyal

回答

1

这是不可能操纵这样的预览,因为你只会得到缓冲的副本到onPreviewFrame。

最简单的做法是覆盖另一个视图,该视图使用透明画布使其部分更暗。如果您需要检查传入图像以生成叠加层,则叠加视图可以实现Camera.PreviewCallback。

在你的活动你这样做:

setContentView(yourPreviewSurfaceView); 
addContentView(yourOverlayView, ...); 
+0

谢谢!那工作 – Eyal 2012-03-11 15:13:32