2013-07-03 3 views
1

Я хочу обнаружить что-нибудь вроде зарядного устройства или USB подключен к порту зарядного устройства устройства. Там все равно для этого?Как определить подключение к порту зарядного устройства?

Я пробовал это link. Он работает, когда зарядное устройство подключено и отключено. Оно работает на всех устройствах?

Заранее спасибо

+0

Я вас спрашиваю, что это работает для зарядного устройства и USB-соединения В некоторых более высоких устройствах версии есть варианты для зарядки и USB, даже если, используя тот же порт?. –

+0

См. Это из приведенного ниже ответа: 'подключен == BatteryManager.BATTERY_PLUGGED_AC || подключен == BatteryManager.BATTERY_PLUGGED_USB' - вы можете вернуть это в любом случае, есть отдельные флаги для зарядки USB и переменного тока. – g00dy

ответ

1

Да, вы можете отслеживать состояние батареи через намерения вещания.

Пример монитора батареи:

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.os.BatteryManager; 

public class ChargeMon extends BroadcastReceiver { 
    private boolean mCharging; 
    private boolean mUsb; 
    private boolean mAC; 

    public void start(Context c) { 
     c.registerReceiver(this, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 
    } 

    public void stop(Context c) { 
     c.unregisterReceiver(this); 
    } 

    public boolean isCharging() { 
     return mCharging; 
    } 

    public boolean isUsb() { 
     return mUsb; 
    } 

    public boolean isAC() { 
     return mAC; 
    } 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     if(Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())){ 
      int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS,-1); 

      mCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || 
         status == BatteryManager.BATTERY_STATUS_FULL; 

      int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); 

      mUsb = chargePlug == BatteryManager.BATTERY_PLUGGED_USB; 
      mAC = chargePlug == BatteryManager.BATTERY_PLUGGED_AC; 
     } 
    } 
} 
+0

Я надеюсь, что это не сработает, когда батарея переполнена. –

+0

@AshaSoman Все зависит от того, транслируется ли намерение: http://developer.android.com/training/monitoring-device-state/battery-monitoring.html. Вы можете добавить фильтры более намерения для мониторинга. –