アプリには、デバイスでデフォルトのメディア プレーヤーを起動し、オーディオ ファイル (ポッドキャスト) を再生する 2 つの領域があります。1 つはダウンロード後にファイル システムから取得し、もう 1 つはサイト上のファイルからストリーミングします。
これは現在正常に動作しています。問題は、メディア プレーヤーを起動した後にアプリに戻ろうとして戻るかホームに戻ると、プレーヤーが閉じて再生が停止することです。
アプリに戻ったときに音楽がプレーヤーで再生され続けるように、バックグラウンドまたはサービスとして起動する方法はありますか。音楽プレーヤーから曲を開始したかのように機能させたいです。したがって、ユーザーはデバイスを通常どおり使用でき、再生は続行されます。
ストリーミング用の音楽プレーヤーを起動するコードは次のとおりです。
private void playPodcast( Podcast podcast ) {
Intent intent = new Intent( Intent.ACTION_VIEW );
intent.setDataAndType( Uri.parse( podcast.getContentLink() ), "audio/*" );
startActivity( intent );
}
前もって感謝します。
編集! 以下のアドバイスを受けて、サービスとして立ち上げてみました。私はこれを2つの方法で試しました。
どちらの方法でも、マニフェスト エントリとして次のようになります。
<service android:name=".DefaultMusicPlayerLaunchService">
</service>
最初の試みは、単なるスケルトンである Service クラスを作成し、上記と同様の方法で起動することでした。
DefaultMusicPlayerLaunchService V1:
public class DefaultMusicPlayerLaunchService extends Service {
@Override
public IBinder onBind( Intent intent ) {
// TODO Auto-generated method stub
return null;
}
public int onStartCommand( Intent intent, int flags, int startId ) {
return START_STICKY;
}
}
playPodcast メソッド:
private void playPodcast( Podcast podcast ) {
Intent intent = new Intent( getApplicationContext(),
DefaultMusicPlayerLaunchService.class );
intent.setDataAndType( Uri.parse( podcast.getContentLink() ), "audio/*" );
startService( intent );
}
私の考えでは、この方法では、以前のアクティビティと同様に音楽プレーヤーを起動しますが、画面を離れることなく起動します。LogCat で何も起きていません。これはうまくいくはずですが、何かが欠けています。
私が試みたもう 1 つの方法は、ポッドキャスト オブジェクトをエキストラとしてシリアルIntent
化し、DefaultMusicPlayerLaunchService
. 次に、onStartCommand
メソッドでオブジェクトを取得し、新しいオブジェクトを作成してから、上部の元のメソッドと同様にIntent
呼び出しました。そして予想通り、それは一番上のものと同じことをします...プレーヤーを起動しますが、私が戻ったり家に帰ったりするとすぐに閉じます。startActivity
playPodcast
明らかな何かが欠けている場合はお詫び申し上げます。私は Android を初めて使用し、これまでに使用したものはすべてActivity
. これは、を開始する最初の試みService
です。