我希望在相机顶部放置一个 openGL 模型(通过 GLSurfaceView),它有自己的 SurfaceView。这肯定是可能的,像 Layar 这样的应用程序就是这样做的。
这是我正在尝试的:
public class MainActivity extends Activity {
private CameraSurfaceView mCameraSurfaceView;
private GLSurfaceView mCubeGLSurfaceView;
private FrameLayout mFrameLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
mFrameLayout = new FrameLayout(this);
mCameraSurfaceView = new CameraSurfaceView(this);
mCubeGLSurfaceView = new GLSurfaceView(this);
mCubeGLSurfaceView.setRenderer(new CubeRenderer());
//mCubeGLSurfaceView.setZOrderMediaOverlay(true);
mFrameLayout.addView(mCameraSurfaceView);
mFrameLayout.addView(mCubeGLSurfaceView);
setContentView(mFrameLayout);
}
}
现在:只是相机出现了。我在网上阅读了有关 GLSurfaceView 的 SetZOrderMediaOverlay 属性;在上面的代码中将其设置为 TRUE 会使 3D 立方体显示为黑色背景(即不显示相机预览)。
参考:
- 这是我正在使用的 Cube OpenGL 代码:http: //intransitione.com/blog/create-a-spinning-cube-with-opengl-es-and-android/
- 这是 CameraSurfaceView 代码: https ://github.com/davefp/android-camera-api-example/blob/master/src/com/example/cameraexample/CameraSurfaceView.java
我尝试过的其他测试:更改各个表面视图的 addView 顺序无济于事;它只显示相机(我在某处读到更改 addView 顺序可能会有所帮助)。
谢谢你的帮助!