Play a sound
package app.test;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class PlayActivity extends Activity implements MediaPlayer.OnCompletionListener {
Button mPlay;
MediaPlayer mPlayer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPlay = new Button(this);
mPlay.setText("Play Sound");
mPlay.setOnClickListener(playListener);
setContentView(R.layout.main);
}
@Override
public void onDestroy() {
super.onDestroy();
if(mPlayer != null) {
mPlayer.release();
}
}
private View.OnClickListener playListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mPlayer == null) {
try {
mPlayer = MediaPlayer.create(PlayActivity.this, R.raw.sound);
mPlayer.start();
} catch (Exception e) {
e.printStackTrace();
}
} else {
mPlayer.stop();
mPlayer.release();
mPlayer = null;
}
}
};
@Override
public void onCompletion(MediaPlayer mp) {
mPlayer.release();
mPlayer = null;
}
}
//PlayerActivity.java
package app.test;
import android.app.Activity;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.view.MotionEvent;
import android.widget.ImageView;
import android.widget.MediaController;
public class PlayerActivity extends Activity implements MediaController.MediaPlayerControl, MediaPlayer.OnBufferingUpdateListener {
MediaController mController;
MediaPlayer mPlayer;
ImageView coverImage;
int bufferPercent = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
coverImage = (ImageView)findViewById(R.id.coverImage);
mController = new MediaController(this);
mController.setAnchorView(findViewById(R.id.root));
}
@Override
public void onResume() {
super.onResume();
mPlayer = new MediaPlayer();
try {
mPlayer.setDataSource(this, Uri.parse("http://asdf.org/a.mp3"));
mPlayer.prepare();
} catch (Exception e) {
e.printStackTrace();
}
coverImage.setImageResource(R.drawable.icon);
mController.setMediaPlayer(this);
mController.setEnabled(true);
}
@Override
public void onPause() {
super.onPause();
mPlayer.release();
mPlayer = null;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
mController.show();
return super.onTouchEvent(event);
}
@Override
public int getBufferPercentage() {
return bufferPercent;
}
@Override
public int getCurrentPosition() {
return mPlayer.getCurrentPosition();
}
@Override
public int getDuration() {
return mPlayer.getDuration();
}
@Override
public boolean isPlaying() {
return mPlayer.isPlaying();
}
@Override
public void pause() {
mPlayer.pause();
}
@Override
public void seekTo(int pos) {
mPlayer.seekTo(pos);
}
@Override
public void start() {
mPlayer.start();
}
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
bufferPercent = percent;
}
public boolean canPause() {
return true;
}
public boolean canSeekBackward() {
return true;
}
public boolean canSeekForward() {
return true;
}
}
//RedirectTracerTask.java
package app.test;
import java.net.HttpURLConnection;
import java.net.URL;
import android.net.Uri;
import android.os.AsyncTask;
import android.widget.VideoView;
public class RedirectTracerTask extends AsyncTask<Uri, Void, Uri> {
private VideoView mVideo;
private Uri initialUri;
public RedirectTracerTask(VideoView video) {
super();
mVideo = video;
}
@Override
protected Uri doInBackground(Uri... params) {
initialUri = params[0];
String redirected = null;
try {
URL url = new URL(initialUri.toString());
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
redirected = connection.getHeaderField("Location");
return Uri.parse(redirected);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Override
protected void onPostExecute(Uri result) {
if(result != null) {
mVideo.setVideoURI(result);
} else {
mVideo.setVideoURI(initialUri);
}
}
}
//VideoActivity.java
package app.test;
import java.io.File;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.widget.MediaController;
import android.widget.VideoView;
public class VideoActivity extends Activity {
VideoView videoView;
MediaController controller;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
videoView = new VideoView(this);
videoView.setVideoURI( Uri.fromFile(new File(Environment.getExternalStorageDirectory(),"MysticHigh.mp4")) );
controller = new MediaController(this);
videoView.setMediaController(controller);
videoView.start();
setContentView(videoView);
}
@Override
public void onDestroy() {
super.onDestroy();
videoView.stopPlayback();
}
}
//main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Now Playing..."
/>
<ImageView
android:id="@+id/coverImage"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="centerInside"
/>
</LinearLayout>
Related examples in the same category