На носимом устройстве я вижу, что оно может отображать только 12 уведомлений для каждого приложения. Например, когда я получаю около 20 новых электронных писем, приложение Wear показывает только последние 12 электронных писем и не более того.
Точно так же я написал приложение для износа, которое выдает уведомления, и даже там оно не отображает более 12 уведомлений, любые новые уведомления ставятся в очередь после этого и не отображаются в уведомлении, пока существующие не будут очищены. Таким образом, в любой момент может отображаться не более 12 уведомлений.
Это ограничение износа Google для Android?
Вот мой код..
PhoneDataListener, который получает элементы данных из мобильного приложения.
public class PhoneDataListenerService extends WearableListenerService {
private static final String TAG = "Listener-W";
@Override
public void onDataChanged(DataEventBuffer dataEvents) {
for (DataEvent event : dataEvents) {
Log.v(TAG, "DataMap received on watch: " + DataMapItem.fromDataItem(event.getDataItem()).getDataMap());
// Check the data type
if (event.getType() == DataEvent.TYPE_CHANGED) {
// Check the data path
String path = event.getDataItem().getUri().getPath();
if (path.equals("/weardatapath")) {}
DataMapItem dataMapItem = DataMapItem.fromDataItem(event.getDataItem());
ArrayList<DataMap> dataItemsList = dataMapItem.getDataMap().getDataMapArrayList
("dataMapItems");
// Broadcast DataMap contents to wearable show in notification..
if (dataItemsList != null && dataItemsList.size() > 0) {
// start service for each Item in the dataItemsList
for (DataMap dMapItem : dataItemsList) {
startNotificatioService(this, dMapItem);
}
}
}
}
}
public static void startNotificatioService(Context context, DataMap dataMap) {
Log.w(TAG, "start Service to show notification...");
Intent intent = new Intent(context, NotificationService.class);
intent.setAction(NotificationService.ACTION_NOTIFICATION);
intent.putExtra(NotificationService.DATA_PARAM, dataMap.toBundle());
context.startService(intent);
}
}
NotificationService в приложении износа, которое создает и выдает уведомление
public class NotificationService extends IntentService {
private final static String TAG = "NotificationService-W";
public static final String ACTION_NOTIFICATION = "com.test.phonewearsample.action.NOTIFIY";
public static final String DATA_PARAM = "dataMap";
private final static String MY_GROUP_KEY = "myGroupKey";
public NotificationService() {
super("NotificationService");
}
@Override
protected void onHandleIntent(Intent intent) {
if (intent != null) {
final String action = intent.getAction();
if (ACTION_NOTIFICATION.equals(action)) {
final Bundle data = intent.getBundleExtra(DATA_PARAM);
handleActionNotification(data);
}
}
}
private void handleActionNotification(Bundle data) {
// Display received data in UI
int dataId = data.getInt(SharedConstants.EXTRA_MAIL_ID);
Log.w(TAG, "###########DataItems############# :"+dataId);
String name = data.getString(SharedConstants.WearMails.CONTACT_NAME);
String number = data.getString(SharedConstants.WearMails.PHONE_NUMBER);
String duration = data.getString(SharedConstants.WearMails.DURATION);
Long uniqueVal = data.getLong(SharedConstants.EXTRA_UNIQUE_ID);
NotificationCompat.BigTextStyle style = new NotificationCompat.BigTextStyle();
style.bigText(number + "\n" + duration);
NotificationCompat.Builder notification = new NotificationCompat.Builder(this)
.setStyle(style)
.setContentTitle(name)
.setSmallIcon(R.mipmap.ic_launcher)
.addAction(R.mipmap.ic_launcher, "Play On Phone",
NotificationUtil.getReplyPendingIntent(this, Integer.toString(dataId)))
.setGroup(MY_GROUP_KEY)
.setVibrate(new long[]{0, 100, 50, 100})
.setSortKey(Long.toString(uniqueVal));
NotificationManagerCompat.from(this).notify(dataId, notification.build());
}
}
Обратите внимание, что одновременно может отображаться только 12 уведомлений для группы. Как только я выполняю действие и уведомление очищается, появляется ожидающее уведомление.