title: How to draw objects on TextureView Camera stream preview and record the stream with objects?
body: <p>I need help with an application I am working on. The application has to have a custom Camera interface to record a video with audio and have to add some objects in realtime on the TextureView canvas. Old Camera API is deprecated, so I have to use Camera2 API to render the live preview on TextureView. My goal is to draw some objects on top of the TextureView Canvas, could be some text/jpg/gif while the camera stream renders in the background and being able to record the video with my overlay canvas content and camera feed.</p>
  
  <p>Problem is I can draw custom content in an transparent overlay view but that is is just for user's viewing purposes. I have tried researching this for a few days but I am not able to get the right approach to solve my purpose.</p>
  
  <p>I tried the following code after calling the openCamera() method, but then I just see a rectangle drawn but not the camera preview:</p>
  
  <pre><code>Canvas canvas = mTextureView.lockCanvas();
  Paint myPaint = new Paint();
  myPaint.setColor(Color.WHITE);
  myPaint.setStrokeWidth(10);
  canvas.drawRect(100, 100, 300, 300, myPaint);
  mTextureView.unlockCanvasAndPost(canvas);
  </code></pre>
  
  <p>I also tried a custom TextureView class and override thevonDrawForeground(Canvas canvas) method but it doesn't work.</p>
  
  <p>The onDraw() method in TextureView class is final and thus, I am not able to do anything at this point except for just streaming the camera feed.</p>
  
  <pre><code>/**
   * Subclasses of TextureView cannot do their own rendering
   * with the {@link Canvas} object.
   *
   * @param canvas The Canvas to which the View is rendered.
   */
  @Override
  protected final void onDraw(Canvas canvas) {
  }
  </code></pre>
  
  <p>In short, I want user to be able to record video through my camera app with some props here and there. </p>