package com.google.mcommerce.sample.android.chapter10.mediaplay;
import android.app.Activity;
import android.content.res.AssetFileDescriptor;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.net.Uri;
import android.os.Bundle;
import android.os.PowerManager;
import android.util.Log;
import android.view.View;
import com.google.mcommerce.sample.android.R;
public class MediaDemoActivity extends Activity implements OnPreparedListener {
static final String AUDIO_PATH =
// "mms://enmms.chinabroadcast.cn/fm91.5";
"http://streaming103.radionomy.com:80/Radio-Mozart";
// "rtsp://64.202.98.91:554/sa.sdp"; // http://somafm.com/secretagent/
// "http://www.androidbook.com/akc/filestorage/android/documentfiles/3389/play.mp3";
// Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC)
// + "/music_file.mp3";
// Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES)
// + "/movie.mp4";
private static final String TAG = "MediaDemo";
private MediaPlayer mediaPlayer;
private int playbackPosition = 0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.c10_media_demo);
}
public void doClick(View view) {
switch (view.getId()) {
case R.id.startPlayerBtn:
try {
// Only have one of these play methods uncommented
playAudio(AUDIO_PATH);
// playLocalAudio();
// playLocalAudio_UsingDescriptor();
} catch (Exception e) {
e.printStackTrace();
}
break;
case R.id.pausePlayerBtn:
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
playbackPosition = mediaPlayer.getCurrentPosition();
mediaPlayer.pause();
}
break;
case R.id.restartPlayerBtn:
if (mediaPlayer != null && !mediaPlayer.isPlaying()) {
mediaPlayer.seekTo(playbackPosition);
mediaPlayer.start();
}
break;
case R.id.stopPlayerBtn:
if (mediaPlayer != null) {
mediaPlayer.stop();
playbackPosition = 0;
}
break;
}
}
private void playAudio(String url) throws Exception {
killMediaPlayer();
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(this, Uri.parse(url));
mediaPlayer.setOnPreparedListener(this);
mediaPlayer.setWakeMode(this, PowerManager.PARTIAL_WAKE_LOCK);
mediaPlayer.prepareAsync();
}
private void playLocalAudio() throws Exception {
// mediaPlayer = MediaPlayer.create(this,Uri.parse(url));
mediaPlayer = MediaPlayer.create(this, R.raw.music_file);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.start();
}
private void playLocalAudio_UsingDescriptor() throws Exception {
AssetFileDescriptor fileDesc = getResources().openRawResourceFd(
R.raw.music_file);
if (fileDesc != null) {
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(fileDesc.getFileDescriptor(),
fileDesc.getStartOffset(), fileDesc.getLength());
fileDesc.close();
mediaPlayer.prepare();
mediaPlayer.start();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
killMediaPlayer();
}
private void killMediaPlayer() {
if (mediaPlayer != null) {
try {
mediaPlayer.release();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void onPrepared(MediaPlayer mp) {
Log.d(TAG, "MediaPlayer is prepared");
mp.start();
}
}