画面上でビデオを回転できるようにする必要があるため、VideoViewの現在の実装と同様に、MediaPlayer上に便利なレイヤーを提供するカスタムTextureViewを作成しました。このAndroidブログの投稿では、TextureViewについて次のように述べています。
SurfaceViewのコンテンツはアプリケーションのウィンドウに表示されないため、効率的に変換(移動、拡大縮小、回転)することはできません。これにより、ListViewまたはScrollView内でSurfaceViewを使用することが困難になります。また、SurfaceViewは、フェードエッジやView.setAlpha()などのUIツールキットの一部の機能と適切に対話できません。
これらの問題を解決するために、Android 4.0では、ハードウェアアクセラレーションによる2DレンダリングパイプラインとSurfaceTextureに依存するTextureViewと呼ばれる新しいウィジェットが導入されています。TextureViewはSurfaceViewと同じ機能を提供しますが、SurfaceViewとは異なり、通常のビューとして動作します。たとえば、TextureViewを使用して、OpenGLシーンまたはビデオストリームを表示できます。TextureView自体は、アニメーション化、スクロールなどが可能です。
ただし、TextureViewがビデオの再生に苦労しているようです。私がテストしているターゲットデバイスには、1.2Ghz Rockchip RK3066デュアルコアCPU、クアッドコアMali-400 GPU(ARM)、および1GBRAMが搭載されています。このデバイスでVideoViewsを使用した同じコードは正常に実行されますが、特定のデバイスに応じて、TextureViewsは再生中に「途切れる」か、まったく表示されません(左上に白い四角が付いたブラックボックス)。TextureViewsは、Intel提供のx86「デバイス」を使用するエミュレーターで正常に動作します。
このパフォーマンスヒットは予想されますか、それとも問題を見つけるために他の場所を探す必要がありますか?ありがとう