test_class.declarator: mediaPlayer = mock(MediaPlayer.class)
test_class.modifier: private final
test_class.original_string: private final MediaPlayer mediaPlayer = mock(MediaPlayer.class);
test_class.type: MediaPlayer
test_class.var_name: mediaPlayer
test_class.declarator: fakeScheduler = new FakeScheduler()
test_class.modifier: private final
test_class.original_string: private final FakeScheduler fakeScheduler = new FakeScheduler();
test_class.type: FakeScheduler
test_class.var_name: fakeScheduler
test_class.declarator: liveDataTester = new LiveDataTester()
test_class.modifier: private final
test_class.original_string: private final LiveDataTester liveDataTester = new LiveDataTester();
test_class.type: LiveDataTester
test_class.var_name: liveDataTester
test_class.declarator: viewModel
test_class.modifier: private
test_class.original_string: private AudioPlayerViewModel viewModel;
test_class.type: AudioPlayerViewModel
test_class.var_name: viewModel
test_class.file: collect_app/src/test/java/org/odk/collect/android/audio/AudioPlayerViewModelTest.java
test_class.identifier: AudioPlayerViewModelTest
test_case.body: @Test
      public void onCleared_releasesMediaPlayer() {
          viewModel.onCleared();
          verify(mediaPlayer).release();
      }
