Wie man den Burst-Modus zur Kamera zur Verfügung stellt

Ich versuche, eine kleine Foto-App mit einem Burst-Modus für Kamera zu bauen. Die Hauptidee ist, alle 0,3 Sekunden ein Bild zu drehen und die Bilder in einem Array zu speichern, bis das letzte Bild aufgenommen ist. Die Anzahl der zu schießenden Bilder sollte angegeben werden.

Ich kann nur ein Bild alle 2 Sekunden schießen. Als kürzestes Intervall. Dann, wenn die Bilder in die Speicherung geschrieben werden sollen, kratzt die Anwendung.

  • Absicht URI, um Gmail App zu starten
  • Was bedeutet diese Google Play APK veröffentlichen Fehlermeldung?
  • Android Studio: Fehler: /android-studio/gradle/gradle-2.4/lib/plugins/gradle-diagnostics-2.4.jar (keine solche Datei oder ein Verzeichnis)
  • Gibt es eine Möglichkeit, ein Standardbild in picasso zu laden
  • Android requestFocusFromTouch bringt das Menü mit dem ersten Element hervor
  • Android Facebook SDK 4.0 Login ohne Facebook App
  • Weiß jemand, wie man das implementiert? Hier ist mein Code:

    import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.PixelFormat; import android.hardware.Camera; import android.os.Bundle; import android.util.Log; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.view.View.OnClickListener; public class CamaeaView extends Activity implements SurfaceHolder.Callback, OnClickListener { static final int FOTO_MODE = 1; private static final String TAG = "Test"; Camera mCamera; boolean mPreviewRunning = false; private Context mContext = this; ArrayList<Object> listImage = null; public static ArrayList<Object> List1[]; public void onCreate(Bundle icicle) { super.onCreate(icicle); Log.e(TAG, "onCreate"); @SuppressWarnings("unused") Bundle extras = getIntent().getExtras(); getWindow().setFormat(PixelFormat.TRANSLUCENT); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.main); mSurfaceView = (SurfaceView) findViewById(R.id.surface_camera); mSurfaceView.setOnClickListener(this); mSurfaceHolder = mSurfaceView.getHolder(); mSurfaceHolder.addCallback(this); mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); } Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() { public void onPictureTaken(byte[] imageData, Camera c) { Log.d("Start: ","Imagelist"); Intent mIntent = new Intent(); listImage.add(StoreByteImage(imageData)); SaveImage(listImage); mCamera.startPreview(); setResult(FOTO_MODE, mIntent); finish(); } }; protected void onResume() { Log.d(TAG, "onResume"); super.onResume(); } protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); } protected void onStop() { Log.e(TAG, "onStop"); super.onStop(); } public void surfaceCreated(SurfaceHolder holder) { Log.d(TAG, "surfaceCreated"); mCamera = Camera.open(); } public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { Log.d(TAG, "surfaceChanged"); // XXX stopPreview() will crash if preview is not running if (mPreviewRunning) { mCamera.stopPreview(); } Camera.Parameters p = mCamera.getParameters(); p.setPreviewSize(w, h); p.setPictureSize(1024, 768); p.getSupportedPictureFormats(); p.setPictureFormat(PixelFormat.JPEG); mCamera.setParameters(p); try { mCamera.setPreviewDisplay(holder); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } mCamera.startPreview(); mPreviewRunning = true; } public void surfaceDestroyed(SurfaceHolder holder) { Log.e(TAG, "surfaceDestroyed"); mCamera.stopPreview(); mPreviewRunning = false; mCamera.release(); } private SurfaceView mSurfaceView; private SurfaceHolder mSurfaceHolder; public void onClick(View arg0) { int i = 0; while (i < 4) { mCamera.takePicture(null, mPictureCallback, mPictureCallback); i = i + 1; try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static Object StoreByteImage(byte[] imageData) { Object obj = null; try { ByteArrayInputStream bis = new ByteArrayInputStream(imageData); ObjectInputStream objImageData = new ObjectInputStream(bis); obj = objImageData.readObject(); } catch (IOException ex) { // TODO: Handle the exception } catch (ClassNotFoundException ex) { // TODO: Handle the exception } return obj; } public static Object createImagesArray(byte[] imageData) { Object obj = null; try { ByteArrayInputStream bis = new ByteArrayInputStream(imageData); ObjectInputStream objImageData = new ObjectInputStream(bis); obj = objImageData.readObject(); } catch (IOException ex) { // TODO: Handle the exception } catch (ClassNotFoundException ex) { // TODO: Handle the exception } return obj; } public static boolean SaveImage(List<Object> listImage) { FileOutputStream outStream = null; Log.d("ListSize: ", Integer.toString(listImage.size())); Iterator<Object> itList = listImage.iterator(); byte[] imageBytes = null; while (itList.hasNext()) { ByteArrayOutputStream bos = new ByteArrayOutputStream(); try { ObjectOutputStream oos = new ObjectOutputStream(bos); oos.writeObject(listImage); oos.flush(); oos.close(); bos.close(); imageBytes = bos.toByteArray(); } catch (IOException ex) { // TODO: Handle the exception } try { // Write to SD Card outStream = new FileOutputStream(String.format( "/sdcard/DCIM/%d.jpg", System.currentTimeMillis())); // <9> outStream.write(imageBytes); outStream.close(); } catch (FileNotFoundException e) { // <10> e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { } } Log.d(TAG, "onPictureTaken - jpeg"); return true; } } 

    Fehler aus den Kommentaren:

     ERROR/MemoryHeapBase(1382): error opening /dev/pmem_camera: No such file or directory ERROR/QualcommCameraHardware(1382): failed to construct master heap for pmem pool /dev/pmem_camera ERROR/QualcommCameraHardware(1382): initRaw X failed with pmem_camera, trying with pmem_adsp 

  • Ändern Sie das Markersymbol während der Laufzeit
  • Gestenerkennung In Android
  • ASP.NET Web API soziale Authentifizierung für Web und Mobile
  • Android - erstellen Listenansicht vollständig aus xml
  • JAVAH kann keine Klasse finden (android ndk)
  • Klasse 0 SMS (Flash SMS) auf Android
  • 2 Solutions collect form web for “Wie man den Burst-Modus zur Kamera zur Verfügung stellt”

    AFAIK, du kannst kein anderes Bild machen, bis das erste fertig ist. Eliminiere deine for loop und Thread.sleep() . Nimm das nächste Bild in mPictureCallback .

    Die Hauptidee ist, alle 0,3 Sekunden ein Bild zu drehen und die Bilder in einem Array zu speichern, bis das letzte Bild aufgenommen ist.

    Das Ziel "0,3sec" ist schneller als die meisten Geräte können ein Bild verarbeiten, und Sie haben möglicherweise nicht genug Haufen Platz für Ihre Reihe von Bildern. Ich vermute, dass du jedes Bild auf die Festplatte schreiben AsyncTask , da es über eine AsyncTask , also kannst du den Haufenraum AsyncTask und dabei auch den AsyncTask nicht anbinden.

    Sie können versuchen, nachfolgende Vorschaubilder in vorab zugewiesenen Byte-Arrays zu erfassen. Siehe folgende Methoden:

    http://developer.android.com/reference/android/hardware/Camera.html#addCallbackBuffer (Byte []) http://developer.android.com/reference/android/hardware/Camera.html#setPreviewCallbackWithBuffer(android. Hardware.Camera.PreviewCallback)

    … oder http://developer.android.com/reference/android/hardware/Camera.html#setOneShotPreviewCallback(android.hardware.Camera.PreviewCallback) für eine bessere Kontrolle über das Timing.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.