안드로이드 Android 자동 알림이 표시되지 않음




안드로이드 스튜디오 설정창 만들기 (3)

NotificationCompat.CarExtender 는 "알림"(예 : 메시징 앱의 경우 메시지 읽기 및 응답 기능)으로 선언하는 앱의 옵션 일뿐입니다.

<automotiveApp>
    <uses name="notification"/>
</automotiveApp>

"미디어"automotiveApp로 "자동"컨텍스트에서 가정에 표시 알림은 실제 API 버전에서는 허용되지 않는 것 같습니다.

미디어 재생 응용 프로그램과 관련된 오류 메시지 (귀하의 경우에있는 것처럼 보임)는 자동 상태 시스템에 의해 해석되고 직접 표시되는 오류 상태를 사용할 수 있습니다.

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());
}

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;
}

전화가 아닌 자동 표시 장치에 표시하려면 무엇을 놓치고 있습니까?


here 에서 단계별로 따라 here

이 샘플은 전체 데모를 보여줍니다.

편집하다

미디어 통지의 경우 this 사용할 수 있습니다. 미디어 앱 및 자동 알림에 대한 단계별 설명


이 코드를 사용하여 알림을 표시하고,

 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());
    }






android-auto