// Signature format: 4.0
package androidx.car.app.activity {

  public final class CarAppActivity extends androidx.fragment.app.FragmentActivity {
    ctor public CarAppActivity();
  }

}

package androidx.car.app.activity.renderer.surface {

  public final class LegacySurfacePackage {
    ctor public LegacySurfacePackage(androidx.car.app.activity.renderer.surface.SurfaceControlCallback);
  }

  public interface SurfaceControlCallback {
    method public default void onError(String, Throwable);
    method public void onKeyEvent(android.view.KeyEvent);
    method public void onTouchEvent(android.view.MotionEvent);
    method public void onWindowFocusChanged(boolean, boolean);
    method public void setSurfaceWrapper(androidx.car.app.activity.renderer.surface.SurfaceWrapper);
  }

  public final class SurfaceWrapper {
    ctor public SurfaceWrapper(android.os.IBinder?, @Dimension int, @Dimension int, int, int, android.view.Surface);
    method public int getDensityDpi();
    method public int getDisplayId();
    method @Dimension public int getHeight();
    method public android.os.IBinder? getHostToken();
    method public android.view.Surface getSurface();
    method @Dimension public int getWidth();
  }

}

