com.android.car.cluster.sample.MessagingConverter.java Source code

Java tutorial

Introduction

Here is the source code for com.android.car.cluster.sample.MessagingConverter.java

Source

/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.car.cluster.sample;

import android.app.Notification;
import android.graphics.Bitmap;
import android.service.notification.StatusBarNotification;
import android.support.v4.app.NotificationCompat.CarExtender;
import android.support.v4.app.NotificationCompat.CarExtender.UnreadConversation;
import android.text.TextUtils;
import android.util.Log;

/**
 * Convert a {@link CarExtender} notification into a {@link MessageContactDetails}
 */
public class MessagingConverter {
    private static final String TAG = DebugUtil.getTag(MessagingConverter.class);

    public static boolean canConvert(StatusBarNotification sbn) {
        Notification notification = sbn.getNotification();
        if (notification == null) {
            if (DebugUtil.DEBUG) {
                Log.d(TAG, "Notification is empty.");
            }
            return false;
        }
        CarExtender ce = new CarExtender(sbn.getNotification());
        if (ce.getUnreadConversation() == null) {
            if (DebugUtil.DEBUG) {
                Log.d(TAG, "Notification with no messaging component.");
            }
            return false;
        }

        CarExtender.UnreadConversation uc = ce.getUnreadConversation();
        String[] messages = uc.getMessages();
        if (messages == null || messages.length == 0) {
            Log.w(TAG, "Car message notification with no messages.");
            return false;
        }

        if (TextUtils.isEmpty(uc.getParticipant())) {
            Log.w(TAG, "Car message notification with no participant.");
            return false;
        }

        if (uc.getReplyPendingIntent() == null) {
            Log.w(TAG, "Car message notification with no reply intent.");
            return false;
        }

        for (String m : messages) {
            if (m == null) {
                Log.w(TAG, "Car message with null text.");
                return false;
            }
        }
        return true;
    }

    public static MessageContactDetails convert(StatusBarNotification sbn) {
        CarExtender ce = new CarExtender(sbn.getNotification());
        UnreadConversation uc = ce.getUnreadConversation();

        Bitmap largeIcon = ce.getLargeIcon();
        if (largeIcon == null) {
            largeIcon = sbn.getNotification().largeIcon;
        }
        String name = uc.getParticipant();

        return new MessageContactDetails(largeIcon, name);
    }

    public static class MessageContactDetails {
        private final Bitmap mContactImage;
        private final String mContactName;

        private MessageContactDetails(Bitmap contactImage, String contactName) {
            mContactImage = contactImage;
            mContactName = contactName;
        }

        public Bitmap getContactImage() {
            return mContactImage;
        }

        public String getContactName() {
            return mContactName;
        }
    }
}