Я согласен с ответом dt0.Я использую класс Preview из примера Android, и для его исправления я просто увеличил допуск на аспект при определении оптимального размера предварительного просмотра:
private Size getOptimalPreviewSize(List<Size> sizes, int w, int h) {
final double ASPECT_TOLERANCE = 0.2; // this was 0.1
double targetRatio = (double) w / h;
...
}
С этим изменением, вместо того, чтобы установить оптимальный размер 720x480.(что приводит к сбою автофокуса), он устанавливает оптимальный размер 640x480, который проходит.Я до сих пор не понимаю, почему это решает проблему (фактическое представление имеет размер 734x480), но я счастлив, что это так.