これを試してください私はサーフェスビューを拡張していません。
    public class Preview_can_work extends Activity {
        private SurfaceView surface_view;  
        SurfaceHolder.Callback sh_ob = null;
        SurfaceHolder surface_holder        = null;
        SurfaceHolder.Callback sh_callback  = null;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            getWindow().setFormat(PixelFormat.TRANSLUCENT);
            surface_view = new SurfaceView(getApplicationContext());
            addContentView(surface_view, new LayoutParams(50, 50));
            if (surface_holder == null) {
                surface_holder = surface_view.getHolder();
            }
            sh_callback = my_callback();  // CREATING CALLBACK FOR YOUR SURFACE.
            surface_holder.addCallback(sh_callback);
        }
        // THIS FUNCTION RETURNS CALLBACK OBJECT FOR SURFACEVIEW.
            SurfaceHolder.Callback my_callback() {      
                SurfaceHolder.Callback ob1 = new SurfaceHolder.Callback() {
                    @Override
                    public void surfaceDestroyed(SurfaceHolder holder) {
                    }
                    @Override
                    public void surfaceCreated(SurfaceHolder holder) {
                    }
                    @Override
                    public void surfaceChanged(SurfaceHolder holder, int format, int width,
                            int height) {
                    }
                };
                return ob1;
        }
    }
これで、レイアウトにテキストビューまたはボタンを追加するだけで機能するはずです。
注:- サーフェスを動的に作成しています。あなたの場合、あなたができることは、xmlファイルですべてを作成できることです。surfaceview を作成する代わりに、video ビューを作成します。
SurfaceView surface_view = (SurfaceView) findViewById(R.id.video_view_id);
レイアウトから ID でビューをフェッチする場合は、コードからいくつかの行を削除する必要があります。それは:
            surface_view = new SurfaceView(getApplicationContext());
            addContentView(surface_view, new LayoutParams(50, 50));
それがあなたを助けることを願っています...