Vista di superficie della camera Android

Sto cercando di creare una vista di superficie per una camera in modo da renderlo in superficie each volta che si trova nella vista della camera. Al momento tutto quello che posso vedere sulla mia macchina fotografica è una vista a schermo nero. Ho cercato di guardare su Google e qui, ma finora non ho trovato quello che sto cercando. Chiunque può suggerire qualche idea.

  • Qual è il modo migliore per call StartPreview () dopo l'acquisizione di un'image?
  • Perché questo errore è avvenuto? java.lang.RuntimeException: ImageLoader deve essere init con la configuration prima di utilizzare
  • Utilizzo di VideoView per lo streaming o il progressivo download di video
  • Imansible inserire correttamente caratteri greci nel database mysql
  • Come posso albind un file di image in posta elettronica?
  • utilizzando il dialer Android in app di terza parte
  • Android onActivityResult non chiamato / triggersto
  • Griglia esagonale Android
  • Firebase di Google controlla se il figlio esiste
  • Variabile dell'ambiente in settings.gradle che non funziona con Android Studio
  • Voglio cambiare il volume di ringertonevolume
  • L'accesso a Facebook non funziona in alcuni dispositivi
  • 2 Solutions collect form web for “Vista di superficie della camera Android”

    Ho scritto una class che ti può aiutare.

    public class Preview_can_work extends Activity { private SurfaceView surface_view; private Camera mCamera; SurfaceHolder.Callback sh_ob = null; SurfaceHolder surface_holder = null; SurfaceHolder.Callback sh_callback = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFormat(PixelFormat.TRANSLUCENT); surface_view = new SurfaceView(getApplicationContext()); addContentView(surface_view, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); if (surface_holder == null) { surface_holder = surface_view.getHolder(); } sh_callback = my_callback(); surface_holder.addCallback(sh_callback); } SurfaceHolder.Callback my_callback() { SurfaceHolder.Callback ob1 = new SurfaceHolder.Callback() { @Override public void surfaceDestroyed(SurfaceHolder holder) { mCamera.stopPreview(); mCamera.release(); mCamera = null; } @Override public void surfaceCreated(SurfaceHolder holder) { mCamera = Camera.open(); try { mCamera.setPreviewDisplay(holder); } catch (IOException exception) { mCamera.release(); mCamera = null; } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { mCamera.startPreview(); } }; return ob1; } } 

    nel tuo file manifesto copia questo codice per l'authorization della camera

     <uses-permission android:name="android.permission.CAMERA"/> 

    Spiegazione:

    SurfaceView è un tipo di vista che contiene un SurfaceHolder. SurfaceHolder detiene la superficie su cui possiamo visualizzare i nostri media (generalmente frame).

    mCamera è un object Camera che contiene l'istanza della camera.

    Quando si desidera mantenere l'istanza Camera predefinita, è sufficiente call Camera.open ();

    Fotocamera mCamera = Camera.open ();

    Ora hai una camera aperta o hai un'istanza della videocamera di default. Ora è necessario catturare i fotogrammi dalla camera e visualizzarla su una superficie. Ma non è ansible visualizzarlo senza alcuna

    superficie. Qui surfaceView fornisce il supporto di superficie e la superficie di supporto fornisce la superficie per visualizzare i telecamere. Ora, quando verrà creata una superficie, saranno tre funzioni di richiamata

    chiamato.

     1. public void surfaceCreated(SurfaceHolder holder) 2. public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) 3. public void surfaceDestroyed(SurfaceHolder holder) 

    Nota: – La superficie verrà distrutta quando la tua applicazione continuerà in pausa.

    surfaceCreated: surfaceCreated è una function di richiamata che verrà chiamata quando verrà creata la superficie. In questo modo è ansible aprire la camera e impostare altri attributi.

    surfaceChanged: questo sarà chiamato atleast una volta che la tua superficie verrà creata. Dopo di che verrà chiamato each volta che la superficie cambierà (nella rotazione del dispositivo). Qui si può

    inizia la tua anteprima perché la tua superficie ha già creato.

    surfaceDestroyed: questo sarà chiamato each volta che la tua superficie distruggerà. Ora se non hai superficie allora where puoi visualizzare le fotocamere in modo da liberare la camera usando

    mCamera.release (). Questo è molto importnte perché se la tua attività sarà in pausa e qualsiasi altra attività cerca di aprire la camera, allora non sarà in grado di aprirla come hai

    camera già aperta. La camera è una risorsa condivisa in modo che una sola applicazione possa utilizzarlo. Quindi ricorda una cosa each volta che apri una macchina fotografica e poi rilasciala.

    stopPreview: quando si avvia l'anteprima, la camera inizia a catturare i fotogrammi e visualizzarla su una superficie. Ora, se la tua superficie è stata distrutta, devi interrompere la cattura di fotogrammi

    dalla camera quindi devi call mCamera.stopPreview.

    Assicurati di aver aggiunto l'authorization:

    <uses-permission android:name="android.permission.CAMERA"/>

    Anche queste properties; di window:

     getWindow().setFormat(PixelFormat.TRANSLUCENT); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

    Inserisci un codice se questo non funziona per aiutarti

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