test_case.class_method_signature: AudioPlayerViewModelTest.onCleared_releasesMediaPlayer()
test_case.full_signature: @Test public void onCleared_releasesMediaPlayer()
test_case.identifier: onCleared_releasesMediaPlayer
test_case.invocations: onCleared release verify
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void onCleared_releasesMediaPlayer()
focal_class.declarator: mediaPlayerFactory
focal_class.modifier: private final
focal_class.original_string: private final MediaPlayerFactory mediaPlayerFactory;
focal_class.type: MediaPlayerFactory
focal_class.var_name: mediaPlayerFactory
focal_class.declarator: scheduler
focal_class.modifier: private final
focal_class.original_string: private final Scheduler scheduler;
focal_class.type: Scheduler
focal_class.var_name: scheduler
focal_class.declarator: mediaPlayer
focal_class.modifier: private
focal_class.original_string: private MediaPlayer mediaPlayer;
focal_class.type: MediaPlayer
focal_class.var_name: mediaPlayer
focal_class.declarator: currentlyPlaying = new MutableLiveData<>()
focal_class.modifier: private final
focal_class.original_string: private final MutableLiveData<CurrentlyPlaying> currentlyPlaying = new MutableLiveData<>();
focal_class.type: MutableLiveData<CurrentlyPlaying>
focal_class.var_name: currentlyPlaying
focal_class.declarator: error = new MutableLiveData<>()
focal_class.modifier: private final
focal_class.original_string: private final MutableLiveData<Exception> error = new MutableLiveData<>();
focal_class.type: MutableLiveData<Exception>
focal_class.var_name: error
focal_class.declarator: positions = new HashMap<>()
focal_class.modifier: private final
focal_class.original_string: private final Map<String, MutableLiveData<Integer>> positions = new HashMap<>();
focal_class.type: Map<String, MutableLiveData<Integer>>
focal_class.var_name: positions
focal_class.declarator: scheduledDurationUpdates = false
focal_class.modifier: private
focal_class.original_string: private Boolean scheduledDurationUpdates = false;
focal_class.type: Boolean
focal_class.var_name: scheduledDurationUpdates
focal_class.file: collect_app/src/main/java/org/odk/collect/android/audio/AudioPlayerViewModel.java
focal_class.identifier: AudioPlayerViewModel
focal_class.interfaces: implements MediaPlayer.OnCompletionListener
focal_class.class_method_signature: AudioPlayerViewModel.AudioPlayerViewModel(MediaPlayerFactory mediaPlayerFactory, Scheduler scheduler)
focal_class.full_signature:   AudioPlayerViewModel(MediaPlayerFactory mediaPlayerFactory, Scheduler scheduler)
focal_class.identifier: AudioPlayerViewModel
focal_class.parameters: (MediaPlayerFactory mediaPlayerFactory, Scheduler scheduler)
focal_class.signature:  AudioPlayerViewModel(MediaPlayerFactory mediaPlayerFactory, Scheduler scheduler)
focal_class.class_method_signature: AudioPlayerViewModel.play(Clip clip)
focal_class.full_signature: public void play(Clip clip)
focal_class.identifier: play
focal_class.modifiers: public
focal_class.parameters: (Clip clip)
focal_class.return: void
focal_class.signature: void play(Clip clip)
focal_class.class_method_signature: AudioPlayerViewModel.playInOrder(List<Clip> clips)
focal_class.full_signature: public void playInOrder(List<Clip> clips)
focal_class.identifier: playInOrder
focal_class.modifiers: public
focal_class.parameters: (List<Clip> clips)
focal_class.return: void
focal_class.signature: void playInOrder(List<Clip> clips)
focal_class.class_method_signature: AudioPlayerViewModel.stop()
focal_class.full_signature: public void stop()
focal_class.identifier: stop
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void stop()
focal_class.class_method_signature: AudioPlayerViewModel.pause()
focal_class.full_signature: public void pause()
focal_class.identifier: pause
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void pause()
focal_class.class_method_signature: AudioPlayerViewModel.isPlaying(@NonNull String clipID)
focal_class.full_signature: public LiveData<Boolean> isPlaying(@NonNull String clipID)
focal_class.identifier: isPlaying
focal_class.modifiers: public
focal_class.parameters: (@NonNull String clipID)
focal_class.return: LiveData<Boolean>
focal_class.signature: LiveData<Boolean> isPlaying(@NonNull String clipID)
focal_class.class_method_signature: AudioPlayerViewModel.getPosition(String clipID)
focal_class.full_signature: public LiveData<Integer> getPosition(String clipID)
focal_class.identifier: getPosition
focal_class.modifiers: public
focal_class.parameters: (String clipID)
focal_class.return: LiveData<Integer>
focal_class.signature: LiveData<Integer> getPosition(String clipID)
focal_class.class_method_signature: AudioPlayerViewModel.setPosition(String clipID, Integer newPosition)
focal_class.full_signature: public void setPosition(String clipID, Integer newPosition)
focal_class.identifier: setPosition
focal_class.modifiers: public
focal_class.parameters: (String clipID, Integer newPosition)
focal_class.return: void
focal_class.signature: void setPosition(String clipID, Integer newPosition)
focal_class.class_method_signature: AudioPlayerViewModel.background()
focal_class.full_signature: public void background()
focal_class.identifier: background
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void background()
focal_class.class_method_signature: AudioPlayerViewModel.onCleared()
focal_class.full_signature: @Override protected void onCleared()
focal_class.identifier: onCleared
focal_class.modifiers: @Override protected
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void onCleared()
focal_class.class_method_signature: AudioPlayerViewModel.playNext(Queue<Clip> playlist)
focal_class.full_signature: private void playNext(Queue<Clip> playlist)
focal_class.identifier: playNext
focal_class.modifiers: private
focal_class.parameters: (Queue<Clip> playlist)
focal_class.return: void
focal_class.signature: void playNext(Queue<Clip> playlist)
focal_class.class_method_signature: AudioPlayerViewModel.getExceptionMsg(String uri)
focal_class.full_signature: private int getExceptionMsg(String uri)
focal_class.identifier: getExceptionMsg
focal_class.modifiers: private
focal_class.parameters: (String uri)
focal_class.return: int
focal_class.signature: int getExceptionMsg(String uri)
focal_class.class_method_signature: AudioPlayerViewModel.onCompletion(MediaPlayer mediaPlayer)
focal_class.full_signature: @Override public void onCompletion(MediaPlayer mediaPlayer)
focal_class.identifier: onCompletion
focal_class.modifiers: @Override public
focal_class.parameters: (MediaPlayer mediaPlayer)
focal_class.return: void
focal_class.signature: void onCompletion(MediaPlayer mediaPlayer)
focal_class.class_method_signature: AudioPlayerViewModel.cleanUpAfterClip()
focal_class.full_signature: private CurrentlyPlaying cleanUpAfterClip()
focal_class.identifier: cleanUpAfterClip
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: CurrentlyPlaying
focal_class.signature: CurrentlyPlaying cleanUpAfterClip()
focal_class.class_method_signature: AudioPlayerViewModel.getPositionForClip(String clipID)
focal_class.full_signature: @NonNull private MutableLiveData<Integer> getPositionForClip(String clipID)
focal_class.identifier: getPositionForClip
focal_class.modifiers: @NonNull private
focal_class.parameters: (String clipID)
focal_class.return: MutableLiveData<Integer>
focal_class.signature: MutableLiveData<Integer> getPositionForClip(String clipID)
focal_class.class_method_signature: AudioPlayerViewModel.getError()
focal_class.full_signature: public LiveData<Exception> getError()
focal_class.identifier: getError
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: LiveData<Exception>
focal_class.signature: LiveData<Exception> getError()
focal_class.class_method_signature: AudioPlayerViewModel.dismissError()
focal_class.full_signature: public void dismissError()
focal_class.identifier: dismissError
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void dismissError()
focal_class.class_method_signature: AudioPlayerViewModel.schedulePositionUpdates()
focal_class.full_signature: private void schedulePositionUpdates()
focal_class.identifier: schedulePositionUpdates
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void schedulePositionUpdates()
focal_class.class_method_signature: AudioPlayerViewModel.cancelPositionUpdates()
focal_class.full_signature: private void cancelPositionUpdates()
focal_class.identifier: cancelPositionUpdates
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void cancelPositionUpdates()
focal_class.class_method_signature: AudioPlayerViewModel.releaseMediaPlayer()
focal_class.full_signature: private void releaseMediaPlayer()
focal_class.identifier: releaseMediaPlayer
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void releaseMediaPlayer()
focal_class.class_method_signature: AudioPlayerViewModel.getMediaPlayer()
focal_class.full_signature: private MediaPlayer getMediaPlayer()
focal_class.identifier: getMediaPlayer
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: MediaPlayer
focal_class.signature: MediaPlayer getMediaPlayer()
focal_class.class_method_signature: AudioPlayerViewModel.isCurrentPlayingClip(String clipID, CurrentlyPlaying currentlyPlayingValue)
focal_class.full_signature: private boolean isCurrentPlayingClip(String clipID, CurrentlyPlaying currentlyPlayingValue)
focal_class.identifier: isCurrentPlayingClip
focal_class.modifiers: private
focal_class.parameters: (String clipID, CurrentlyPlaying currentlyPlayingValue)
focal_class.return: boolean
focal_class.signature: boolean isCurrentPlayingClip(String clipID, CurrentlyPlaying currentlyPlayingValue)
focal_class.class_method_signature: AudioPlayerViewModel.loadNewClip(String uri)
focal_class.full_signature: private void loadNewClip(String uri)
focal_class.identifier: loadNewClip
focal_class.modifiers: private
focal_class.parameters: (String uri)
focal_class.return: void
focal_class.signature: void loadNewClip(String uri)
focal_class.superclass: extends ViewModel
focal_method.body: @Override
      protected void onCleared() {
          background();
      }
focal_method.class_method_signature: AudioPlayerViewModel.onCleared()
focal_method.full_signature: @Override protected void onCleared()
focal_method.identifier: onCleared
focal_method.invocations: background
focal_method.modifiers: @Override protected
focal_method.parameters: ()
focal_method.return: void
focal_method.signature: void onCleared()