Android Open Source - AudioPlayerRecorder Audio Recorder Fragment






From Project

Back to project page AudioPlayerRecorder.

License

The source code is released under:

MIT License

If you think the Android project AudioPlayerRecorder listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.heavyplayer.audioplayerrecorder.fragment;
//from ww w.  j a  v  a 2s  .c o  m
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.net.Uri;
import android.os.Bundle;
import android.os.IBinder;
import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;

import com.heavyplayer.audioplayerrecorder.R;
import com.heavyplayer.audioplayerrecorder.service.AudioRecorderService;
import com.heavyplayer.audioplayerrecorder.service.manager.AudioRecorderServiceManager;
import com.heavyplayer.audioplayerrecorder.service.manager.ServiceManager;
import com.heavyplayer.audioplayerrecorder.widget.AudioRecorderMicrophone;

public class AudioRecorderFragment extends DialogFragment
    implements View.OnClickListener, ServiceManager.StateListener, AudioRecorderService.AudioRecorderStateListener {
  private static final String ARG_FILE_URI = "arg_file_uri";

  private AudioRecorderServiceManager mAudioRecorderServiceManager;

  private Uri mFileUri;

  private boolean mStartRecorderOnBind;

  public static AudioRecorderFragment newInstance(Uri fileUri) {
    return newInstance(new AudioRecorderFragment(), fileUri);
  }
  protected static <T extends AudioRecorderFragment> T newInstance(T fragment, Uri fileUri) {
    final Bundle args = new Bundle();
    args.putParcelable(ARG_FILE_URI, fileUri);

    fragment.setArguments(args);

    return fragment;
  }

  @Override
  public void onAttach(Activity activity) {
    super.onAttach(activity);

    mAudioRecorderServiceManager = new AudioRecorderServiceManager(activity);
    mAudioRecorderServiceManager.setServiceStateListener(this);
  }

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mStartRecorderOnBind = savedInstanceState == null;
  }

  @Override
  public void onResume() {
    super.onResume();
    mAudioRecorderServiceManager.onFragmentResume();
  }

  @Override
  public void onPause() {
    super.onPause();
    mAudioRecorderServiceManager.onFragmentPause();
  }

  public Dialog onCreateDialog(Bundle savedInstanceState) {
    final Activity activity = getActivity();

    final View view = LayoutInflater.from(activity).inflate(R.layout.audio_recorder, null);

    return new AlertDialog.Builder(activity)
        .setTitle(R.string.audio_recorder_recording)
        .setView(view)
        .setPositiveButton(R.string.audio_recorder_stop_recording, null)
        .create();
  }

  public Uri getFileUri() {
    if(mFileUri == null)
      mFileUri = getArguments().getParcelable(ARG_FILE_URI);
    return mFileUri;
  }

  @Override
  final public void onClick(View v) {
    final AudioRecorderService.LocalBinder binder = mAudioRecorderServiceManager.getBinder();
    final boolean isRecording = binder != null && binder.isRecording();
    onMicrophoneClick(v, isRecording);
  }

  protected void onMicrophoneClick(View v, boolean isRecording) {
    final AudioRecorderService.LocalBinder binder = mAudioRecorderServiceManager.getBinder();
    if(binder != null) {
      if(binder.isRecording())
        binder.stopRecorder();
      else
        binder.startRecorder(getFileUri());
    }
  }

  @Override
  public void onServiceBind(IBinder binder) {
    registerOnAudioRecorderService((AudioRecorderService.LocalBinder)binder);

    if(mStartRecorderOnBind) {
      mStartRecorderOnBind = false;
      ((AudioRecorderService.LocalBinder)binder).startRecorder(getFileUri());
    }
  }

  @Override
  public void onServiceUnbind(IBinder binder) { }

  protected void registerOnAudioRecorderService(AudioRecorderService.LocalBinder binder) {
    final AudioRecorderMicrophone microphone =
        (AudioRecorderMicrophone)getDialog().findViewById(android.R.id.input);
    if(microphone != null)
      microphone.setOnClickListener(this);

    binder.register(microphone, this);
  }

  @Override
  public void onServiceStop() {
    // Purposely empty.
  }

  @Override
  public void onStartRecorder() {
    Activity activity = getActivity();
    if(activity != null)
      activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
  }

  @Override
  public void onStartRecorderFailed(Exception e) {
    // Purposely empty.
  }

  @Override
  public void onStopRecorder() {
    Activity activity = getActivity();
    if(activity != null)
      activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
  }

  @Override
  public void onTimeLimitExceeded() {
    // Purposely empty.
  }
}




Java Source Code List

com.heavyplayer.audioplayerrecorder.fragment.AudioRecorderFragment.java
com.heavyplayer.audioplayerrecorder.sample.activity.PlayerActivity.java
com.heavyplayer.audioplayerrecorder.sample.activity.RecorderActivity.java
com.heavyplayer.audioplayerrecorder.sample.obj.Item.java
com.heavyplayer.audioplayerrecorder.service.AudioPlayerService.java
com.heavyplayer.audioplayerrecorder.service.AudioRecorderService.java
com.heavyplayer.audioplayerrecorder.service.manager.AudioPlayerServiceManager.java
com.heavyplayer.audioplayerrecorder.service.manager.AudioRecorderServiceManager.java
com.heavyplayer.audioplayerrecorder.service.manager.ServiceManager.java
com.heavyplayer.audioplayerrecorder.util.AudioPlayerHandler.java
com.heavyplayer.audioplayerrecorder.util.BuildUtils.java
com.heavyplayer.audioplayerrecorder.util.SafeMediaPlayer.java
com.heavyplayer.audioplayerrecorder.utils.AudioUtils.java
com.heavyplayer.audioplayerrecorder.widget.AudioPlayerLayout.java
com.heavyplayer.audioplayerrecorder.widget.AudioRecorderMicrophone.java
com.heavyplayer.audioplayerrecorder.widget.PlayPauseImageButton.java
com.heavyplayer.audioplayerrecorder.widget.interface_.OnDetachListener.java