Nagrywanie filmu Sceneform SceneViews

W tym przewodniku dla deweloperów opisujemy, jak włączyć w swojej aplikacji nagrywanie sceny SceneView do lokalnego pliku wideo. Korzysta z funkcji dostępnych w klasie VideoRecorder, która jest dostępna w ramach próbki VideoRecording Sample w wersji 1.6.0 pakietu SDK Sceneform na Androida.

Tworzenie i uruchamianie przykładowej aplikacji

Aby utworzyć i uruchomić aplikację VideoRecording Sample:

  1. Upewnij się, że masz projekt Sceneform w Android Studio i że Twoje urządzenie z Androidem było połączone z urządzeniem programistycznym przez USB. Szczegółowe instrukcje znajdziesz w krótkim wprowadzeniu.
  2. Zaimportuj próbkę nagrań wideo do projektu.
  3. W Android Studio kliknij Uruchom . Następnie wybierz urządzenie jako miejsce docelowe wdrożenia i kliknij OK, aby uruchomić przykładową aplikację na swoim urządzeniu.
  4. Podczas przenoszenia urządzenia i umieszczania obiektów 3D w otoczeniu kliknij przycisk nagrywania, aby rozpocząć nagrywanie, a potem przycisk Zatrzymaj, aby zatrzymać nagrywanie.

Nagrany film będzie dostępny za pomocą rolki z aparatu na urządzeniu, w albumie ze zdjęciami Sceneform lub na ścieżce:

/sdcard/Pictures/Sceneform/Sample<hex characters>.mp4

Omówienie włączania obsługi aplikacji do nagrywania filmów Sceneform

Aby aplikacja mogła nagrywać sceny, potrzebne są:

  1. Prośba o uprawnienia aplikacji
  2. Inicjuję nagrywanie
  3. Rozpoczynanie i zatrzymywanie nagrywania wideo

1. Poproś o uprawnienia aplikacji

Aby zapisać plik wideo w pamięci lokalnej, musisz poprosić o uprawnienie WRITE_EXTERNAL_STORAGE, dodając ten wiersz do AndroidManifest.xml:

<application>
  …
</application>

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

2. Inicjowanie nagrywarki wideo

Przykładowy film wideo zawiera klasę o nazwie VideoRecorder, która obejmuje logikę ustawień potrzebną do użycia klatki z obiektu MediaRecorder w celu utworzenia filmu z użyciem obiektu SceneView.

Aby skorzystać z rejestratora wideo, zainicjuj w swojej aktywności klasę VideoRecorder, na przykład onCreate().

// Create a new video recorder instance.
videoRecorder = new VideoRecorder();

// Specify the AR scene view to be recorded.
videoRecorder.setSceneView(arFragment.getArSceneView());

// Set video quality and recording orientation to match that of the device.
int orientation = getResources().getConfiguration().orientation;
videoRecorder.setVideoQuality(CamcorderProfile.QUALITY_2160P, orientation);

3. Nagraj film

  1. Aby rozpocząć nagrywanie, zadzwoń do onToggleRecord():

       // Returns true if recording has started.
       boolean recording = videoRecorder.onToggleRecord();
    
  2. Aby zatrzymać nagrywanie, drugi raz zadzwoń do:onToggleRecord()

       // Returns false if recording has stopped.
       boolean recording = videoRecorder.onToggleRecord();
    
  3. Aby pobrać ścieżkę pliku z nagraniem wideo, użyj polecenia getVideoPath():

       // Determine absolute file path of video recording.
       String videoPath = videoRecorder.getVideoPath().getAbsolutePath();
    
  4. Opcjonalnie skopiuj nagrany plik na komputer używany do programowania, używając narzędzia adb:

adb pull /sdcard/…/path/to/recorded/video.mp4 .

Aby określić prawidłową lokalizację obrazów i filmów, które wyświetlają się prawidłowo w rolce z aparatu, klasa VideoRecord używa wartości Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).