package Ġnet . formula 9 7 . android apps . sys info collector . logic . factory Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . hardware . usb . Usb Manager Ċ import Ġnet . formula 9 7 . android apps . sys info collector . domain . inventory . Usb Device Ċ Ċ class ĠU sb Factory : ĠAbstract Inventory Builder < Usb Device >(), ĠContext Inventory Injector < Usb Device > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġfrom Context ( context : ĠContext ): ĠU sb Device Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdevices Ġ= Ġlist From Context ( context ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( devices . isEmpty ()) ĠU sb Device () Ġelse Ġdevices [ 0 ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlist From Context ( context : ĠContext ): ĠMutable List < Usb Device > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġret Ġ= Ġmutable ListOf < Usb Device >() ĊĊĠĠĠĠĠĠĠ Ġval Ġusb Mgr Ġ= Ġcontext . getSystem Service ( Context . USB _ SERVICE ) Ġas ĠU sb Manager ĊĠĠĠĠĠĠĠ Ġusb Mgr . device List . forEach Ġ{ Ġ( k , Ġv ) Ġ-> Ġret . add ( Usb Device (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġk ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusb Class Id Ġ= Ġv . device Class . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusb Sub Class Ġ= Ġv . device Subclass . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvendor Id Ġ= Ġv . vendor Id . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠproductId Ġ= Ġv . productId . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanufacturer Ġ= Ġv . manufacturer Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcaption Ġ= Ġv . product Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserial Ġ= Ġv . serial Number ĊĠĠĠĠĠĠĠ Ġ})} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġret ĊĠĠĠ Ġ} Ċ }