Android SurfaceView正在更换红色和蓝色谷歌玻璃摄像头的颜色
出于某种奇怪的原因,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
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的利润率,成功了!谢谢你,伙计,你太棒了!这是一个奇怪的工作,但肯定是工作!谢谢老兄,你太棒了!这是一个奇怪的工作,但肯定是工作!谢谢