Chcesz zbudować aplikację, która utrzymuje nagrywanie w tle, czy to możliwe?Otwórz/uruchom kamerę z usługi w tle w Androidzie
Odpowiedz
Tak, bardzo możliwe.
Utwórz działanie, które uruchomi usługę tła w przypadku niektórych zdarzeń lub możesz użyć menedżera alarmów, aby uruchomić i zatrzymać usługę zgodnie z wymaganiami.
Sprawdź kod, który rozpocznie się & zatrzymać nagrywanie za pomocą kamery, to można zadzwonić z usług w tle i będzie działać sprawnie.
public boolean starMediaRecording(){
Camera.Parameters params = mServiceCamera.getParameters();
mServiceCamera.setParameters(params);
Camera.Parameters p = mServiceCamera.getParameters();
final List<Size> listSize = p.getSupportedPreviewSizes();
Size mPreviewSize = listSize.get(2);
p.setPreviewSize(mPreviewSize.width, mPreviewSize.height);
p.setPreviewFormat(PixelFormat.YCbCr_420_SP);
mServiceCamera.setParameters(p);
try {
mServiceCamera.setPreviewDisplay(mSurfaceHolder);
mServiceCamera.startPreview();
}
catch (IOException e) {
Log.e(TAG, e.getMessage());
e.printStackTrace();
}
mServiceCamera.unlock();
mMediaRecorder = new MediaRecorder();
mMediaRecorder.setCamera(mServiceCamera);
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
mMediaRecorder.setOutputFile("/sdcard/filenamevideo.mp4");
mMediaRecorder.setVideoFrameRate(30);
mMediaRecorder.setVideoSize(mPreviewSize.width, mPreviewSize.height);
mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());
mMediaRecorder.prepare();
mMediaRecorder.start();
mRecordingStatus = true;
return true;
}
public void stopMediaRecorder() {
mServiceCamera.reconnect();
mMediaRecorder.stop();
mMediaRecorder.reset();
mServiceCamera.stopPreview();
mMediaRecorder.release();
mServiceCamera.release();
mServiceCamera = null;
}
}
To jest przykładowy kod, należy dodać własną logikę i obsługiwać również wyjątki.
dzięki za szybką odpowiedź. Próbowałem tego i działało po drobnych zmianach. – DraD
co to jest mSurfaceHolder w twoim przykładzie? Jeśli używam pustego, dostaję błąd na jakimś urządzeniu i nie mogę go dostać, jeśli korzystam tylko z usługi –
Ten kod działa poprawnie na Androidzie 2.3.3 HTC Desire, ale nagrywanie w tle kończy się niepowodzeniem w Galaxy S3 i Nexus 4. Jakieś pomysły? – Sergii
- 1. Jak wyświetlić powiadomienie z usługi w tle?
- 2. Aparat z Androidem - działa w tle z usługi
- 3. Zadania w tle w Androidzie do synchronizacji z usługą sieciową
- 4. jak uruchomić aplikację w tle w Androidzie?
- 5. Wykonywanie działań w tle
- 6. Jak utrzymać działanie usługi w tle
- 7. Uruchamianie usługi w tle po włączeniu Androida
- 8. Uruchom odbiornik GPS w tle na Androidzie
- 9. Uruchamianie JavaScript w ramach usługi w Androidzie
- 10. Uwierzytelnianie witryny Sharepoint z usługi w tle i przesyłanie pliku
- 11. Korzystanie z usług Google Play LocationClient w tle usługi
- 12. Usługa muzyki w tle Android
- 13. Próbka usługi kopiowania woluminów w tle (VSS) w języku C?
- 14. Zatrzymywanie usługi uruchomionej w tle (phantomjs) w gitlab-ci
- 15. Jak zwolnić kamerę po zakończeniu aktywności na Androidzie?
- 16. Uzyskaj listę uruchomionych procesów i zabij ich usługi w tle
- 17. Cichy Google Zaloguj się w tle usługi Android
- 18. Dźwięk w tle z cocoalibspotify
- 19. Jak symulować dotyk z usługi w tle za pomocą sendevent lub w inny sposób?
- 20. Zapisywanie rozpoczętych działań w Androidzie
- 21. Korzystanie z usługi kopiowania woluminów w tle (VSS) z .NET - najlepsza dostępna metoda/projekt?
- 22. W jaki sposób można zaimplementować kamerę FPS?
- 23. Jak mogę przetestować kamerę w symulatorze iPhone'a?
- 24. Otwórz kamerę wewnątrz fragmentu
- 25. Retrofit zwraca błąd 307, wywołanie usługi internetowej w Androidzie
- 26. Licznik czasu w tle
- 27. Prześlij dane ArrayList do usługi sieciowej SOAP w Androidzie
- 28. Rozmycie z iOS 7 w Androidzie
- 29. Najlepsza architektura dla długotrwałej usługi na Androidzie
- 30. Jak zaimplementować kamerę internetową i kamerę mobilną na Meteoru
cóż, nie jestem tego pewien, ale wiem, że możesz używać metody nagrywania w metodzie onPause(), więc gdy jesteś w tle, będziesz nagrywał. i przy okazji co próbowaliście? – k0sh
myślisz, że to możliwe i czy zrobiłeś to samo, jeśli inna aplikacja lub domyślna aplikacja kamery prosi o aparat? czy pokaże aparat, który jest już w użyciu? czy to nie szpiegowanie nie jest dobrym nawykiem? –