Android Camera ohne Preview (Service)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Android Camera ohne Preview (Service)

    Hallo ich habe diese Klasse geschrieben um im Hintergrund Videos aufzuzeichen.

    Java-Quellcode

    1. public class VideoRecorder{
    2. private Camera camera = null;
    3. private MediaRecorder mediaRecorder = null;
    4. public void onDestroy()
    5. {
    6. //MUST CALLED ON DESTROY
    7. resetRecorder();
    8. }
    9. public void start()
    10. {
    11. setupMediaRecorder();
    12. mediaRecorder.start();
    13. }
    14. public void setupMediaRecorder()
    15. {
    16. try {
    17. mediaRecorder = new MediaRecorder();
    18. camera = Camera.open();
    19. } catch (Exception e) {
    20. e.printStackTrace();
    21. }
    22. camera.unlock();
    23. //------------------------------------------------------------------//
    24. // set Preview Display() //
    25. //------------------------------------------------------------------//
    26. mediaRecorder.setCamera(camera);
    27. mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
    28. mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    29. //SETTINGS
    30. mediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
    31. mediaRecorder.setOrientationHint(90);
    32. //SETTINGS
    33. File file = new File(Environment.getExternalStorageDirectory()+"/Video/");
    34. if(!file.exists())
    35. file.mkdirs();
    36. mediaRecorder.setOutputFile(Environment.getExternalStorageDirectory() + "/Video/Video " + DateFormat.format("yyyy-MM-dd_kk-mm-ss", new Date().getTime()) + ".mp4");
    37. try {
    38. mediaRecorder.prepare();
    39. } catch (IOException e) {
    40. e.printStackTrace();
    41. }
    42. }
    43. public void stop()
    44. {
    45. try {
    46. mediaRecorder.stop();
    47. }catch (Exception e)
    48. {
    49. e.printStackTrace();
    50. }
    51. resetRecorder();
    52. }
    53. private void resetRecorder()
    54. {
    55. //RESET RECORDER AFTER RECORDING
    56. mediaRecorder.reset();
    57. mediaRecorder.release();
    58. camera.release();
    59. }
    60. }
    Alles anzeigen
    Diese Klasse wird dann von einem Service der im Hintergrund läuft aufgerufen start(),stop() .Ich weiß allerdings nicht wie man in so einer Klasse einen SurfaceView bzw Surfaceholder kriegen kann?Vielen Dank schonmal :)
  • Das habe ich auch mal versucht. Mit der Lösung von Vlad unter stackoverflow.com/questions/23…om-camera-without-preview habe ich eine funktionierende Lösung gefunden.

    Quellcode

    1. WindowManager wm = (WindowManager) mCtx.getSystemService(Context.WINDOW_SERVICE);
    2. params = new WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT,WindowManager.LayoutParams.WRAP_CONTENT,WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,PixelFormat.TRANSLUCENT);
    3. wm.addView(surfaceview, params);
    4. surfaceview.setZOrderOnTop(true);
    5. mHolder.setFormat(PixelFormat.TRANSPARENT);