DashCam - Video im Hintergrund aufnehmen mit Camera2 API

  • Antworten:8
  • Bentwortet
Bali
  • Forum-Beiträge: 7

16.12.2016, 21:45:47 via Website

Hallo,

ich bin noch recht frisch dabei mit der Android-Programmierung und versuche mich gerade an einer DashCam-App mit der Camera2 API.
Ich habe versucht, den Beispielcode von Google (github.com/googlesamples/android-Camera2Video) zu modifizieren und teile in eine Service-Klasse zu verschieben, um die Videoaufnahme im Hintergrund weiterlaufen und nur die Preview pausieren zu lassen wenn der User zu einer anderen App oder zum Home-Bildschirm wechselt.

Kann mir jemand mal nen Beispielcode für die Activity- und Service-Klasse posten, wie man sowas lösen kann?
Bei Google und Github habe ich leider nichts entsprechendes gefunden.

Besten Dank im Voraus.

Bali

Antworten
swa00
  • Forum-Beiträge: 3.704

17.12.2016, 08:02:14 via Website

Hallo Bali,

Vorab : hast du dich im Vorfeld auch mit den Eigenschaften von LifeCycle insbesondere mit der Laufzeit
von Services auseinander gesetzt ?
Das wird nämlich nicht so gehen, wie du das vorhast, denn eine Kontinuierliche Recordloop wirst du
im Hintergrund nicht hinbekommen - es sei den die App ist immer im Vordergrund und immer Aktiv (auch Bildschirm)
Auch nicht bei Foreground Services.

Grundsätzlich : Android verwaltet sich selbst - du musst bei deinem Konzept immer vom Gedankengut einer normalen Linux/Windows-Büchse abrücken.

Ergo : irgendwann macht dir Android zu und schiesst dir (für das System) irrelevante Tasks ab

Du kannst allerdings versuchen , den Service als Process auszulagern, dann müsste es eine weile laufen.
Dann würde ich ggf. versuchen mit dem AlarmManager zu arbeiten und damit einen Jojo Process zu starten.
Du hast halt dann Lücken in deiner Loop. Abgesehen davon , dass du dem Device ziemlich viel zumutetest (CPU)

Aus diesem Grunde findest du auch nichts im Netz, denn sowas auf einem Android device laufen zu lassen ,
ist eher kontraproduktiv und es ist auch nicht dazu gedacht.

Ansonsten hat sich hier schon einer mal erfolglos versucht - ist aber auch an den oben genannten Punkten gescheitert
http://stackoverflow.com/questions/10121660/how-to-record-video-from-background-of-application-android
Achtung : Der Beitrag ist ein wenig veraltet - dein Problem wird ab 5.x wahrscheinlich grösser werden

Kann mir jemand mal nen Beispielcode für die Activity- und Service-Klasse posten, wie man sowas lösen kann?

http://www.vogella.com/tutorials/AndroidServices/article.html

Viel Erfolg

— geändert am 17.12.2016, 08:40:55

Liebe Grüße - Stefan
[ App - Entwicklung ]

Pascal P.

Antworten
Bali
  • Forum-Beiträge: 7

21.12.2016, 21:00:19 via Website

Hi Pascal,

danke für deine umfassende Antwort.
Hab mich sehr intensiv mit selbiger beschäfigt.

Ich habe hier (github.com/chatea/ServiceCamera) ein funktionierendes Beispiel gefunden - wenn auch mit der überholten (ersten) camera API.
Das einzige, was mir jetzt noch fehlt, ist eine Camera-Preview.

Gibt es eine Möglichkeit, eine solche in der Activity laufen zu lassen und auch wieder on Resume weiter laufen zu lassen, ohne die in der Service-Klasse laufende Aufnahme zu beeinträchtigen?
Die ein oder andere Dash-Cam-App, die ich im Playstore gefunden habe, scheint das ja fertig zu bringen.

— geändert am 21.12.2016, 21:01:25

Antworten
swa00
  • Forum-Beiträge: 3.704

21.12.2016, 21:32:35 via Website

Hallo Bali

Hi Pascal,
danke für deine umfassende Antwort.

also Pascal hat sich nur für meinen Beitrag bedankt - aber sehen wir mal grosszügig darüber hinweg :-)

Gibt es eine Möglichkeit, eine solche in der Activity laufen zu lassen und auch wieder on Resume weiter laufen zu lassen, ohne die in der Service-Klasse laufende Aufnahme zu beeinträchtigen?

Das kann ich dir leider nicht auf Anhieb beantworten , da ich so gut wie gar keine Erfahrung mit dem Preview der Camera habe.
Vielleicht hat da jemand Anderes etwas Fundamentales dazu beizutragen ....

Aber ich denke, du hast für dich schneller die Lösung gefunden , als hier zu warten :-)

lg Stefan :-)

— geändert am 21.12.2016, 21:47:00

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Bali
  • Forum-Beiträge: 7

21.12.2016, 21:39:50 via Website

Hallo Stefan,

sorry für die Sache mit dem Namen. (silly)
Dann nochmal expliziten Dank an DICH. (angel)

Na dann hoffe ich mal auf die Expertise des Forums und arbeite mich parallel durch weitere Code-Beispiele.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

22.12.2016, 13:48:45 via Website

Hallo Bali,
Hast du dir das schon mal angeschaut?
http://stackoverflow.com/questions/10121660/how-to-record-video-from-background-of-application-android
Du musst nur aufpassen dass dir Android den Service nicht abschießt.
Am besten per AlarmManager etc. zyklisch prüfen obs noch läuf (wenn es laufen soll und ggf. wieder starten)

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
swa00
  • Forum-Beiträge: 3.704

22.12.2016, 15:04:34 via Website

den link hatte ich ihm auch schon rausgesucht :-) ..... (s.o)

— geändert am 22.12.2016, 15:08:50

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

22.12.2016, 15:11:13 via Website

Oh sorry, hab ich schon wieder vergessen....

LG ;)

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Bali
  • Forum-Beiträge: 7

03.01.2017, 00:51:20 via Website

Ein frohes neues Jahr!

So, jetzt hab ich eine funktionierende Lösung.
Ich hab es jetzt tatsächlich komplett mit dem Windowmanager gelöst.
Ist mit Sicherheit nicht sonderlich elegant, aber läuft.
Vielen Dank für eure Hilfe!

Antworten