Android Camera2 önizlemesi uzatıldı
Camera2 API'sini öğrenmeye çalışıyorum ve sadece fotoğraf çekmek için basit bir kamera uygulaması geliştirdim ancak karşılaştığım sorun, önizlemenin bazı çözünürlükler için uzatılmış olmasıdır. Bir dizi farklı gönderiden geçtim ve hepsi en boy oranımın yanlış olabileceğini önerdi, ancak Google'ın önerdiği AutoFitTextureView'ı doğru en boy oranıyla kullandım, yine de önizlemem geriliyor. Play Store'dan bazı açık kaynak kamera uygulamaları indirdim ve bunların birçoğu da ön kameramla aynı sorunu yaşadı (AÇIK KAMERA HARİÇ) ancak komik olan kısım, aynı uygulamayı başka bir cihazda kullanmam ve önizlemenin kesinlikle mükemmel olması. Sonunda uygulamamı farklı çözünürlüklerle test etmeye ve sonuçları gözlemlemeye karar verdim, ancak herhangi bir model bulamadım, lütfen herhangi biri bundan bir anlam çıkarmam için bana yardım edebilir mi ???
my device display size is 720x1280
Front camera results:
SurfaceTexture AutoFitTextureView Result
buffer size size
2576x1932 720x960 Normal
2560x1440 720x1280 Normal
2048x1536 720x960 Normal
2048x1152 720x1280 Normal
1920x1920 720x720 Normal
1920x1080 720x1280 Normal
1440x1080 720x960 Horizontally Stretched
1280x720 720x1280 Horizontally Stretched
1072x1072 720x720 Normal
960x720 720x960 Normal
720x480 720x1080 Horizontally Stretched
640x480 720x960 Horizontally Stretched
352x288 720x880 Normal
320x240 720x960 Normal
256x144 720x1280 Horizontally Stretched
176x144 720x880 Normal
Yanıtlar
Yeni başlayanlar için Camera2'yi öğrenmek çok zor. En çok parçayı yapan kamera kitaplıklarını kullanmayı düşünün. İşte bulduğum en iyisi:https://camerakit.io/docs. Bu gerçekten çok kolay ve şu anda karşılaştığınız tüm sorunları halledecek.
(Bu projenin sahibi olmadığımı ve yine de tanıtımını yapmadığımı unutmayın. Camera2 API'yi denedim ve gerçekten zor, bu yüzden daha kolay bir çözüm önerdim.
Aslında bu bir cihaz hatası olabilir - kamera uygulaması, tam sensör boyutundan yanlış bir şekilde ölçekleniyor. Çoğu uygulamanın kullanmadığı alışılmadık boyutlarda daha yaygın olarak gerçekleşir.
Sizin durumunuzda, muhtemelen 1440x1080, kamera boru hattının bir kısmı tarafından 1920x1080 olarak ele alınır ve bu esneme ile sonuçlanır. Bazen bu, farklı bir çözünürlükte (hatta bazen aynı) ikinci bir çıktı (örneğin JPEG) eklenerek 'düzeltilebilir'.
Elbette, kodunuzda (veya AutoFitTextureView'da) bir mantık hatası olması mümkündür. Ancak bunlar için yararlı tavsiyeler vermek zordur - bu, tüm düzeni kontrol etme ve matematiği adım adım ölçeklendirme meselesidir.
Google'ın resmi kamera destek kitaplığı CameraX'i de deneyebilirsiniz . Beta sürümündedir ve önizleme, hala yakalama ve görüntü analizi gibi temel kullanım durumlarında sorunsuz çalışır.