windows - Opdag kamera rotation på Microsoft Surface?

Indlæg af Hanne Mølgaard Plasc

Problem



Er der en pålidelig måde at afgøre, om et kamera er roteret på Microsoft Surface?


Dybest set vil jeg gerne vide, om et bestemt kamera er indbygget i enheden (da det vil rotere med enheden), er der en måde at spørge om dette?


Mit problem er, at når brugeren roterer enheden, bliver min kameravisning vendt, men jeg kan ikke antage, at jeg bare skal dreje læserammerne, da det aktive kamera kan være et eksternt USB-kamera.


Jeg læser kameraerne ved hjælp af Media Foundation API'erne.

Bedste reference



  Dybest set vil jeg gerne vide, om et bestemt kamera er indbygget i enheden [[...]] er der en måde at spørge om dette?



Med UWP kan du kontrollere kameraets DeviceInformation 's enclosureLocation. panel ejendom, som enten er: [15] [16] [17]



  • front/back/etc for et integreret kamera eller

  • unknown til et eksternt kamera



Et fuldt eksempel er tilgængeligt i CameraStarterKit-prøven. [18]





Men , hvis du ikke kan bruge UWP, skal det stadig være muligt at finde den underliggende information. Med MF skal du få adgang til MF\_DEVSOURCE\_ATTRIBUTE\_SOURCE\_TYPE\_VIDCAP\_SYMBOLIC\_LINK. [19]


Dette vil være noget lignende


\?usb#vid\_046d&pid\_0843&mi\_00#6&2314864d&0&0000#{e5323777-f976-4f5b-9b55-b94699c46e44}global


Et indbygget kamera skal registrere sin fysiske placering i [20]


HKLMSYSTEMCurrentControlSetControlInternalDeviceModification{GUID}


Hvor værdien af ​​PLD\_Panel -tasten skal være en DWORD med værdier, der ligner meget Panel enum refereret ovenfor. [21]


Her betyder 6 unknown. Så du bør være i stand til at tjekke for tilstedeværelsen af ​​denne registreringsnøgle og, hvis den er til stede, tjekke dens værdi. Jeg formoder, at det ligner det UWP gør under hooden.


Hvis du undlader det, kan du også hakke i support ved hardcoding nogle værdier for kameraleverandør og produkt ID'er eller MF\_DEVSOURCE\_ATTRIBUTE\_FRIENDLY\_NAME 's. [22]