2014-07-24 11 views
5

Mentre si lavora con l'API della fotocamera, ho riscontrato un problema su un dispositivo HTC ONE. Ho controllato questo su LG G2 e ha funzionato senza errori. Ho rintracciato il problema verso il basso per una sola riga:Il metodo di chiamata getFocusAreas() causa java.lang.NumberFormatException su HTC ONE

List<Camera.Area> areas = camera.getParameters().getFocusAreas(); 

getParameters Method() funziona da esso auto. Quindi il problema è in getFocusArea(). Questo è uno snippet di LogCat.

07-24 18:29:13.716 W/ActivityMain(28952): java.lang.NumberFormatException: Invalid int: " 0" 
07-24 18:29:13.716 W/ActivityMain(28952): at java.lang.Integer.invalidInt(Integer.java:137) 
07-24 18:29:13.716 W/ActivityMain(28952): at java.lang.Integer.parse(Integer.java:374) 
07-24 18:29:13.716 W/ActivityMain(28952): at java.lang.Integer.parseInt(Integer.java:365) 
07-24 18:29:13.716 W/ActivityMain(28952): at java.lang.Integer.parseInt(Integer.java:331) 
07-24 18:29:13.716 W/ActivityMain(28952): at android.hardware.Camera$Parameters.splitInt(Camera.java:4321) 
07-24 18:29:13.716 W/ActivityMain(28952): at android.hardware.Camera$Parameters.splitArea(Camera.java:4428) 
07-24 18:29:13.716 W/ActivityMain(28952): at android.hardware.Camera$Parameters.getFocusAreas(Camera.java:4088) 

Questa è informazioni sul dispositivo.

build.board: APQ8064 
build.bootloader: 1.57.0000 
build.brand: htc 
build.cpu_abi: armeabi-v7a 
build.cpu_abi2: armeabi 
build.device: m7 
build.display: KOT49H release-keys 
build.fingerprint: htc/htc_europe/m7:4.4.2/KOT49H/334166.10:user/release-keys 
build.hardware: m7 
build.host: abm019 
build.id: KOT49H 
build.manufacturer: HTC 
build.model: HTC One 
build.product: htc_europe 
build.radio: unknown 
build.serial: FA35WW934521 
build.tags: release-keys 
build.time: 1399302943000 
build.type: user 
build.user: buildteam 
version.codename: REL 
version.incremental: 334166.10 
version.release: 4.4.2 
version.sdk_int: 19 

Quindi, qualcuno può spiegare perché si tratta di questo e se c'è una soluzione alternativa?

+0

Hai spiegato nella tua eccezione: 'Int non valido:" 0 "'. Sbarazzati di quello spazio. –

+0

@Marcin Grazie per la tua brillante intuizione. Queste stringhe difettose non dipendono da me ma dal funzionamento interno dell'API. So che il problema è questa stringa. Per favore leggi la domanda e non pubblicare (o meno) se non sai di cosa stai scrivendo. –

+0

La risposta è "Sbarazzati di quello spazio". Ho ottenuto record di dispositivi HTC facendo stranezze con i formati numerici qua e là (come l'uso di ',' invece di '. 'Mentre tutti gli altri dispositivi utilizzavano' .' quindi si bloccavano per lo stesso motivo a causa della mancata corrispondenza del formato. space' :) –

risposta

3

Sembra che si tratti di un errore nell'API che si verifica solo su alcuni dispositivi. Questo succede solo se nessuna area è stata ancora inviata chiamando setFocusAreas()

La soluzione è semplice. Chiama almeno una volta setFocusAreas(). Probabilmente vuoi farlo in qualche tipo di funzione di setup/inizializzazione, o tenere traccia di un flag se hai chiamato questa funzione almeno una volta.

Vedere this link per ulteriori informazioni sul bug.

Problemi correlati