2010-07-16 12 views

Antwort

9

Einen BroadcastReceiver für ACTION_BATTERY_CHANGED einrichten. Ein Intent extra wird Ihnen sagen, was der Ladezustand ist - siehe BatteryManager für Details.

+0

Danke! Es gibt keine Möglichkeit, nach diesen Informationen zu fragen? – NPike

+0

@NPike: siehe die Kommentare zu dieser [akzeptierte Antwort] (http://stackoverflow.com/questions/3997289/get-temperature-of-battery-on-android/3997349#3997349) für eine andere Frage - man kann das bekommen aktueller Zustand mit der dort gezeigten Methode ohne Abonnement. –

+1

Tu genau sein: Intent ix = main.registerReceiver (null, neuer IntentFilter (Intent.ACTION_BATTERY_CHANGED)); \t \t \t \t Boolesch gestopft = ix! = Null && ix.getIntExtra ("verstopft", 0)! = 0; – mdiener

59

In AndroidManifest.xml

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <receiver android:name=".receiver.PlugInControlReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.ACTION_POWER_CONNECTED" /> 
      <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" /> 
     </intent-filter> 
    </receiver> 
</application> 

In-Code

public class PlugInControlReceiver extends BroadcastReceiver { 
    public void onReceive(Context context , Intent intent) { 
     String action = intent.getAction(); 

     if(action.equals(Intent.ACTION_POWER_CONNECTED)) { 
      // Do something when power connected 
     } 
     else if(action.equals(Intent.ACTION_POWER_DISCONNECTED)) { 
      // Do something when power disconnected 
     } 
    } 
} 
+3

Beachten Sie, dass die onReceive() - Methode in der PlugInControlReceiver-Klasse sein sollte, die BroadcastReceiver erweitert. –

+1

Danke für die freundliche Erklärung @OdedBreiner –

+0

aber obige Lösung funktioniert nicht für VIVO und OPPO-Handys –

-1

Eine Sache mehr, müssen Sie prüfen, ob es Fehler in Manifest ist ---> Anwendung. Klicken Sie dann auf das Feld mit dem Fehler und klicken Sie einfach auf den Link "Name" Dann erscheint ein Dialogfeld zum Hinzufügen einer Klasse. fügen Sie die Klasse hinzu und kopieren Sie in der Klasse den Code von on.That ist der obige Code in die Klassendatei nicht die Hauptaktivität kopiert werden. Dank Pzycoderz

1

ein anderer Weg ist Batteriemanager. dies i verwendbar für api> = 21

public class PowerUtil { 
    public static boolean isConnected(Context context) { 
     Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 
     int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); 
     return plugged == BatteryManager.BATTERY_PLUGGED_AC || plugged == BatteryManager.BATTERY_PLUGGED_USB; 
    } 
} 
-1

Hier ist eine weitere Möglichkeit, die Informationen abzufragen:

die Werte hier lesen: ex.

via android shell:

cat /sys/class/power_supply/usb/online 

1 = verbunden, 0 = nicht. Reflektiert den USB-Verbindungsstatus.

cat/sys/class/power_supply/ac/Online

1 = verbunden, 0 = nicht. Reflektiert den AC-Verbindungsstatus.

Mit diesen beiden zusammen, denke ich werde sagen, ob das Gerät Strom erhält oder nicht. Nicht sicher, ob der Standort für alle Geräte gleich ist. Fand die Location die selbe auf Android 7+ und 5+, auf einem Samsung Tablet und einem RockChip Gerät.

Verwandte Themen