私のカメラアプリのプレビューはOpenGL ES 2.0のGLSurfaceView
で実行されています。 logcatにエラーはありません。そして、アプリケーションのすべての機能が正しく動作します。しかし、後ろ向きのカメラから正面のカメラに切り替えるときや逆に切り替えるときに、ImageButton
が黒の空白になることがあります。AndroidのOpenGL ES環境でImageButtonが黒い空白に変わる
リアカメラカメラとフロントカメラを切り替える手順は次のとおりです。
-1。 (カスタマイズRenderer
クラスで)Renderer
オブジェクト
public void onSurfaceDestroyed() {
......
if (mCamera != null) {
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
mSTexture.release();
mSTexture = null;
mUpdateST = false;
pTexCoord = null;
pVertex = null;
deleteTexture();
......
}
-2を破壊します。 (カスタマイズGLSurfaceView
クラスで)カメラビュー
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
super.surfaceDestroyed(holder);
mRenderer.onSurfaceDestroyed();
mRenderer = null;
mGestureDetector = null;
mHandler = null;
}
-3を破壊します。新しいカメラビューを作成する(MainActivity
の場合)
public void addCameraView() {
mCameraView = new CameraView(this, mWidth, mHeight, mPicSizeR, mPicSizeF, mCameraMode, mFlashMode, mHandler);
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER);
mCameraView.setLayoutParams(params);
mRootLayout.addView(mCameraView, 0);
}
-4最初は(カスタマイズされたGLSurfaceView
クラスのコンストラクタで)新しいRenderer
オブジェクト
public class CameraView extends GLSurfaceView {
CameraActivity.CameraHandler mHandler;
CameraRenderer mRenderer;
GestureDetector mGestureDetector;
CameraView(Context context, int width, int height, int picSizeR, int picSizeF, boolean camera, int flash, CameraActivity.CameraHandler handler) {
super(context);
mHandler = handler;
mRenderer = new CameraRenderer(this, width, height, picSizeR, picSizeF, camera, flash, handler);
setEGLContextClientVersion(2);
setRenderer(mRenderer);
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
}
......
}
を作成し、私はこの問題は、メモリの不足についてですと仮定しました。そして...メモリを増やすには、コードandroid:largeHeap="true"
をマニフェストファイルに挿入してください。しかし、それはうまくいかなかった。
私は何が問題なのか分かりません。私は助けが必要です。