Using BackgroundAudioServiceBinder : Audio « Media « Android






Using BackgroundAudioServiceBinder

   

package app.test;

import android.app.Activity;
import android.app.Service;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Binder;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

class BackgroundAudioService extends Service implements OnCompletionListener {
  MediaPlayer mediaPlayer;

  public class BackgroundAudioServiceBinder extends Binder {
    BackgroundAudioService getService() {
      return BackgroundAudioService.this;
    }
  }

  private final IBinder basBinder = new BackgroundAudioServiceBinder();

  @Override
  public IBinder onBind(Intent intent) {
    return basBinder;
  }

  public void haveFun() {
    if (mediaPlayer.isPlaying()) {
      mediaPlayer.seekTo(mediaPlayer.getCurrentPosition() - 2500);
    }
  }

  @Override
  public void onCreate() {
    mediaPlayer = MediaPlayer.create(this, R.raw.test);// raw/test.mp3
    mediaPlayer.setOnCompletionListener(this);
  }

  @Override
  public int onStartCommand(Intent intent, int flags, int startId) {
    Log.v("PLAYERSERVICE", "onStartCommand");

    if (!mediaPlayer.isPlaying()) {
      mediaPlayer.start();
    }
    return START_STICKY;
  }

  public void onDestroy() {
    if (mediaPlayer.isPlaying()) {
      mediaPlayer.stop();
    }
    mediaPlayer.release();
    Log.v("SIMPLESERVICE", "onDestroy");
  }

  public void onCompletion(MediaPlayer _mediaPlayer) {
    stopSelf();
  }
}

public class Test extends Activity implements OnClickListener {
  private BackgroundAudioService baService;
  Button startPlaybackButton, stopPlaybackButton, haveFunButton;
  Intent playbackServiceIntent;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    startPlaybackButton = (Button) this
        .findViewById(R.id.StartPlaybackButton);
    stopPlaybackButton = (Button) this
        .findViewById(R.id.StopPlaybackButton);
    haveFunButton = (Button) this.findViewById(R.id.HaveFunButton);

    startPlaybackButton.setOnClickListener(this);
    stopPlaybackButton.setOnClickListener(this);
    haveFunButton.setOnClickListener(this);

    playbackServiceIntent = new Intent(this, BackgroundAudioService.class);
  }

  public void onClick(View v) {
    if (v == startPlaybackButton) {
      startService(playbackServiceIntent);
      bindService(playbackServiceIntent, serviceConnection,
          Context.BIND_AUTO_CREATE);
    } else if (v == stopPlaybackButton) {
      unbindService(serviceConnection);
      stopService(playbackServiceIntent);
    } else if (v == haveFunButton) {
      baService.haveFun();
    }
  }

  private ServiceConnection serviceConnection = new ServiceConnection() {

    public void onServiceConnected(ComponentName className, IBinder baBinder) {
      baService = ((BackgroundAudioService.BackgroundAudioServiceBinder) baBinder)
          .getService();
    }

    public void onServiceDisconnected(ComponentName className) {
      baService = null;
    }
  };
}


//main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="Background Audio Player"
        />
   <Button android:text="Start Playback" android:id="@+id/StartPlaybackButton" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
   <Button android:text="Stop Playback" android:id="@+id/StopPlaybackButton" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
   <Button android:text="Have Fun" android:id="@+id/HaveFunButton" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>

   
    
    
  








Related examples in the same category

1.Record audio to 3gpp file
2.Audio Recording
3.Audio recoding and call back
4.Custom Audio Recorder
5.Set Audio source and format
6.Audio processing library
7.Audio Synthesis
8.Audio Synthesis 440 Hz
9.Audio Files Filter
10.Recording Audio
11.AudioClip
12.Random Media Player