2013-10-07 40 views
1

我想檢測wheather我的Android手機通過USB連接或不...這i'm:檢測USB連接和使用此代碼檢查它是否是一個PC

public static boolean isConnected(Context context) { 
    intent = context.registerReceiver(null, new IntentFilter("android.hardware.usb.action.USB_STATE")); 
    return intent.getExtras().getBoolean("connected"); 
} 

但有一個明確知道我是否連接到PC的可能性?!因爲解決方案我已經觸發了事件,即使我將手機連接到打印機或其他連接到USB端口...

我已經嘗試瞭解決方案@nios剛發佈,但如果isCharging和usbCharge布爾值設置爲true ,it's不guaranted您連接到PC。即使你連接到打印機兩個布爾將賭注設置爲true ...這就是我的問題

回答

6

您可以使用此IntentFilter的:

IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); 
Intent batteryStatus = context.registerReceiver(null, ifilter); 

// Are we charging/charged? 
int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1); 
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || 
       status == BatteryManager.BATTERY_STATUS_FULL; 

// How are we charging? 
int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); 
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB; 
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC; 

如果isChargingusbCharge布爾值設置爲true,則您通過USB連接到PC。

希望這會有所幫助。

上找到http://developer.android.com/training/monitoring-device-state/battery-monitoring.html

+2

嗨,THX該信息,但我已經嘗試過這種解決方案,但如果isCharging和usbCharge布爾值設置爲true,it's不guaranted您連接到PC。 ..即使你連接到一臺打印機,兩個布爾值都會被設置爲true ...這就是我的問題... – davidOhara

+0

不妨將最後三個查詢包含在if檢查isCharging是否爲真,如果它的false明顯。 –