Я некоторое время боролся с https://github.com/commonsguy/cwac-camera
Удалось создать свой пользовательский CameraFragment
и пользовательский CameraHost
.
Я отменил getPictureSize
и getPreviewSize
. С помощью этих двух методов я могу узнать, какие Size
s можно использовать. Моя общая идея состоит в том, чтобы захватить квадратное изображение, а также предварительно просмотреть его перед захватом.
Я тестировал, и ни одно устройство не возвращает Size
в квадратном формате, поэтому я думаю, что лучшим подходом будет выбор размера, ближайшего к моим потребностям. Например, если мне нужно изображение в квадрате 800x800, я верну ближайшее Size
, это будет (например) 1280x1024.
Все идет нормально. Проблема заключается в следующем:
В документации указано:
Обычно ваш CameraHost вызывается с помощью getPreviewSize().
Проклятие; мое устройство Nexus5 никогда не запускает этот метод, но эмулятор Genymotion делает это. Таким образом, в моем эмуляторе я могу создать собственный размер предварительного просмотра, чего я не могу сделать на своем реальном устройстве. Поэтому мне нужна помощь в этом вопросе. Почему просто "обычно"? Что я могу сделать, чтобы изменить его на «всегда»?
Во втором случае мне нужны некоторые советы: если мне нужен квадратный размер предварительного просмотра, который, как я знаю, не будет доступен по умолчанию Size
s, возвращаемый getSupportedPreviewSizes
, что я могу сделать, чтобы отобразить квадрат ? Может быть, наложение квадрата поверх CameraFragment
? Это вообще возможно? Или я должен пойти на любой другой подход?
В любом случае, поздравляю с библиотекой; это абсолютно ясно и с таким количеством вариантов. Не нужно беспокоиться о «некоторых устройствах». Это здорово для Android-разработчика.
Спасибо.