2011-11-10 99 views
0

有没有方法可以确定智能手机或平板电脑(iOS或Android)是否插入计算机?智能手机和平板电脑 - 插入计算机

无论是手机/平板电脑的角度(即isConnectedToComputer)还是计算机的角度(即connectedDevices)都可以。

如果是从计算机的角度来看,它特别需要通过Mac OS X应用程序。 如果是从手机/平板电脑的角度来看,它将需要区别于charging

一般的想法是确定用户何时在他们的计算机上。

注意:为了做出这个决定,我需要识别设备。对于iOS,使用设备UUID(与APNS中使用的类似)。在Android中,组合硬件和软件ID被组合在一起。所以如果从计算机的角度来看解决方案,我需要能够获得这些字符串。否则,我需要能够将它们传递给计算机。

奖励:如果Wi-Fi同步也可以考虑为“连接”,那将是太棒了。

回答

1

简单的解决方案

考虑使用system_profiler SPUSBDataType通过NSTask
当我的iPhone连接包括在结果如下:

iPhone: 

Product ID: 0x1292 
Vendor ID: 0x05ac (Apple Inc.) 
Version: 0.01 
Serial Number: 
Speed: Up to 480 Mb/sec 
Manufacturer: Apple Inc. 
Location ID: 0xfa140000/6 
Current Available (mA): 500 
Current Required (mA): 500 
Extra Operating Current (mA): 500 

使用system_profiler SPUSBDataType -xml输出结果XML格式:

<dict> 
    <key>_name</key> 
    <string>iPhone</string> 
    <key>a_product_id</key> 
    <string>0x1292</string> 
    <key>b_vendor_id</key> 
    <string>apple_vendor_id</string> 
    <key>c_bcd_device</key> 
    <string> 0.01</string> 
    <key>d_serial_num</key> 
    <string></string> 
    <key>e_device_speed</key> 
    <string>high_speed</string> 
    <key>f_manufacturer</key> 
    <string>Apple Inc.</string> 
    <key>g_location_id</key> 
    <string>0xfa140000/6</string> 
    <key>h_bus_power</key> 
    <string>500</string> 
    <key>j_bus_power_used</key> 
    <string>500</string> 
    <key>k_extra_current_used</key> 
    <string>500</string> 
</dict> 

简单解析XML确定阉感兴趣的设备连接与否。

+0

关于iPhone/iPad:有没有办法从这个应用程序获取硬件UUID? –

+1

运行'system_profiler SPHardwareDataType -xml'显示Mac本身的UUID,查找' platform_UUID'键。不幸的是'system_profiler'不能提供连接的iDevices的UUID。 – Anne

+0

尽管我非常喜欢这个答案的简单性,但它并不能完全从我的设备中获得所需信息。我在这个问题中增加了更多的上下文,并且暂时让它无法解决。不过谢谢你! –

相关问题