1 つの画面で複数のビデオを同時に再生する機能を実装する予定であり、ビデオの再生中にビデオ ビューをスクロールできます。
親ビューとして機能する ListView にビデオ ビューを追加します。SurfaceView は Android ビュー階層によって再描画できないため、SurfaceView を使用してビデオ ストリームをレンダリングしないでください。SurfaceView をスクロールするのは悪い考えです。
幸いなことに、API レベル 14 から TextureView が追加されました。これは SurfaceView の置き換えでした。だから私は自分の計画を達成するためにそれを使うことができます。
しかし、TextureView は API レベル 14 以上でしか利用できません。実際、API レベル 11 以上のプラットフォームでこの機能を実装するよう求められました。
私は、API レベル 11 以降に Android に追加された SurfaceTexture に注意を払い始めました。SurfaceTexture を使用して、カメラ画像ストリームまたはビデオ デコード ストリームを OpenGL テクスチャに配置できます。また、Android ビュー階層は、代わりに opengl によって描画されることも知っています。 API レベル 11 以降の skia。
したがって、SurfaceTexture を使用して、ビデオ ストリームを通常の Android ビューにレンダリングできるかどうか疑問に思っています。
つまり、API レベル 14 以降に追加された TextureView の位置を置き換えるために、API レベル 11-13 用にカスタマイズされたウィジェットを実装できますか?
私は android.view.TextureView のソース コードを調べましたが、それほど複雑ではありません。依存クラスは次のとおりです。
package android.view;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.SurfaceTexture;
import android.os.Looper;
import android.util.AttributeSet;
import android.util.Log;
また、4 つのネイティブ API があります。
private native void nCreateNativeWindow(SurfaceTexture surface);
private native void nDestroyNativeWindow();
private static native boolean nLockCanvas(int nativeWindow, Canvas canvas, Rect dirty);
private static native void nUnlockCanvasAndPost(int nativeWindow, Canvas canvas);
クラス TextureView を Android api レベル 11-13 に移植することは可能ですか?
誰が私にアドバイスをくれますか?