Ho testato la nuova API Camera2 su Android Lollipop. Voglio prendere supportato dimensione anteprima:Android Camera2 Dimensioni output
StreamConfigurationMap streamConfigurationMap = cameraCharacteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
Size[] sizes = streamConfigurationMap.getOutputSizes(SurfaceTexture.class);
e la dimensione massima di anteprima è 1440x1080px su Samsung Galaxy Tab S che ha 2560x1600px risoluzione. Quindi la mia previewSize è 1440x1080px e la dimensione della superficie di TextureView è 2560x1600px quindi l'immagine è distorta.
Ho testato la vecchia API della telecamera che è obsoleta.
Camera.Parameters parameters = camera.getParameters();
List<Camera.Size> sizes = parameters.getSupportedPictureSizes();
E il codice precedente restituisce 32 combinazioni di dimensioni varius anteprima quali: 2560x1920
, 1920x1080
, 1080x1920
, 2560x2560
ecc In questo caso sono in grado di scegliere le dimensioni ottimali e visualizzare l'immagine corretta.
Non so come forzare la nuova API per ottenere la dimensione ottimale. So che la soluzione è ridimensionare la vista in basso che mostra l'anteprima, ma l'app per fotocamera integrata funziona correttamente in modalità schermo intero. Grazie in anticipo per tutti i suggerimenti!
"Quindi il mio previewSize è 1440x1080px e TextureView dimensioni superficie è 2560x1600px così immagine è distorta" - che è perché le tue proporzioni non sono gli stessi. Devi fare in modo che 'TextureView' abbia le stesse proporzioni delle immagini di anteprima della fotocamera, come usare margini negativi per ridimensionarlo più grande dello schermo su un asse. – CommonsWare
Lo so, ma perché le dimensioni dell'anteprima sono così piccole? Sulle dimensioni di anteprima di Samsung Galaxy S4 è 1920 x 1080 (lo stesso della risoluzione) e non vi è alcun problema per visualizzare l'immagine. – piotrek00
"Lo so, ma perché le dimensioni dell'anteprima sono così piccole?" - Dovresti chiedere a Samsung, sospetto. – CommonsWare