Ho un'app per Android classica con anteprima della fotocamera (un'implementazione comune che può essere trovata in molti tutorial [marakana ecc.] Che dovrebbe scattare foto in un dato intervallo di tempo. Thread di thread e uccisione è fatto, errori come "method called after release"
vengono gestiti. Ma a volte si verifica l'errore noto 100
. Ho accettato il fatto che ciò accada e ho cercato di gestirlo anche io. Ho implementato ErrorCallback
e il suo metodo onError
in cui l'attuale oggetto della fotocamera è stato rilasciato e istanziato uno nuovo come scritto nella documentazione ufficiale.ricreare l'oggetto della fotocamera dopo l'errore 100 (il server della videocamera è morto)
Ma (senza sorpresa) non è abbastanza. La nuova fotocamera è forse assegnata in modo errato perché ora viene visualizzato un messaggio "CameraDemo has been exited unexpectedly"
. Ho letto molti documenti ed esempi nella speranza, che un procedimento appropriato sarà spiegato da qualche parte ma nessuno ha questo problema apparentemente. Quindi vorrei chiedere che altro dovrei fare oltre al rilascio e alla creazione di una nuova fotocamera? Ecco il codice:
ErrorCallback CEC = new ErrorCallback()
{
public void onError(int error, Camera camera)
{
Log.d("CameraDemo", "camera error detected");
if(error == Camera.CAMERA_ERROR_SERVER_DIED)
{
Log.d("CameraDemo", "attempting to reinstantiate new camera");
camera.stopPreview();
camera.setPreviewCallback(null);
camera.release(); //written in documentation...
camera = null;
camera = Camera.open();
}
}
};
Poco - se rilasciare e ricreare fotocamera in onError
richiamata poi RuntimeException
Metodo chiamato dopo il rilascio (takePicture) è sollevata. Quindi dovrei in qualche modo assegnare nuovamente il supporto per la superficie alla fotocamera o ricreare anche il supporto per la superficie?
Sarebbe sufficiente indirizzarmi ad es. ad alcuni forum, dove è descritto o risolto, ecc. Grazie per qualsiasi aiuto.
Avete trovato una soluzione? Si prega di condividere – Gena