Gestione corretta dell'exception: "i parametri getParameters falliti (parametri vuoti)"

Ho un'applicazione per la camera nell'archivio Google Play con Google Analytics installato. Continuo a ricevere il seguente rapporto di crash:

i parametri getParameters falliti (parametri vuoti)

  • Come posso monitorare il database di un'altra applicazione per le modifiche?
  • Caricamento anonimo dell'object File in API Imgur (JSON) dà errore di authentication 401
  • Come sostituire la cifra di cifratura inviata al server da Android quando si utilizza HttpsURLConnection?
  • Live555 su Android
  • Come posso iniettare il parametro attraverso il constructor in Roboguice?
  • Caricamento di file Android (Java) in server PHP non riesce con Android 4.03
  • La mia domanda è: qual è il modo corretto per gestire questo problema?

    Guardando alla fonte Android di where succede non mi ha dato ulteriori dettagli. L'errore viene generato in android_hardware_Camera.cpp:

    String8 params8 = camera->getParameters(); if (params8.isEmpty()) { jniThrowRuntimeException(env, "getParameters failed (empty parameters)"); return 0; } 

    Guardando in una camera Android open source per vedere come gestisce la situazione non era anche molto utile. Questo codice non sembra catturare la RuntimeException quando si chiamano getParameters. (Fatta exception per un caso in cui lo prendono, chiudere la camera, quindi riprenderlo).

    C'è un modo corretto per gestire questo problema?

    Altrimenti, c'è una ragione che succede così spesso?

    Nota: in un determinato giorno ho tra i 5k – 8k utenti attivi. Con circa 40-70 di queste eccezioni. Questo sembra veramente alto per me. So che ci sono istanze legittime in cui una telecamera potrebbe non inizializzare. Ma l'1% degli utenti sembra irragionevole. Inoltre, dato che l'applicazione per la camera Android non gestisce l'exception, mi fa davvero mi chiedo se c'è qualche altra causa principale.

  • C'è una libreria per gestire pacchetti TCP su Android?
  • Come get l'elenco dei seguaci usando Twitter Fabric Android?
  • scorrimento immagini immagini android per visualizzare l'image di alta qualità
  • Android: ClassNotFoundException quando passa l'object serializzabile in attività
  • Imansible eseguire l'applicazione openCV FaceDetection
  • Endless RecyclerView con ProgressBar per la paginazione
  • 4 Solutions collect form web for “Gestione corretta dell'exception: "i parametri getParameters falliti (parametri vuoti)"”

    Nel mio caso stavo ottenendo questo errore:

    i parametri getParameters falliti (parametri vuoti)

    quando ho chiamato getParameters() dopo aver sbloccato la camera. Quindi, call getParameters() prima di call camera.unlock() .

    Come ha accennato + Eddy Talvala, questo accade quando la camera è in cattivo stato .

    Come si arriva la camera in un cattivo stato?

    1) Probabilmente la ragione più comune sarebbe quella di chiudere / rilasciare la camera mentre lo utilizzava ancora in seguito. Ciò può essere particolarmente problematico se si utilizza l'object Camera su più thread senza sincronizzare l'accesso alla Camera . Assicurarsi di avere sempre un singolo thread che accede alla Camera alla volta.

    2) Nel mio caso era un po 'più complicato. Io uso un SurfaceTexture modo da poter utilizzare l'output della camera come una texture OpenGL. In Android 4.0 (ICS), esiste un nuovo metodo SurfaceTexture.release() . Questo metodo è importnte da utilizzare quando si utilizza SurfaceTexture s mentre pulisce la memory più velocemente di quanto in precedenza.

    Il problema è che chiamavo SurfaceTexture.release() mentre l'anteprima della camera era ancora triggers. Ciò stava schiantando il servizio della Camera , che è stato causato il problema spiegato nella domanda.

    Nel mio caso lo ho fissato ritardando la chiamata a SurfaceTexture.release() finché non l'ho sostituito con una nuova SurfaceTexture . In questo modo ero sicuro che la SurfaceTexture potrebbe essere pulita senza alcun effetto collaterale negativo.

    C'è un dispositivo Android specifico che prova questo errore? Oppure lo vedi attraverso molti dispositivi.

    In generale, non si dovrebbe vedere questo tipo di errore. È ansible che la tua applicazione abbia una sorta di condizione di gara che ne risulti, ma dovrà coinvolgere cercando di call getParameters su una videocamera non inizializzata o già rilasciata.

    Può anche essere un errore nel codice della camera specifico del dispositivo o una condizione di corsa rara da qualche parte nello stack di codice della camera. Senza ulteriori dettagli (logcat o bugreport di Android da un crash), è imansible dirlo – l'errore stesso dice semplicemente che il codice della camera specifico per il dispositivo ha restituito un insieme vuoto di parametri.

    Ma una volta che si ottiene questo errore, non c'è molto da fare – il sottosistema della camera è in qualche stato dispari. Se vuoi provare ad affrontarlo, tutto quello che posso suggerire è chiudere e riaprire il dispositivo della camera.

    gli oggetti della camera sono sempre bloccati per impostazione predefinita, quindi quando è ansible sbloccare il metodo, si consenta ad altri procceses di utilizzare i parametri in modo da assicurarsi di aver bloccato la camera prima di get parametri

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.