Android SurfaceView正在更换红色和蓝色谷歌玻璃摄像头的颜色

Android SurfaceView正在更换红色和蓝色谷歌玻璃摄像头的颜色,android,camera,google-glass,google-gdk,Android,Camera,Google Glass,Google Gdk,出于某种奇怪的原因,surfaceView很好地显示了图像,但红色和蓝色通道互换了。我使用的代码与中的基本相同,但有一些细微的更改 我使用的代码是: public class CameraView extends SurfaceView implements SurfaceHolder.Callback{ private SurfaceHolder surfaceHolder = null; private Camera camera = null; public CameraView(Co

出于某种奇怪的原因,surfaceView很好地显示了图像,但红色和蓝色通道互换了。我使用的代码与中的基本相同,但有一些细微的更改

我使用的代码是:

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 Auto-generated catch block
            e.printStackTrace();
            this.releaseCamera();
        }
        camera.startPreview();
    }
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
    this.releaseCamera();                   // Do not hold the camera during surfaceDestroyed - view should be gone...
}

public void releaseCamera() {
    if (camera != null) {
        camera.release();
        camera = null;
    }
}

}

你知道为什么要换颜色吗?

这个问题可能与以下方面有关:


这个问题可能与以下方面有关:


您是否将活动的ContentView设置为CameraView?如果是这样,就会出现这个问题。我在下面的代码中遇到了同样的问题

@Override
protected void onResume() {
    super.onResume();
    cameraPreview = new CameraPreview(this);
    // setUpCameraPreview();
    setContentView(cameraPreview);
}
后来,我用以下代码创建了
activity\u main.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/black"
    tools:context="com.arun.camera.CustomCamera">

    <FrameLayout
        android:id="@+id/cameraPreview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</FrameLayout>

您是否将活动的ContentView设置为摄影师?如果是这样,就会出现这个问题。我在下面的代码中遇到了同样的问题

@Override
protected void onResume() {
    super.onResume();
    cameraPreview = new CameraPreview(this);
    // setUpCameraPreview();
    setContentView(cameraPreview);
}
后来,我用以下代码创建了
activity\u main.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/black"
    tools:context="com.arun.camera.CustomCamera">

    <FrameLayout
        android:id="@+id/cameraPreview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</FrameLayout>

我也有同样的问题。 我找到的一个解决办法是在屏幕上加一个边距

dimens.xml

  <dimen name="glass_video_margin">1px</dimen>
1px
layout_activity.xml

    <VideoView
    android:id="@+id/vid_back"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/glass_video_margin"
     />

我也有同样的问题。 我找到的一个解决办法是在屏幕上加一个边距

dimens.xml

  <dimen name="glass_video_margin">1px</dimen>
1px
layout_activity.xml

    <VideoView
    android:id="@+id/vid_back"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/glass_video_margin"
     />

我也有同样的问题,它让我发疯。经过大量的努力,我发现由于某种奇怪的原因,当布局只包含FrameLayout(包含相机的SurfaceView)而没有其他布局元素时,就会发生这种情况。 在我的例子中,我在FrameLayout上添加了空的TextView,并解决了这个问题。奇怪但有效。(最终我使用这个TextView来显示文本,所以这就是样式和位置属性的原因)



我也有同样的问题,这让我发疯。经过大量的努力,我发现由于某种奇怪的原因,当布局只包含FrameLayout(包含相机的SurfaceView)而没有其他布局元素时,就会发生这种情况。 在我的例子中,我在FrameLayout上添加了空的TextView,并解决了这个问题。奇怪但有效。(最终我使用这个TextView来显示文本,所以这就是样式和位置属性的原因)



我也有同样的问题,但不仅仅是在相机视频预览上。 我解决了。 我将android:hardwareAccelerated=“true”添加到androidmanifest.xml活动部分。 现在可以了。
(对不起,我的英语不好。)

我也有同样的问题,但不仅仅是在相机视频预览上。 我解决了。 我将android:hardwareAccelerated=“true”添加到androidmanifest.xml活动部分。 现在可以了。

(对不起我的蹩脚英语)

你没有考虑打开Github吗?嗨,亚历克斯,我也没有找到答案,最终有人会有同样或相似的问题,对此的回答可能是有用的。到目前为止,我已经搜索并测试了许多解决方案,但都没有成功。我也不是安卓专家,我没有说“在GitHub上寻找答案”。但是,也许那些遵循OpenGrand项目(32)的人有一些答案,或者可以找到答案,但是没有订阅。好吧,好的,我会听从你的建议。你不考虑打开Github吗?嗨,亚历克斯,我在这里也没有找到答案,最终有人会有同样或相似的问题,对此的答案可能会很有用。到目前为止,我已经搜索并测试了许多解决方案,但都没有成功。我也不是安卓专家,我没有说“在GitHub上寻找答案”。但是,也许那些关注OpenQuartz项目的人(现在32个)中的一些人有答案,或者可以找到答案,但没有订阅,所以]好的,好的,我会听从你的建议。太好了!我会试试看,让你知道!事实上,我昨天一直在与此抗争,出于某种原因(我想有更多的信息来回答你),我的屏幕只是冻结和完整的GGlass直到我需要硬重置的点。可能是你在你的主(UI)线程上做了太多的工作。也有可能你没有以正确的方式启动和停止相机预览。所以,我让它工作了,但颜色仍然是交换的。我认为问题直接来自“cameraPreview”对象,而不是contentview。超级!我会试试看,让你知道!事实上,我昨天一直在与此抗争,出于某种原因(我想有更多的信息来回答你),我的屏幕只是冻结和完整的GGlass直到我需要硬重置的点。可能是你在你的主(UI)线程上做了太多的工作。也有可能你没有以正确的方式启动和停止相机预览。所以,我让它工作了,但颜色仍然是交换的。我认为问题直接来自“cameraPreview”对象,而不是contentview。他清楚地提到,图像预览显示良好,但只交换了R和B通道。所以答案是不相关的。他清楚地提到,图像预览显示良好,但只有R和B通道交换。所以答案是不相关的。你把这个版面作为ContentView加载吗?是的,这只是版面的一部分。我将屏幕中的此视频视图与findViewById关联。此示例用于播放视频。在你的情况下,你可能需要将视频视图改为表面视图。@Euber说真的,这让我很恼火。增加了40px的利润率,成功了!谢谢,您将此版面作为ContentView加载吗?是的,这只是版面的一部分。我将屏幕中的此视频视图与findViewById关联。此示例用于播放视频。在你的情况下,你可能需要将视频视图改为表面视图。@Euber说真的,这让我很恼火。增加了40px的利润率,成功了!谢谢你,伙计,你太棒了!这是一个奇怪的工作,但肯定是工作!谢谢老兄,你太棒了!这是一个奇怪的工作,但肯定是工作!谢谢