MediaStyle通知更新

问题描述:

我正在更改现有应用程序以使用MediaStyle通知在Android 5.0中提供锁屏音乐信息和传输控件。但是,似乎更新此类通知的方式并不按预期工作。下面的代码段生成通知每个按钮被按压时,递增在通知标题显示的计数器:MediaStyle通知更新

public class MainActivity extends Activity {  
    private int serial; 
    private TextView text; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     text = (TextView)findViewById(R.id.textView1); 
    } 

    public void buttonClick(final View view) { 
     final Notification.Builder builder = new Notification.Builder(this) 
      .setContentTitle("Title " + serial) 
      .setContentText("Text") 
      .setContentInfo("Info") 
      .setSmallIcon(R.drawable.ic_launcher) 
      .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher)) 
      .setOngoing(true) 
      .setStyle(new Notification.MediaStyle()) 
      .setVisibility(Notification.VISIBILITY_PUBLIC); 

      NotificationManager nm = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); 
      nm.notify(1, builder.build()); 

      text.setText("Serial = " + serial); 

      serial++; 
    } 
} 

的问题是:

  • 当在模拟器中执行运行5.0,该通知文本在通知抽屉或锁定屏幕中与TextView中显示的序列不同步。如果MediaStyle设置为而不是,通知在抽屉中有正确的编号,但不在锁定屏幕中。
  • MediaStyle通知在锁定屏幕中正确显示,直到它第一次在通知纸盒中查看。之后,它不再在锁屏中显示为MediaStyle通知(但不完全像标准的非MediaStyle通知)。值得注意的是,在模拟器重新启动之前,不再显示用addAction()添加的按钮。

所以我怀疑我做了一件非常错误的事情(要么是,或者在模拟器上运行的Android图像被破坏,但这似乎不太可能)。有任何想法吗?

事实证明,模拟器毕竟是坏的。在真实设备(运行5.0的Nexus 5)中,通知行为(包括使用addAction()添加更新图标,标题和信息更新以及在抽屉中看到锁屏后的通知)是正确的。然而,在写这个答案的时候,API 21 SDK提供的模拟器仍然存在问题,并且没有可用的更新。