During my research in the possibilities of playing audio and video from app, I found several ways of playing media.
The simplest one is to use external player. It was described in the post “Android: how to play audio and video from app“.
Here are some examples how to play media in app.
import android.app.Activity; import android.media.MediaPlayer; import android.os.Bundle; import android.os.Handler; import android.util.Log; import android.media.MediaPlayer.OnPreparedListener; import android.view.MotionEvent; import android.widget.MediaController; import android.widget.TextView; import java.io.IOException; public class AudioPlayer extends Activity implements OnPreparedListener, MediaController.MediaPlayerControl{ private static final String TAG = "AudioPlayer"; public static final String AUDIO_FILE_NAME = "audioFileName"; private MediaPlayer mediaPlayer; private MediaController mediaController; private String audioFile; private Handler handler = new Handler(); public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.audio_player); audioFile = this.getIntent().getStringExtra(AUDIO_FILE_NAME); ((TextView)findViewById(R.id.now_playing_text)).setText(audioFile); mediaPlayer = new MediaPlayer(); mediaPlayer.setOnPreparedListener(this); mediaController = new MediaController(this); try { mediaPlayer.setDataSource(audioFile); mediaPlayer.prepare(); mediaPlayer.start(); } catch (IOException e) { Log.e(TAG, "Could not open file " + audioFile + " for playback.", e); } } @Override protected void onStop() { super.onStop(); mediaPlayer.stop(); mediaPlayer.release(); } @Override public boolean onTouchEvent(MotionEvent event) { //the MediaController will hide after 3 seconds - tap the screen to make it appear again mediaController.show(); return false; } //--MediaPlayerControl methods---------------------------------------------------- public void start() { mediaPlayer.start(); } public void pause() { mediaPlayer.pause(); } public int getDuration() { return mediaPlayer.getDuration(); } public int getCurrentPosition() { return mediaPlayer.getCurrentPosition(); } public void seekTo(int i) { mediaPlayer.seekTo(i); } public boolean isPlaying() { return mediaPlayer.isPlaying(); } public int getBufferPercentage() { return 0; } public boolean canPause() { return true; } public boolean canSeekBackward() { return true; } public boolean canSeekForward() { return true; } //-------------------------------------------------------------------------------- public void onPrepared(MediaPlayer mediaPlayer) { Log.d(TAG, "onPrepared"); mediaController.setMediaPlayer(this); mediaController.setAnchorView(findViewById(R.id.main_audio_view)); handler.post(new Runnable() { public void run() { mediaController.setEnabled(true); mediaController.show(); } }); } }
Then you need to add xml layout file audio_player.xml
Video can be played in the following Activity:
import android.app.Activity; import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.media.MediaPlayer.OnPreparedListener; import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import android.widget.MediaController; import android.widget.VideoView; public class VideoPlayer extends Activity implements OnPreparedListener{ protected VideoView mine; protected boolean done = false; public static final String AUDIO_FILE_NAME = "audioFileName"; public static final String DEBUG_TAG = "videoPlay"; private MediaController mediaController; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.video_player); mine = (VideoView) findViewById(R.id.VideoView); // Save the VideoView for touch event processing mediaController = new MediaController(this); try { String myURI = this.getIntent().getStringExtra(AUDIO_FILE_NAME); Uri video = Uri.parse(myURI); mine.setVideoURI(video); mine.setMediaController(mediaController); mine.start(); mine.setOnCompletionListener(new OnCompletionListener() { public void onCompletion(MediaPlayer mp) { //result.putExtra("com.ejf.convincer01.Finished", true); Log.d(DEBUG_TAG, "Video finished" ); done = true; } }); } catch (Exception ex) { Log.d(DEBUG_TAG, "Video failed: '" + ex + "'" ); } } @Override public boolean onTouchEvent(MotionEvent event) { //the MediaController will hide after 3 seconds - tap the screen to make it appear again mediaController.show(); return false; } @Override public void onPrepared(MediaPlayer mediaPlayer) { } }
Layout video_player.xml