public class DrmManagerClient extends Object
Modifier and Type | Class and Description |
---|---|
static interface |
DrmManagerClient.OnErrorListener
Interface definition for a callback that receives information about DRM framework errors.
|
static interface |
DrmManagerClient.OnEventListener
Interface definition for a callback that receives information
about DRM processing events.
|
static interface |
DrmManagerClient.OnInfoListener
Interface definition for a callback that receives status messages and warnings
during registration and rights acquisition.
|
Modifier and Type | Field and Description |
---|---|
static int |
ERROR_NONE
Indicates that a request was successful or that no error occurred.
|
static int |
ERROR_UNKNOWN
Indicates that an error occurred and the reason is not known.
|
Constructor and Description |
---|
DrmManagerClient(Context context)
Creates a
DrmManagerClient . |
Modifier and Type | Method and Description |
---|---|
DrmInfo |
acquireDrmInfo(DrmInfoRequest drmInfoRequest)
Retrieves information for registering, unregistering, or acquiring rights.
|
int |
acquireRights(DrmInfoRequest drmInfoRequest)
Processes a given
DrmInfoRequest and returns the rights information asynchronously. |
boolean |
canHandle(String path,
String mimeType)
Checks whether the given MIME type or path can be handled.
|
boolean |
canHandle(Uri uri,
String mimeType)
Checks whether the given MIME type or URI can be handled.
|
int |
checkRightsStatus(String path)
Checks whether the given content has valid rights.
|
int |
checkRightsStatus(String path,
int action)
Checks whether the given rights-protected content has valid rights for the specified
DrmStore.Action . |
int |
checkRightsStatus(Uri uri)
Check whether the given content has valid rights.
|
int |
checkRightsStatus(Uri uri,
int action)
Checks whether the given rights-protected content has valid rights for the specified
DrmStore.Action . |
DrmConvertedStatus |
closeConvertSession(int convertId)
Informs the DRM plug-in (agent) that there is no more data to convert or that an error
has occurred.
|
DrmConvertedStatus |
convertData(int convertId,
byte[] inputData)
Converts the input data (content) that is part of a rights-protected file.
|
protected void |
finalize()
Invoked when the garbage collector has detected that this instance is no longer reachable.
|
String[] |
getAvailableDrmEngines()
Retrieves information about all the DRM plug-ins (agents) that are registered with
the DRM framework.
|
ContentValues |
getConstraints(String path,
int action)
Retrieves constraint information for rights-protected content.
|
ContentValues |
getConstraints(Uri uri,
int action)
Retrieves constraint information for rights-protected content.
|
int |
getDrmObjectType(String path,
String mimeType)
Retrieves the type of rights-protected object (for example, content object, rights
object, and so on) using the specified path or MIME type.
|
int |
getDrmObjectType(Uri uri,
String mimeType)
Retrieves the type of rights-protected object (for example, content object, rights
object, and so on) using the specified URI or MIME type.
|
ContentValues |
getMetadata(String path)
Retrieves metadata information for rights-protected content.
|
ContentValues |
getMetadata(Uri uri)
Retrieves metadata information for rights-protected content.
|
String |
getOriginalMimeType(String path)
Retrieves the MIME type embedded in the original content.
|
String |
getOriginalMimeType(Uri uri)
Retrieves the MIME type embedded in the original content.
|
void |
installDrmEngine(String engineFilePath)
Installs a new DRM plug-in (agent) at runtime.
|
static void |
notify(Object thisReference,
int uniqueId,
int infoType,
String message) |
int |
openConvertSession(String mimeType)
Initiates a new conversion session.
|
int |
processDrmInfo(DrmInfo drmInfo)
Processes the given DRM information based on the information type.
|
void |
release()
Releases resources associated with the current session of DrmManagerClient.
|
int |
removeAllRights()
Removes all the rights information of every DRM plug-in (agent) associated with
the DRM framework.
|
int |
removeRights(String path)
Removes the rights associated with the given rights-protected content.
|
int |
removeRights(Uri uri)
Removes the rights associated with the given rights-protected content.
|
int |
saveRights(DrmRights drmRights,
String rightsPath,
String contentPath)
Saves rights to a specified path and associates that path with the content path.
|
void |
setOnErrorListener(DrmManagerClient.OnErrorListener errorListener)
Registers an
DrmManagerClient.OnErrorListener callback, which is invoked when
the DRM framework sends error information. |
void |
setOnEventListener(DrmManagerClient.OnEventListener eventListener)
Registers an
DrmManagerClient.OnEventListener callback, which is invoked when the
DRM framework sends information about DRM processing. |
void |
setOnInfoListener(DrmManagerClient.OnInfoListener infoListener)
Registers an
DrmManagerClient.OnInfoListener callback, which is invoked when the
DRM framework sends status or warning information during registration or rights acquisition. |
public static final int ERROR_NONE
public static final int ERROR_UNKNOWN
public DrmManagerClient(Context context)
DrmManagerClient
.context
- Context of the caller.protected void finalize()
Object
Note that objects that override finalize
are significantly more expensive than
objects that don't. Finalizers may be run a long time after the object is no longer
reachable, depending on memory pressure, so it's a bad idea to rely on them for cleanup.
Note also that finalizers are run on a single VM-wide finalizer thread,
so doing blocking work in a finalizer is a bad idea. A finalizer is usually only necessary
for a class that has a native peer and needs to call a native method to destroy that peer.
Even then, it's better to provide an explicit close
method (and implement
Closeable
), and insist that callers manually dispose of instances. This
works well for something like files, but less well for something like a BigInteger
where typical calling code would have to deal with lots of temporaries. Unfortunately,
code that creates lots of temporaries is the worst kind of code from the point of view of
the single finalizer thread.
If you must use finalizers, consider at least providing your own
ReferenceQueue
and having your own thread process that queue.
Unlike constructors, finalizers are not automatically chained. You are responsible for
calling super.finalize()
yourself.
Uncaught exceptions thrown by finalizers are ignored and do not terminate the finalizer thread. See Effective Java Item 7, "Avoid finalizers" for more.
public void release()
DrmManagerClient
object
is no longer needed in your application. After release() is called,
DrmManagerClient
is no longer usable since it has lost all of its required resource.public void setOnInfoListener(DrmManagerClient.OnInfoListener infoListener)
DrmManagerClient.OnInfoListener
callback, which is invoked when the
DRM framework sends status or warning information during registration or rights acquisition.infoListener
- Interface definition for the callback.public void setOnEventListener(DrmManagerClient.OnEventListener eventListener)
DrmManagerClient.OnEventListener
callback, which is invoked when the
DRM framework sends information about DRM processing.eventListener
- Interface definition for the callback.public void setOnErrorListener(DrmManagerClient.OnErrorListener errorListener)
DrmManagerClient.OnErrorListener
callback, which is invoked when
the DRM framework sends error information.errorListener
- Interface definition for the callback.public String[] getAvailableDrmEngines()
String
array of DRM plug-in descriptions.public ContentValues getConstraints(String path, int action)
path
- Path to the content from which you are retrieving DRM constraints.action
- Action defined in DrmStore.Action
.ContentValues
instance that contains
key-value pairs representing the constraints. Null in case of failure.
The keys are defined in DrmStore.ConstraintsColumns
.public ContentValues getMetadata(String path)
path
- Path to the content from which you are retrieving metadata information.ContentValues
instance that contains
key-value pairs representing the metadata. Null in case of failure.public ContentValues getConstraints(Uri uri, int action)
uri
- URI for the content from which you are retrieving DRM constraints.action
- Action defined in DrmStore.Action
.ContentValues
instance that contains
key-value pairs representing the constraints. Null in case of failure.public ContentValues getMetadata(Uri uri)
uri
- URI for the content from which you are retrieving metadata information.ContentValues
instance that contains
key-value pairs representing the constraints. Null in case of failure.public int saveRights(DrmRights drmRights, String rightsPath, String contentPath) throws IOException
Note: For OMA or WM-DRM, rightsPath
and
contentPath
can be null.
drmRights
- The DrmRights
to be saved.rightsPath
- File path where rights will be saved.contentPath
- File path where content is saved.IOException
- If the call failed to save rights information at the given
rightsPath
.public void installDrmEngine(String engineFilePath)
engineFilePath
- File path to the plug-in file to be installed.
public boolean canHandle(String path, String mimeType)
path
- Path of the content to be handled.mimeType
- MIME type of the object to be handled.public boolean canHandle(Uri uri, String mimeType)
uri
- URI for the content to be handled.mimeType
- MIME type of the object to be handledpublic int processDrmInfo(DrmInfo drmInfo)
drmInfo
- The DrmInfo
to be processed.public DrmInfo acquireDrmInfo(DrmInfoRequest drmInfoRequest)
drmInfoRequest
- The DrmInfoRequest
that specifies the type of DRM
information being retrieved.DrmInfo
instance.public int acquireRights(DrmInfoRequest drmInfoRequest)
DrmInfoRequest
and returns the rights information asynchronously.
This is a utility method that consists of an
acquireDrmInfo()
and a
processDrmInfo()
method call. This utility method can be
used only if the selected DRM plug-in (agent) supports this sequence of calls. Some DRM
agents, such as OMA, do not support this utility method, in which case an application must
invoke acquireDrmInfo()
and
processDrmInfo()
separately.
drmInfoRequest
- The DrmInfoRequest
used to acquire the rights.public int getDrmObjectType(String path, String mimeType)
path
- Path to the content or null.mimeType
- MIME type of the content or null.int
that corresponds to a DrmStore.DrmObjectType
.public int getDrmObjectType(Uri uri, String mimeType)
uri
- URI for the content or null.mimeType
- MIME type of the content or null.int
that corresponds to a DrmStore.DrmObjectType
.public String getOriginalMimeType(String path)
path
- Path to the rights-protected content.video/mpeg
.public String getOriginalMimeType(Uri uri)
uri
- URI of the rights-protected content.video/mpeg
.public int checkRightsStatus(String path)
path
- Path to the rights-protected content.int
representing the DrmStore.RightsStatus
of the content.public int checkRightsStatus(Uri uri)
uri
- URI of the rights-protected content.int
representing the DrmStore.RightsStatus
of the content.public int checkRightsStatus(String path, int action)
DrmStore.Action
.path
- Path to the rights-protected content.action
- The DrmStore.Action
to perform.int
representing the DrmStore.RightsStatus
of the content.public int checkRightsStatus(Uri uri, int action)
DrmStore.Action
.uri
- URI for the rights-protected content.action
- The DrmStore.Action
to perform.int
representing the DrmStore.RightsStatus
of the content.public int removeRights(String path)
path
- Path to the rights-protected content.public int removeRights(Uri uri)
uri
- URI for the rights-protected content.public int removeAllRights()
public int openConvertSession(String mimeType)
This method applies only to forward-locking (copy protection) DRM schemes.
mimeType
- MIME type of the input data packet.public DrmConvertedStatus convertData(int convertId, byte[] inputData)
DrmConvertedStatus
object. This method should be
called each time there is a new block of data received by the application.convertId
- Handle for the conversion session.inputData
- Input data that needs to be converted.DrmConvertedStatus
object that contains the status of the data conversion,
the converted data, and offset for the header and body signature. An application can
ignore the offset because it is only relevant to the
closeConvertSession()
method.public DrmConvertedStatus closeConvertSession(int convertId)
convertId
- Handle for the conversion session.DrmConvertedStatus
object that contains the status of the data conversion,
the converted data, and the offset for the header and body signature.