Skip to content

takusan23/WipeCamera

Repository files navigation

WipeCamera

Android 11 ? から前面カメラと背面カメラを同時に利用できるようになったらしいのでワイプ付きのカメラを作った。

Screenshot_20230226-234126

仕組み

OpenGL を利用してアウトカメラとフロントカメラを描画しています。
(SurfaceView を2つ利用しているわけではなく、SurfaceView + OpenGL でやっています。録画機能もありますが私の実装が雑なので一回だけ使えます。)

figma

カメラの映像はSurfaceTextureを利用することで、フラグメントシェーダからテクスチャとして利用できます。
SurfaceTexture#setOnFrameAvailableListenerがカメラのフレームが取得されるたびに呼び出されるので、SurfaceTexture#updateTexImageを呼び出してテクスチャを転送?した後、
GLES20.glDrawArraysを呼んで描画するようにしています。
シェーダーはよくわかりませんがなんか動いています。

figma

シェーダーは AOSP のをそのまま使ってます。よくわからん;;
https://cs.android.com/android/platform/superproject/+/master:cts/tests/tests/media/common/src/android/media/cts/InputSurface.java

About

Androidでワイプ付きのカメラアプリ

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages