Autore Topic: SurfaceView e thread  (Letto 491 volte)

Offline Fullydroid

  • Nuovo arrivato
  • *
  • Post: 34
  • Respect: +1
    • Mostra profilo
SurfaceView e thread
« il: 16 Settembre 2014, 14:21:54 CEST »
0
Ciao a tutti ragazzi!
sto cercando di implementare un thread con le callback   public void surfaceChanged,surfaceCreated(SurfaceHolder holder), public void surfaceDestroyed(SurfaceHolder holder) in modo tale da poter gestire la surface come il pannello della fotocamera. Fin qui nulla di complicato, la surfaceview con la fotocamera funziona perfettamente.

Il problema si pone quando viene chiamato il metodo onResume(), l'activity crasha perchè giustamente mi dice che è gia attivo il thread...
a questo punto, come posso fare?
Codice: [Seleziona]
class CameraHelpThread extends Thread implements SurfaceHolder.Callback,Camera.AutoFocusCallback{
  public Handler mHandler;
      public volatile boolean ReadyToShoot = false;
      public volatile boolean stop = false;
      public CameraHelpThread() {
         // TODO Auto-generated constructor stub
         surfaceHolder = pre_Photo.getHolder(); // recupero l'holder della
         // surfaceview
         surfaceHolder.addCallback(this); // faccio la bind alla nostra activity
         to_makePhoto.setEnabled(true); // lo abilito solo quando è a fuoco
      }


      public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {...... codice per preparare la camera...}

      public void surfaceCreated(SurfaceHolder holder) {
         /** Invocato all'apertura della camera. **/
         camera = Camera.open();

      }


  @Override
      public void surfaceDestroyed(SurfaceHolder holder) {
       // METODO MAI CHIAMATO,PERCHè??

         /** Chiusura camera. **/
         camera.stopPreview();
         holder.removeCallback(this);
         mPreviewRunning = false;
         // Rilascio risorse.
         camera.release();

      }

}


Le mie domande sono quindi:
Perchè il metodo surfaceDestroy non è mai chiamato?
Come gestisco il metodo nel mainActivity onResume() , onPause()?

Sto impazzendo ragazzi!

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:SurfaceView e thread
« Risposta #1 il: 16 Settembre 2014, 14:52:25 CEST »
0
Guarda lo storico esempio ufficiale LunarLander, sono solo due file (l'activity e la view), c'è proprio il tuo caso.

https://gitorious.org/freebroid/development/source/3eda8fc3859c243df4a1f892a11e2da84b49cb94:samples/LunarLander/src/com/example/android/lunarlander
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store