Android摄像头-如何在预览中更改像素?

Android摄像头-如何在预览中更改像素?,android,camera,preview,Android,Camera,Preview,我想将预览中的一些像素更改为比其他像素暗一点。 假设我希望预览的上半部分比下半部分稍微暗一点 我试着像这样使用setPreviewCallback: camera.setPreviewCallback(new PreviewCallback() { // Called for each frame previewed public void onPreviewFrame(byte[] data, Camera camera) { Log.d(TAG, "onPreview

我想将预览中的一些像素更改为比其他像素暗一点。 假设我希望预览的上半部分比下半部分稍微暗一点

我试着像这样使用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();
    }
});
camera.setPreviewCallback(新的PreviewCallback(){
//为预览的每个帧调用
预览帧上的公共无效(字节[]数据,摄像头){
Log.d(标记为“+System.currentTimeMillis()”处调用的onPreviewFrame”;
对于(int i=0;i
但它不起作用,因为我做错了什么。我怎样才能让它工作

谢谢
Eyal

这样操作预览是不可能的,因为您只能将缓冲区的一个副本放到onPreviewFrame中

最简单的方法是覆盖另一个视图,它使用透明画布使部分视图变暗。如果需要检查传入图像以生成覆盖,覆盖视图可以实现Camera.PreviewCallback

在您的活动中,您会:

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