使用一些使用相机的apks(例如,zxing,opencv)会发生这种情况.它在预览中显示一个闪烁的图像,但它仍然是相机看到的功能,因此它似乎是编码不匹配.本机相机预览工作正常,因此内部应用程序不会出现此问题.
出于某些奇怪的原因,surfaceView正在显示图像,但红色和蓝色通道被交换.我使用的代码与Github项目中的代码基本相同,但有一些小的改动.
我正在使用它的代码是:
public class CameraView extends SurfaceView implements SurfaceHolder.Callback{
private SurfaceHolder surfaceHolder = null;
private Camera camera = null;
public CameraView(Context context) {
super(context);
surfaceHolder = this.getHolder();
surfaceHolder.addCallback(this);
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
camera = Camera.open();
Parameters parameters = camera.getParameters();
parameters.setPreviewFpsRange(30000, 30000);
camera.setParameters(parameters);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
if (camera != null){ // Start the preview for surfaceChanged
try {
camera.setPreviewDisplay(holder);
} catch (IOException e) {
// TODO …Run Code Online (Sandbox Code Playgroud)