Reputation: 75
from here i started the service
Intent intent=new Intent(getActivity(),MyService.class);
s=sn;
u=ur;
intent.putExtra("uri",u);
ServiceConnection serviceConnection=new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
MyService.LocalBinder binder = (MyService.LocalBinder) service;
myService=binder.getService();
}
@Override
public void onServiceDisconnected(ComponentName name) {
myService=null;
}
};
getActivity().startService(intent);
this is my service class
public class MyService extends android.app.Service {
MediaPlayer mediaPlayer=new MediaPlayer();
String str;
private final IBinder binder = new LocalBinder();
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// str=intent.getStringExtra("uri");
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
this.str=intent.getStringExtra("uri");
try {
mediaPlayer.setDataSource(str);
} catch (IOException e) {
e.printStackTrace();
}
if(!isplaying()){
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
startmusic();
}
});
}
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
}
public class LocalBinder extends Binder {
MyService getService() {
// Return this instance of LocalService so clients can call public methods.
return MyService.this;
}
}
@Override
public IBinder onBind(Intent intent) {
return binder;
}
public void startmusic(){
mediaPlayer.start();
}
public void stopmusic(){
mediaPlayer.stop();
}
public boolean isplaying(){
return mediaPlayer.isPlaying();
}
}
i'm getting this error
java.lang.RuntimeException: Unable to start service com.example.firebasemp.MyService@da4ba03 with Intent { cmp=com.example.firebasemp/.MyService (has extras) }: java.lang.IllegalStateException"
on this line "mediaPlayer.setDataSource(str);"
Upvotes: 1
Views: 30
Reputation: 75
i added mediaPlayer.prepare();
after mediaPlayer.setDataSource(intent.getStringExtra("uri"));
the problem is when we play audio before starting we need to prepare it first
Upvotes: 0