2017-07-19 13 views
0

私はMediaPlayerServiceを持っています。現在、ListViewアイテムの再生/一時停止ボタンがクリックされると起動します。私は再生/停止ボタンで通知を作成する上で、このサービスは、コードによって開始されるとANDROID - サービス開始時のメディアコントロール付き通知の作成

Intent intent = new Intent(v.getContext(),MediaPlayerService.class); 
intent.putExtra("StreamLink",audio); 
activity.startService(intent); 

:(CustomListAdapter)以下のコードを参照してください。ユーザーはアプリから出て、メディア再生を停止できるようにする必要があります。 player.stop()を呼び出し、player.start()を起動します。また、通知がクリックされると、ユーザーはMainActivityに戻ります。私MediaPlayerService.javaため

コード:

public class MediaPlayerService extends Service implements MediaPlayer.OnPreparedListener { 

MediaPlayer mMediaPlayer = null; 
public String audioStreamLink; 

public int onStartCommand(Intent intent, int flags, int startId) { 

    // Get the Audio Streaming Link from the parsed JSON in the Main Activity 
    audioStreamLink = intent.getStringExtra("StreamLink"); 

    // Instantiate MediaPlayer, set the Audio Type and acquire a wakelock, set the Media Player Data Source and Prepare. 
    mMediaPlayer = new MediaPlayer(); 
    mMediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK); 
    mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
    try { 
     mMediaPlayer.setDataSource(audioStreamLink); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    mMediaPlayer.setOnPreparedListener(this); 
    mMediaPlayer.prepareAsync(); 

    return START_STICKY; 

} 

@Nullable 
@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

/** Called when MediaPlayer is ready */ 
@Override 
public void onPrepared(MediaPlayer player) { 
    player.start(); 
} 

@Override 
public void onDestroy() { 
    mMediaPlayer.stop(); 
    mMediaPlayer.reset(); 
    if (mMediaPlayer != null) mMediaPlayer.release(); 

} 
} 

答えて

0

通知を得るためのプロセスは完全に、see thisは、例えば、文書にそこに記載されています。

  • あなたは典型的な音楽プレーヤーサービスはstartForeground()
  • を使用して通知を開始する NotificationCompat.Builder
  • を使用してカスタム通知を作成する必要があります。あなたはこれらのポイントであるすべてのこの巨大なドキュメントを経る支援するため

  • 通知にクリック可能なボタンを追加するには、通知を作成するときにaddAction()を使用します。それはそれに応じることになるとの通知で
  • アクションはPendingIntentIntent通常のその種類によって定義されています。
  • 通知のボタンをクリックすると、そのボタンに指定した意図でonStartCommand()がトリガーされます(インテントを正しく設定した場合)。
  • 各ボタンのインテントは、受信時にインテントを識別できるように、異なるactionを持つ必要があります。
  • onStartCommand()あなたは/一時停止を再生し、この目的のアクションに基づいて他の操作を行うことができます内部。

いくつかの言及私は読むことをお勧めします:あなたはMediaSessionにを使用していた場合

物事は少し違っていただろうメディアを再生する。

関連する問題