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提供的模拟器仍然存在问题,并且没有可用的更新。