| <HTML> | |
| <BODY> | |
| <p>Provides classes for managing DRM content and determining the capabilities of DRM plugins | |
| (agents). Common uses of the DRM API include:</p> | |
| <ul> | |
| <li>Determining which DRM plug-ins (agents) are installed on a device.</li> | |
| <li>Retrieving information about specific plug-ins, such as the MIME types and file suffixes | |
| they support.</li> | |
| <li>Registering a user or a device with an online DRM service.</li> | |
| <li>Retrieving license constraints for rights-protected content.</li> | |
| <li>Checking whether a user has the proper rights to play or use rights-protected | |
| content.</li> | |
| <li>Associating rights-protected content with its license so you can use the | |
| {@link android.media.MediaPlayer} API to play the content.</li> | |
| </ul> | |
| <h2>DRM Overview</h2> | |
| <p>The Android platform provides an extensible DRM framework that lets applications manage | |
| rights-protected content according to the license constraints that are associated with the | |
| content. The DRM framework supports many DRM schemes; which DRM schemes a device supports | |
| is up to the device manufacturer.</p> | |
| <p>The Android DRM framework is implemented in two architectural layers (see figure below):</p> | |
| <ul> | |
| <li>A DRM framework API, which is exposed to applications through the Android | |
| application framework and runs through the Dalvik VM for standard applications.</li> | |
| <li>A native code DRM manager, which implements the DRM framework and exposes an | |
| interface for DRM plug-ins (agents) to handle rights management and decryption for various | |
| DRM schemes.</li> | |
| </ul> | |
| <img src="../../../images/drm_arch.png" alt="DRM architecture diagram" border="0"/> | |
| <p>For application developers, the DRM framework offers an abstract, unified API that | |
| simplifies the management of rights-protected content. The API hides the complexity of DRM | |
| operations and allows a consistent operation mode for both rights-protected and unprotected content | |
| across a variety of DRM schemes. For device manufacturers, content owners, and Internet digital | |
| media providers the DRM frameworkâs plugin architecture provides a means of adding support for a | |
| specific DRM scheme to the Android system.</p> | |
| <h2>Using the DRM API</h2> | |
| <p>In a typical DRM session, an Android application uses the DRM framework API to | |
| instantiate a {@link android.drm.DrmManagerClient}. The application calls various methods | |
| on the DRM client to query rights and perform other DRM-related tasks. Each | |
| {@link android.drm.DrmManagerClient} instance has its own unique ID, so the DRM manager is able to | |
| differentiate callers.</p> | |
| <p>Although each DRM plug-in may require a different sequence | |
| of API calls, the general call sequence for an application is as follows:</p> | |
| <ul> | |
| <li>Register the device with an online DRM service. | |
| <p>You can do this by first using the {@link android.drm.DrmManagerClient#acquireDrmInfo | |
| acquireDrmInfo()} method to acquire the registration information, and then using the {@link | |
| android.drm.DrmManagerClient#processDrmInfo processDrmInfo()} method to process the | |
| registration information.</p> | |
| </li> | |
| <li>Acquire the license that's associated with the rights-protected content. | |
| <p>You can do this by first using the {@link android.drm.DrmManagerClient#acquireDrmInfo | |
| acquireDrmInfo()} method to acquire the license information, and then using the {@link | |
| android.drm.DrmManagerClient#processDrmInfo processDrmInfo()} method to process the | |
| license information. You can also use the {@link | |
| android.drm.DrmManagerClient#acquireRights acquireRights()} method.</p> | |
| </li> | |
| <li>Extract constraint information from the license. | |
| <p>You can use the {@link android.drm.DrmManagerClient#getConstraints getConstraints()} | |
| method to do this.</p> | |
| </li> | |
| <li>Associate the rights-protected content with its license. | |
| <p>You can use the {@link android.drm.DrmManagerClient#saveRights saveRights()} method | |
| to do this.</p> | |
| </li> | |
| </ul> | |
| <p>After you make an association between the rights-protected content and its license, | |
| the DRM manager automatically handles rights management for that content. Specifically, the | |
| DRM manager will handle all further licensing checks when you attempt to play the content using | |
| the {@link android.media.MediaPlayer} API.</p> | |
| <p>To learn how to use the DRM API with a specific DRM plug-in, see the documentation provided | |
| by the plug-in developer.</p> | |
| </BODY> | |
| </HTML> |