2013-08-22 18 views
5

Impossibile trovare nulla di definitivo su Android Doc e Google.Come rilevare se la porta HDMI su un dispositivo Android ha abilitato HDCP?

Se esiste un'API per rilevare ciò, che cos'è e che cos'è l'API per abilitare/disabilitare HDCP sull'uscita HDMI?

Se non è presente alcuna API per rilevare ciò, è possibile utilizzare un dispositivo per controllare il flag HDCP sulla porta HDMI?

Su alcuni dispositivi Android (in particolare i dispositivi Samsung), la porta HDMI ha sempre abilitato HDCP. Ma che ne dici di altri dispositivi di produzione? HDCP è obbligatorio sul dispositivo certificato Google? Se non è obbligatorio, in che modo le app Android dei principali fornitori di contenuti (da Big Cable Company Teleco) impediscono l'uscita video verso la porta HDMI non protetta da HDCP?

+0

[Ecco un bug report correlato] (https://code.google.com/p/android/issues/detail?id=52985) potresti trovare interessante. Dovresti rispondere ad almeno alcuni dei tuoi –

+0

Grazie MH Questo è davvero molto interessante, sono più interessato a scoprire se HDCP è abilitato sulla porta HDMI, anche se non c'è modo di abilitare/disabilitare HDCP, purché l'app sappia che HDCP non è disponibile, può rifiutarsi di riprodurre contenuti HD. –

+0

Nota che non è possibile controllare solo il nome dell'hardware e il modello, quindi supporre che HDCP sia disponibile. Ciò non funzionerà perché il nome e il modello del dispositivo possono essere facilmente modificati su dispositivi root. –

risposta

2
+0

Grazie sembra essere relativo al flag HDCP ma non ci sono assolutamente esempi su come allocare un buffer protetto, quindi utilizzare il buffer per l'output dei frame video. –

+0

Credo che dovresti assegnare un [SurfaceView] (http://developer.android.com/reference/android/view/SurfaceView.html), quindi chiamare [setSecure] (http://developer.android.com/reference/ Android/view/SurfaceView.html # setSecure (booleano)). Successivamente, utilizzando [MediaPlayer] (http://developer.android.com/reference/android/media/MediaPlayer.html), chiama [setDisplay] (http://developer.android.com/reference/android/media/ MediaPlayer.html # SetDisplay (android.view.SurfaceHolder)) (exampleSurfaceView.getHolder()). –

+1

In realtà, è possibile avere una versione speciale per Android che restituisce true per flag FLAG_SECURE e non ha alcun HDCP? Lo speciale Android è lì solo per ingannare l'applicazione nel pensare che HDCP sia disponibile, ma in realtà non lo è. –

-1

Più spesso che no se ha una porta HDCP HDMI sta per essere attivata perché non funzionerebbe senza di essa!

0

Motorola aveva un API: http://web.archive.org/web/20120213100531/http://developer.motorola.com/docstools/library/motorola-hdmi-status-api/

Lo facciamo ancora lo usano per i dispositivi più vecchi. Ho anche letto che qualcuno stava avendo ancora successo usando questo sui nuovi dispositivi tramite adb, quindi se qualcuno sa se funziona ancora su dispositivi Motorola più recenti, per favore condividi.

Anche io so che questo non è quello che stavi chiedendo, ma lo stiamo usando per lo stato HDMI (/ sys/devices/virtual/switch/hdmi/state), speriamo che lo espandano in futuro per il supporto HDCP pure ... quindi potresti voler guardare anche quello spazio.

1

Questo è un thread precedente, ma poiché sto lavorando di nuovo su questa roba ho pensato di aggiornarlo.

A partire da API 17 (Android 4.2+), è possibile ottenere un proxy decente per le informazioni HDCP dall'SDK standard di Android.

Se si desidera garantire che un display sia "sicuro", è possibile chiamare setSecure (true) sulla superficie dell'applicazione. Quindi, per buona misura è possibile enumerare i display disponibili e verificare che sia impostato FLAG_SECURE per ognuno. Ciò bloccherà il DDMS e almeno suggerirà al driver del display che l'uscita dovrebbe avere HDCP acceso. Nessuna garanzia però e il tuo chilometraggio può variare.

In aggiunta, il percorso che Alex ha indicato sopra potrebbe essere stato modificato sui dispositivi più recenti (Android 5.1+). Ma poiché questo dipende dall'OEM, ci si aspetta che questo possa variare su dispositivi diversi. :-(