Что касается первого вопроса, добавьте слушателя к вашей SurfaceTexture и прослушайте onSurfaceTextureUpdated. Вы можете использовать этот метод в качестве справочного материала, чтобы знать, когда визуализировать анимацию.
О втором вопросе, насколько я знаю, в CameraX нет API для получения FPS из-за переменной природы камеры. предварительный просмотр с точки зрения FPS. Только запись видео имеет фиксированное значение FPS, для другого режима предварительного просмотра камеры FPS является переменным. С другой стороны, API-интерфейс camera2 можно настроить с диапазоном FPS (min-max), поэтому я предполагаю, что API-интерфейс CameraX будет иметь нечто подобное.
В качестве альтернативы вы можете динамически вычислять FPS, используя метод onSurfaceTextureUpdated. В inte rnet вы найдете много страниц, показывающих, как рассчитать FPS. Вот небольшой пример, код не проверен, но он должен вам помочь. Вызовите метод в onSurfaceTextureUpdated, после нескольких итераций вы должны получить активный FPS.
private long lastFpsTime = 0L;
private float fps;
private void computeFPS()
{
if (this.lastFpsTime != 0L)
{
this.fps = 1000.0f / (SystemClock.elapsedRealtime() - this.lastFpsTime);
}
this.lastFpsTime = SystemClock.elapsedRealtime();
}