2015-02-06 3 views
3

라디오를 재생하는 서비스가 있습니다 &가 알림을 생성합니다. 알림에는 제목, 텍스트, 시간이 포함되어야합니다. & 버튼 (일시 중지/재생). 나머지 내용을 추가했습니다. & 알림이 표시됩니다. 그러나 알림에 단추를 추가하는 방법에 대해 잘 모르겠습니다. 검색 할 때 RemoteView, RemoteControlClient & MediaStyles를 사용할 수 있음을 발견했습니다. 그러나 RemoteControlClient & MediaStyles는 모든 버튼으로 재생중인 미디어 파일 (이전, 일시 중지, 재생, 뒤로)이있을 때 사용됩니다. 그래서 나는 그것에 대해 정말로 혼란스러워합니다. 아무도 나에게 권할 수 있습니까, 어느 것이 Lollypop에 대한 알림에 버튼을 추가하는 데 사용할 수 있습니다.Lollipop에서 알림 일시 중지/재생 버튼을 추가하는 방법은 무엇입니까?

+1

사용 원격 전망하고 사탕을 위해 작동 할 링크 http://www.androidbegin.com/tutorial/android-custom-notification-tutorial/ – Ramesh

+0

에 따라? –

+0

최근 원격보기가있는 하나의 응용 프로그램에서 알림을 구현했습니다. 롤리팝에서도 잘 작동합니다. – Ramesh

답변

0

먼저 당신이 23 API에서 더 이상 사용되지 않습니다 addAction을 알 필요가 통지를 보여

전화 showNotification() 방법을 관련시키는 this을 읽을

private void showActionButtonsNotification() { 


     Notification.Builder notif; 
     NotificationManager nm; 
     notif = new Notification.Builder(getApplicationContext()); 
     notif.setSmallIcon(R.mipmap.ic_launcher); 
     notif.setContentTitle("Hi there!"); 
     notif.setContentText("This is even more text."); 
     Uri path = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     notif.setSound(path); 
     nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 

     Intent yesReceive = new Intent(); 
     yesReceive.setAction(MyNotificationReceiver.RESUME_ACTION); 
     PendingIntent pendingIntentYes = PendingIntent.getBroadcast(this, MyNotificationReceiver.REQUEST_CODE_NOTIFICATION, yesReceive, PendingIntent.FLAG_UPDATE_CURRENT); 
     notif.addAction(R.drawable.resume, "resume", pendingIntentYes); 


     Intent yesReceive2 = new Intent(); 
     yesReceive2.setAction(MyNotificationReceiver.STOP_ACTION); 
     PendingIntent pendingIntentYes2 = PendingIntent.getBroadcast(this, MyNotificationReceiver.REQUEST_CODE_NOTIFICATION, yesReceive2, PendingIntent.FLAG_UPDATE_CURRENT); 
     notif.addAction(R.drawable.stop, "stop", pendingIntentYes2); 




     Intent maybeReceive2 = new Intent(); 
     maybeReceive2.setAction(MyNotificationReceiver.CANCEL_ACTION); 
     PendingIntent pendingIntentMaybe2 = PendingIntent.getBroadcast(this, MyNotificationReceiver.REQUEST_CODE_NOTIFICATION, maybeReceive2, PendingIntent.FLAG_UPDATE_CURRENT); 
     notif.addAction(R.drawable.cancel, "cancel", pendingIntentMaybe2); 


     assert nm != null; 
     nm.notify(MyNotificationReceiver.REQUEST_CODE, notif.getNotification()); 


    } 

은 클릭을 받아 봐하는 MyNotificationReceiver 클래스를 작성

public class MyNotificationReceiver extends BroadcastReceiver { 
     public static int REQUEST_CODE_NOTIFICATION = 1212; 
     public static int REQUEST_CODE = 10; 
     public static final String RESUME_ACTION = "RESUME_ACTION"; 
     public static final String STOP_ACTION = "STOP_ACTION"; 
     public static final String CANCEL_ACTION = "CANCEL_ACTION"; 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      String action = intent.getAction(); 

      Log.e("action", action); 

      if (intent.getAction() != null) { 
       switch (intent.getAction()) { 
        case RESUME_ACTION : 
         Toast.makeText(context, "resume", Toast.LENGTH_SHORT).show(); 
// you resume action 
         break; 
        case STOP_ACTION : 
         Toast.makeText(context, "stop", Toast.LENGTH_SHORT).show(); 
// you stop action 
         break; 
        case CANCEL_ACTION: 
         Toast.makeText(context, "cancel", Toast.LENGTH_SHORT).show(); 
// you cancel action 
         break; 
       } 
      } 
     } 



    } 

마지막으로에 receiver을 추가하십시오.

<receiver android:name=".MyNotificationReceiver"> 
      <intent-filter> 
       <action android:name="RESUME_ACTION"/> 
       <action android:name="STOP_ACTION"/> 
       <action android:name="CANCEL_ACTION"/> 

      </intent-filter> 
     </receiver>