Уведомление Android Auto не отображается
Я пытаюсь показать уведомление через Android Auto. Уведомление отображается на моем телефоне. Однако он не отображается на эмуляторе Android Auto. Это мультимедийное приложение.
automotvie_app_desc.xml:
<automotiveApp>
<uses name="media"/>
</automotiveApp>
Этот код находится в моем классе MediaBrowserService
:
private Notification postNotification(AutoNotificationHelper.Type type) {
Log.d(TAG, "Post Notification");
Notification notification = AutoNotificationHelper.createMenuErrorNotification(
getApplicationContext(), type, mSession);
if (notification != null) {
mNotificationManager.notify(TAG, NOTIFICATION_ID, notification);
}
return notification;
}
Здесь создается уведомление:
static Notification createMenuErrorNotification(Context context, Type type,
MediaSessionCompat mediaSession) {
MediaControllerCompat controller = mediaSession.getController();
MediaMetadataCompat mMetadata = controller.getMetadata();
PlaybackStateCompat mPlaybackState = controller.getPlaybackState();
if (mMetadata == null) {
Log.e(TAG, "MetaData is null");
}
if (mPlaybackState == null) {
Log.e(TAG, "Playback state is null");
}
if (type.equals(Type.MENU_ERROR)) {
Bitmap icon = BitmapFactory.decodeResource(context.getResources(), R.drawable.error);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context.getApplicationContext());
notificationBuilder.extend(new android.support.v4.app.NotificationCompat.CarExtender())
.setStyle(new NotificationCompat.MediaStyle()
.setMediaSession(mediaSession.getSessionToken()))
.setSmallIcon(R.drawable.error)
.setShowWhen(false)
.setContentTitle(context.getString(R.string.title))
.setContentText(context.getString(R.string.message))
.setLargeIcon(icon)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC);
return notificationBuilder.build();
}
return null;
}
Что мне не хватает, чтобы показать это на автоматическом дисплее, а не на телефоне?
Ответы
Ответ 1
NotificationCompat.CarExtender, по-видимому, является вариантом только для приложения объявить как "уведомление" (например, функция чтения и ответа сообщения для приложения для обмена сообщениями).
<automotiveApp>
<uses name="notification"/>
</automotiveApp>
Отображение уведомления на домашнем компьютере в контексте "Авто" с помощью "media" automotiveApp кажется недопустимым в реальной версии api.
Для сообщения об ошибке, связанного с приложением для воспроизведения мультимедиа (как будто это в вашем случае), вы можете использовать состояние ошибки, которое будет интерпретироваться и отображаться непосредственно системой Auto.
private void showErrorMessage(final int errorCode, final String errorMessage) {
final PlaybackStateCompat.Builder playbackStateBuilder = new PlaybackStateCompat.Builder();
playbackStateBuilder.setState(PlaybackStateCompat.STATE_ERROR, -1L, 1.0F);
playbackStateBuilder.setErrorMessage(errorCode, errorMessage);
mSession.setPlaybackState(playbackStateBuilder.build());
}
![введите описание изображения здесь]()
Ответ 2
Попробуйте этот код, чтобы показать уведомление,
private void showPushNotification(String title, String message, Intent tapIntent, int notificationID) {
android.support.v7.app.NotificationCompat.Builder builder = new android.support.v7.app.NotificationCompat.Builder(this);
builder.setSmallIcon(R.drawable.swiftee_white_logo_notification);
//Intent tapIntent = new Intent(this, HomeScreenActivity.class);
//tapIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
//tapIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//tapIntent.putExtra(AppConstants.PUSH_MESSAGE, true);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, tapIntent, PendingIntent.FLAG_ONE_SHOT);
builder.setContentIntent(pendingIntent);
builder.setAutoCancel(true);
builder.setContentTitle(title);
builder.setContentText(message);
NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(notificationID, builder.build());
}
Ответ 3
Пожалуйста, следуйте шаг за шагом из здесь
В этом примере демонстрируется полная демонстрация
EDIT
Для Media Notification вы можете использовать this. Здесь шаг за шагом объясняется, что приложение для мультимедиа и уведомление для авто