Уведомление 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. Здесь шаг за шагом объясняется, что приложение для мультимедиа и уведомление для авто