Android端末のDRM情報を取得する
特定のDRMがサポートされているか
MediaCrypto.isCryptoSchemeSupported(uuid)
uuid
には以下の値を指定する
val WIDEVIDE_UUID = UUID.fromString("edef8ba9-79d6-4ace-a3c8-27dcd51d21ed") val PLAYREADY_UUID = UUID.fromString("9a04f079-9840-4286-ab92-e65be0885f95") val CLEAR_KEY_UUID = UUID.fromString("e2719d58-a985-b3c9-781a-b030af78d30e")
DRMのバージョンやセキュリティレベルを取得
val mediaDrm = MediaDrm(WIDEVIDE_UUID)
mediaDrm.getPropertyString(propertyname)
propertyName
には MediaDrm.PROPERTY_XXX
を指定する
コード例
コード
val propertyNames = listOf( MediaDrm.PROPERTY_ALGORITHMS, MediaDrm.PROPERTY_DESCRIPTION, MediaDrm.PROPERTY_VENDOR, MediaDrm.PROPERTY_VERSION, MediaDrm.PROPERTY_DEVICE_UNIQUE_ID, "securityLevel" ) val WIDEVIDE_UUID = UUID(0xEDEF8BA979D64ACEu.toLong(), 0xA3C827DCD51D21EDu.toLong()) val isWidevineSupported = MediaCrypto.isCryptoSchemeSupported(WIDEVIDE_UUID) if (isWidevineSupported) { val widevineMediaDrm = MediaDrm(WIDEVIDE_UUID) propertyNames .map { name -> name to widevineMediaDrm.getPropertyStringOrNull(name) } .forEach { (name, property) -> Log.d("DrmInfo", "$name: $property") } } fun MediaDrm.getPropertyStringOrNull(propertyName: String): String? { return try { getPropertyString(propertyName) } catch (e: Exception) { null } }
出力
D/DrmInfo: algorithms: AES/CBC/NoPadding,HmacSHA256 D/DrmInfo: description: Widevine CDM D/DrmInfo: vendor: Google D/DrmInfo: version: 1.0 D/DrmInfo: deviceUniqueId: null D/DrmInfo: securityLevel: L1