1d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi/* 2d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * Copyright (C) 2010 The Android Open Source Project 3d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 4d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * Licensed under the Apache License, Version 2.0 (the "License"); 5d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * you may not use this file except in compliance with the License. 6d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * You may obtain a copy of the License at 7d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 8d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * http://www.apache.org/licenses/LICENSE-2.0 9d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 10d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * Unless required by applicable law or agreed to in writing, software 11d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * distributed under the License is distributed on an "AS IS" BASIS, 12d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * See the License for the specific language governing permissions and 14d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * limitations under the License. 15d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 16d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 17d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshipackage android.drm; 18d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 19d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi/** 200e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Defines constants that are used by the DRM framework. 21d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi * 22d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 23d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshipublic class DrmStore { 24d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 250e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Interface definition for the columns that represent DRM constraints. 26d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 27d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public interface ConstraintsColumns { 28d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 290e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The maximum repeat count. 300e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * <p> 310e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Type: INTEGER 32d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 33d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final String MAX_REPEAT_COUNT = "max_repeat_count"; 34d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 35d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 360e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The remaining repeat count. 370e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * <p> 380e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Type: INTEGER 39d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 40d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final String REMAINING_REPEAT_COUNT = "remaining_repeat_count"; 41d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 42d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 430e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The time before which the rights-protected file cannot be played/viewed. 440e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * <p> 450e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Type: TEXT 46d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 47d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final String LICENSE_START_TIME = "license_start_time"; 48d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 49d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 500e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The time after which the rights-protected file cannot be played/viewed. 510e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * <p> 520e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Type: TEXT 53d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 54d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final String LICENSE_EXPIRY_TIME = "license_expiry_time"; 55d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 56d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 570e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The available time left before the license expires. 580e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * <p> 590e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Type: TEXT 60d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 61d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final String LICENSE_AVAILABLE_TIME = "license_available_time"; 62d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 63d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 640e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The data stream for extended metadata. 650e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * <p> 660e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Type: TEXT 67d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 68d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final String EXTENDED_METADATA = "extended_metadata"; 69d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 70d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 71d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 720e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Defines DRM object types. 73d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 74d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static class DrmObjectType { 75d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 760e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * An unknown object type. 77d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 78d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int UNKNOWN = 0x00; 79d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 800e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * A rights-protected file object type. 81d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 82d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int CONTENT = 0x01; 83d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 840e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * A rights information object type. 85d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 86d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int RIGHTS_OBJECT = 0x02; 87d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 880e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * A trigger information object type. 89d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 90d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int TRIGGER_OBJECT = 0x03; 91d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 92d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 93d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 940e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Defines playback states for content. 95d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 96d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static class Playback { 97d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 980e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Playback started. 99d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 100d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int START = 0x00; 101d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 1020e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Playback stopped. 103d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 104d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int STOP = 0x01; 105d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 1060e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Playback paused. 107d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 108d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int PAUSE = 0x02; 109d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 1100e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Playback resumed. 111d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 112d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int RESUME = 0x03; 113d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 114d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /* package */ static boolean isValid(int playbackStatus) { 115d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi boolean isValid = false; 116d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 117d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi switch (playbackStatus) { 118d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi case START: 119d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi case STOP: 120d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi case PAUSE: 121d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi case RESUME: 122d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi isValid = true; 123d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 124d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return isValid; 125d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 126d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 127d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 128d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 1290e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Defines actions that can be performed on rights-protected content. 130d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 131d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static class Action { 132d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 1330e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The default action. 134d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 135d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int DEFAULT = 0x00; 136d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 1370e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The rights-protected content can be played. 138d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 139d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int PLAY = 0x01; 140d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 1410e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The rights-protected content can be set as a ringtone. 142d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 143d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int RINGTONE = 0x02; 144d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 1450e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The rights-protected content can be transferred. 146d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 147d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int TRANSFER = 0x03; 148d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 1490e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The rights-protected content can be set as output. 150d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 151d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int OUTPUT = 0x04; 152d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 1530e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The rights-protected content can be previewed. 154d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 155d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int PREVIEW = 0x05; 156d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 1570e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The rights-protected content can be executed. 158d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 159d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int EXECUTE = 0x06; 160d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 1610e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The rights-protected content can be displayed. 162d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 163d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int DISPLAY = 0x07; 164d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 165d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /* package */ static boolean isValid(int action) { 166d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi boolean isValid = false; 167d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 168d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi switch (action) { 169d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi case DEFAULT: 170d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi case PLAY: 171d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi case RINGTONE: 172d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi case TRANSFER: 173d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi case OUTPUT: 174d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi case PREVIEW: 175d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi case EXECUTE: 176d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi case DISPLAY: 177d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi isValid = true; 178d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 179d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi return isValid; 180d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 181d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 182d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 183d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 1840e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * Defines status notifications for digital rights. 185d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 186d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static class RightsStatus { 187d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 1880e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The digital rights are valid. 189d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 190d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int RIGHTS_VALID = 0x00; 191d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 1920e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The digital rights are invalid. 193d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 194d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int RIGHTS_INVALID = 0x01; 195d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 1960e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The digital rights have expired. 197d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 198d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int RIGHTS_EXPIRED = 0x02; 199d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi /** 2000e092f806b0a4b81785a52da8ba22d2d47087de5Bill Gruber * The digital rights have not been acquired for the rights-protected content. 201d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi */ 202d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi public static final int RIGHTS_NOT_ACQUIRED = 0x03; 203d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi } 204d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi} 205d074e30ce44b9e33da43b67a4515b8986ca72b26aimitakeshi 206