summaryrefslogtreecommitdiffstats
path: root/src/com/android/messaging/util/ContentType.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/messaging/util/ContentType.java')
-rw-r--r--src/com/android/messaging/util/ContentType.java185
1 files changed, 185 insertions, 0 deletions
diff --git a/src/com/android/messaging/util/ContentType.java b/src/com/android/messaging/util/ContentType.java
new file mode 100644
index 0000000..bb4a7b2
--- /dev/null
+++ b/src/com/android/messaging/util/ContentType.java
@@ -0,0 +1,185 @@
+/*
+ * Copyright (C) 2007-2008 Esmertec AG.
+ * Copyright (C) 2007-2008 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.messaging.util;
+
+import android.webkit.MimeTypeMap;
+
+public final class ContentType {
+ public static String THREE_GPP_EXTENSION = "3gp";
+ public static String VIDEO_MP4_EXTENSION = "mp4";
+ // Default extension used when we don't know one.
+ public static String DEFAULT_EXTENSION = "dat";
+
+ public static final int TYPE_IMAGE = 0;
+ public static final int TYPE_VIDEO = 1;
+ public static final int TYPE_AUDIO = 2;
+ public static final int TYPE_VCARD = 3;
+ public static final int TYPE_OTHER = 4;
+
+ public static final String ANY_TYPE = "*/*";
+ public static final String MMS_MESSAGE = "application/vnd.wap.mms-message";
+ // The phony content type for generic PDUs (e.g. ReadOrig.ind,
+ // Notification.ind, Delivery.ind).
+ public static final String MMS_GENERIC = "application/vnd.wap.mms-generic";
+ public static final String MMS_MULTIPART_MIXED = "application/vnd.wap.multipart.mixed";
+ public static final String MMS_MULTIPART_RELATED = "application/vnd.wap.multipart.related";
+ public static final String MMS_MULTIPART_ALTERNATIVE =
+ "application/vnd.wap.multipart.alternative";
+
+ public static final String TEXT_PLAIN = "text/plain";
+ public static final String TEXT_HTML = "text/html";
+ public static final String TEXT_VCALENDAR = "text/x-vCalendar";
+ public static final String TEXT_VCARD = "text/x-vCard";
+
+ public static final String IMAGE_PREFIX = "image/";
+ public static final String IMAGE_UNSPECIFIED = "image/*";
+ public static final String IMAGE_JPEG = "image/jpeg";
+ public static final String IMAGE_JPG = "image/jpg";
+ public static final String IMAGE_GIF = "image/gif";
+ public static final String IMAGE_WBMP = "image/vnd.wap.wbmp";
+ public static final String IMAGE_PNG = "image/png";
+ public static final String IMAGE_X_MS_BMP = "image/x-ms-bmp";
+
+ public static final String AUDIO_UNSPECIFIED = "audio/*";
+ public static final String AUDIO_AAC = "audio/aac";
+ public static final String AUDIO_AMR = "audio/amr";
+ public static final String AUDIO_IMELODY = "audio/imelody";
+ public static final String AUDIO_MID = "audio/mid";
+ public static final String AUDIO_MIDI = "audio/midi";
+ public static final String AUDIO_MP3 = "audio/mp3";
+ public static final String AUDIO_MPEG3 = "audio/mpeg3";
+ public static final String AUDIO_MPEG = "audio/mpeg";
+ public static final String AUDIO_MPG = "audio/mpg";
+ public static final String AUDIO_MP4 = "audio/mp4";
+ public static final String AUDIO_MP4_LATM = "audio/mp4-latm";
+ public static final String AUDIO_X_MID = "audio/x-mid";
+ public static final String AUDIO_X_MIDI = "audio/x-midi";
+ public static final String AUDIO_X_MP3 = "audio/x-mp3";
+ public static final String AUDIO_X_MPEG3 = "audio/x-mpeg3";
+ public static final String AUDIO_X_MPEG = "audio/x-mpeg";
+ public static final String AUDIO_X_MPG = "audio/x-mpg";
+ public static final String AUDIO_3GPP = "audio/3gpp";
+ public static final String AUDIO_X_WAV = "audio/x-wav";
+ public static final String AUDIO_OGG = "application/ogg";
+
+ public static final String MULTIPART_MIXED = "multipart/mixed";
+
+ public static final String VIDEO_UNSPECIFIED = "video/*";
+ public static final String VIDEO_3GP = "video/3gp";
+ public static final String VIDEO_3GPP = "video/3gpp";
+ public static final String VIDEO_3G2 = "video/3gpp2";
+ public static final String VIDEO_H263 = "video/h263";
+ public static final String VIDEO_M4V = "video/m4v";
+ public static final String VIDEO_MP4 = "video/mp4";
+ public static final String VIDEO_MPEG = "video/mpeg";
+ public static final String VIDEO_MPEG4 = "video/mpeg4";
+ public static final String VIDEO_WEBM = "video/webm";
+
+ public static final String APP_SMIL = "application/smil";
+ public static final String APP_WAP_XHTML = "application/vnd.wap.xhtml+xml";
+ public static final String APP_XHTML = "application/xhtml+xml";
+
+ public static final String APP_DRM_CONTENT = "application/vnd.oma.drm.content";
+ public static final String APP_DRM_MESSAGE = "application/vnd.oma.drm.message";
+
+ // This class should never be instantiated.
+ private ContentType() {
+ }
+
+ public static boolean isTextType(final String contentType) {
+ return TEXT_PLAIN.equals(contentType)
+ || TEXT_HTML.equals(contentType)
+ || APP_WAP_XHTML.equals(contentType);
+ }
+
+ public static boolean isMediaType(final String contentType) {
+ return isImageType(contentType)
+ || isVideoType(contentType)
+ || isAudioType(contentType)
+ || isVCardType(contentType);
+ }
+
+ public static boolean isImageType(final String contentType) {
+ return (null != contentType) && contentType.startsWith(IMAGE_PREFIX);
+ }
+
+ public static boolean isAudioType(final String contentType) {
+ return (null != contentType) &&
+ (contentType.startsWith("audio/") || contentType.equalsIgnoreCase(AUDIO_OGG));
+ }
+
+ public static boolean isVideoType(final String contentType) {
+ return (null != contentType) && contentType.startsWith("video/");
+ }
+
+ public static boolean isVCardType(final String contentType) {
+ return (null != contentType) && contentType.equalsIgnoreCase(TEXT_VCARD);
+ }
+
+ public static boolean isDrmType(final String contentType) {
+ return (null != contentType)
+ && (contentType.equals(APP_DRM_CONTENT)
+ || contentType.equals(APP_DRM_MESSAGE));
+ }
+
+ public static boolean isUnspecified(final String contentType) {
+ return (null != contentType) && contentType.endsWith("*");
+ }
+
+ /**
+ * If the content type is a type which can be displayed in the conversation list as a preview.
+ */
+ public static boolean isConversationListPreviewableType(final String contentType) {
+ return ContentType.isAudioType(contentType) || ContentType.isVideoType(contentType) ||
+ ContentType.isImageType(contentType) || ContentType.isVCardType(contentType);
+ }
+
+ /**
+ * Given a filename, look at the extension and try and determine the mime type.
+ *
+ * @param fileName a filename to determine the type from, such as img1231.jpg
+ * @param contentTypeDefault type to use when the content type can't be determined from the file
+ * extension. It can be null or a type such as ContentType.IMAGE_UNSPECIFIED
+ * @return Content type of the extension.
+ */
+ public static String getContentTypeFromExtension(final String fileName,
+ final String contentTypeDefault) {
+ final MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton();
+ final String extension = MimeTypeMap.getFileExtensionFromUrl(fileName);
+ String contentType = mimeTypeMap.getMimeTypeFromExtension(extension);
+ if (contentType == null) {
+ contentType = contentTypeDefault;
+ }
+ return contentType;
+ }
+
+ /**
+ * Get the common file extension for a given content type
+ * @param contentType The content type
+ * @return The extension without the .
+ */
+ public static String getExtension(final String contentType) {
+ if (VIDEO_MP4.equals(contentType)) {
+ return VIDEO_MP4_EXTENSION;
+ } else if (VIDEO_3GPP.equals(contentType)) {
+ return THREE_GPP_EXTENSION;
+ } else {
+ return DEFAULT_EXTENSION;
+ }
+ }
+}