Reputation: 293
I have a song within my application that I would like to be able to control via a Media Controller, I have the code which I believe would be accurate representaion of how to do this, however I get 2 errors within my code, I will give details bellow, could anyone please help me.
Error 1: The method setMediaPlayer(MediaController.MediaPlayerControl) in the type MediaController is not applicable for the arguments (MediaPlayer)
Error 2: The method setMediaController(MediaController) is undefined for the type MediaPlayer
The code I have so far:
MediaPlayer Song;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN );
setContentView(R.layout.billy);
Song = MediaPlayer.create(BillyConnoly.this, R.raw.clip_1);
MediaController mc = new MediaController(this);
mc.setMediaPlayer(Song);
Song.setMediaController(mc);
}
Upvotes: 0
Views: 1408
Reputation: 1098
Thomas, I'll try to explain the link here.
First, you need to define your player, controller, and handler fields:
private MediaPlayer mediaPlayer;
private MediaController mediaController;
private Handler handler = new Handler();
Next, you need to instantiate all of your appropriate objects (as you have done), as well as register an OnPreparedListener:
mediaPlayer = new MediaPlayer();
mediaPlayer.setOnPreparedListener(this);
mediaController = new MediaController(this);
Then, you prepare and start the mediaPlayer:
try {
mediaPlayer.setDataSource(audioFile);
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) {
Log.e(TAG, "Could not open file " + audioFile + " for playback.", e);
}
When the mediaPlayer is prepared, the controller will be set:
public void onPrepared(MediaPlayer mediaPlayer) {
Log.d(TAG, "onPrepared");
mediaController.setMediaPlayer(this);
handler.post(new Runnable() {
public void run() {
mediaController.setEnabled(true);
mediaController.show();
}
});
}
Does it make more sense now?
EDIT: This is how you would play a file from the res/raw folder:
int resID=getResources().getIdentifier("filename", "raw", getPackageName());
MediaPlayer mediaPlayer=MediaPlayer.create(this,resID);
Upvotes: 1