exoplayer를 사용하여 mp3 음악을 스트리밍하는 응용 프로그램을 만들었습니다. 알림 표시 줄 및 잠금 화면에 음악 플레이어 위젯을 추가하는 것을 제외하면 모든 것이 잘 작동합니다. 나는 많은 것을 검색하고 미디어 세션을 사용할 것을 제안하는 블로그 게시물을 발견했다. 그러나 나는이 개념에 익숙하지 않다. 누군가 exoplayer와 MediaSession을 연결하고 동일한 것을 사용하는 위젯을 만들 때 나를 도울 수 있습니까?exoplayer 용 뮤직 플레이어 위젯을 만드는 방법은 무엇입니까?
mediasession을 사용하지 않더라도 exoplayer를 사용하여 앱에서 음악 위젯을 만드는 방법을 제안하십시오. 자식 코드 또는 코드 샘플에 대한 링크가 도움이 될 것입니다.
여기 내 재생 음악 활동 코드입니다. Homeactivity에서이 메소드를 호출하고 있습니다. MediaSession
를 사용하여 안드로이드 IO 지침 사항에 따라
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);
}
}