Reputation: 2340
I want my program continuously play a particular audio clip without any starting delay for that i've created a program but it is not working as i mensioned so someone please help me to solve this
code
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity implements OnClickListener {
LocalService mService;
boolean mBound = false;
Button btn1;
Button btn2;
MediaPlayer yourStereo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1=(Button)findViewById(R.id.a_button);
btn2=(Button)findViewById(R.id.b_button);
btn1.setOnClickListener(this);
}
@Override
public void onClick(View arg0) {
// play music here
btn1.setVisibility(Button.GONE);
btn2.setVisibility(Button.VISIBLE);
// TODO Auto-generated method stub
yourStereo = MediaPlayer.create(this, R.raw.pl);
yourStereo.start();
yourStereo.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
yourStereo.start();
}
});
// pause music here
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
yourStereo.stop();
btn2.setVisibility(Button.GONE);
btn1.setVisibility(Button.VISIBLE);
}
});
}
}
Upvotes: 3
Views: 3764
Reputation: 4257
I found other solution:
afd = assetManager.openFd(nameSound);
player.setDataSource(afd.getFileDescriptor(),
afd.getStartOffset(), afd.getLength() - 1000);
afd.close();
player.prepare();
player.setLooping(true);
player.start();
You only need to define the duration 1000(0.1ms) less instead that the total duration.
Upvotes: 0
Reputation: 3695
Use SoundPool for low-latency media playback, instead of MediaPlayer.
Upvotes: 1
Reputation: 23269
Just setLooping(true)
on the MediaPlayer instead of playing it again onCompletion
.
http://developer.android.com/reference/android/media/MediaPlayer.html#setLooping(boolean)
Sets the player to be looping or non-looping.
With looping on it'll repeat indefinitely by itself without breaks, you don't have to worry about handling it yourself.
yourStereo = MediaPlayer.create(this, R.raw.pl);
yourStereo.setLooping(true);
yourStereo.start();
Upvotes: 2