I have made an application that uses exoplayer to stream mp3 music. Everything is working fine except adding a music player widget to notification bar and lock screen. I have searched a lot and found some blog posts suggesting to use media session. But I am new to this concept. Could someone Please help me with connecting exoplayer with MediaSession and also creating a widget using the same.
Even if not using mediasession please suggest how to create music widget from app using exoplayer. Links to git codes or code samples would be really helpful.
Here is my playmusic activity code, i am calling the methods in this from Homeactivity.
public class PlayMusic {
private static SimpleExoPlayer mp;
private static Handler mainHandler;
private static RenderersFactory renderersFactory;
private static BandwidthMeter bandwidthMeter;
private static LoadControl loadControl;
private static DataSource.Factory dataSourceFactory;
private static ExtractorsFactory extractorsFactory;
private static MediaSource mediaSource;
private static TrackSelection.Factory trackSelectionFactory;
private static TrackSelector trackSelector;
private AudioManager audioManager;
private static final int BUFFER_SEGMENT_SIZE = 128 * 1024;
private static final int BUFFER_SEGMENT_COUNT = 1024;
public static final String channel_url = "http://ibadat.out.airtime.pro:8000/ibadat_a";
public static void preparePlayingSound(Context con, String url) {
renderersFactory = new DefaultRenderersFactory(con);
bandwidthMeter = new DefaultBandwidthMeter();
trackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter);
trackSelector = new DefaultTrackSelector(trackSelectionFactory);
loadControl = new DefaultLoadControl();
mp = ExoPlayerFactory.newSimpleInstance(renderersFactory, trackSelector, loadControl);
dataSourceFactory = new DefaultDataSourceFactory(con, "ExoplayerDemo");
extractorsFactory = new DefaultExtractorsFactory();
mainHandler = new Handler();
mediaSource = new ExtractorMediaSource(Uri.parse(url),
dataSourceFactory,
extractorsFactory,
mainHandler,
null);
mp.prepare(mediaSource);
}
public static void startPlayingSound(Context con) {
if (mp != null && mp.getPlayWhenReady())
{
} else {
mp.setPlayWhenReady(true);
mp.setVolume(1f);
}
}
//and to stop it use this method below
public static boolean checkStatus(Context con) {
Boolean flag = false;
if (mp != null && mp.getPlayWhenReady()) {
flag = true;
} else {
flag = false;
}
return flag;
}
public static void stopPlayingSound(Context con) {
if (mp != null && mp.getPlayWhenReady()) {
mp.stop();
mp.release();
mp = null;
} else {
}
}
public static void setVolume(Context context,Float volume)
{
mp.setVolume(volume);
}
}