exoplayerを使用してmp3音楽をストリーミングするアプリケーションを作成しました。通知バーとロック画面に音楽プレーヤーウィジェットを追加する以外はすべて正常に動作しています。私は多くを検索し、メディアセッションを使用することを提案するブログ記事をいくつか見つけました。しかし、私はこのコンセプトの新しさです。誰かがMediaSessionを使ってexoplayerを接続するのを手伝ってください。同じものを使ってウィジェットを作成してください。exoplayerのための音楽プレーヤーウィジェットを作成するには?
mediasessionを使用しない場合でも、exoplayerを使用してアプリから音楽ウィジェットを作成する方法をお勧めします。 gitコードやコードサンプルへのリンクは本当に役に立ちます。
ここは私のplaymusicアクティビティコードです。これはHomeactivityのメソッドを呼び出しています。 MediaSession
は、様々なdevices.They全体に音楽をストリーミングするための最良の方法の一つである使用してアンドロイドIOのガイドラインを1として
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);
}
}