2017-09-23 10 views
0

私はアンドロイドが新しくなっています。私はサービス付きのアプリを作りたいです。サービスは現在の充電状態を継続的にチェックする必要があります(差し込まれているかどうか)。充電器が接続されているときにイベントを実行したい(Wi-Fiをオフにする)。私の問題を解決してもらえますか?あなたは以下の例を見つけることができ、バッテリの状態についてアンドロイドの現在の充電状態を検出する方法

答えて

0

をあなたはオンデマンドでバッテリーの状態をチェックすることができます。

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


int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1); 
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || 
       status == BatteryManager.BATTERY_STATUS_FULL; 


int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); 
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB; 
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;` 

またはBroadcastReceiverを使用して:

<receiver android:name=".PowerConnectionReceiver"> 
    <intent-filter> 
    <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/> 
    <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/> 
    </intent-filter> 
</receiver> 

コード:

public class PowerConnectionReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1); 
    boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || 
         status == BatteryManager.BATTERY_STATUS_FULL; 
    int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); 
    boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB; 
    boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC; 
} 
} 

WIFIのプログラム的に有効にするために - あなたが権限を定義する必要があり

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> 

でそれを設定するには:それをオフに設定するには

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
wifi.setWifiEnabled(true); 

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
wifi.setWifiEnabled(false); 
+0

しかし、どうすればバックグラウンドで繰り返し確認できますか? – Farshan

+0

こんにちは、私はあなたがすべての情報を持っていると信じています。たとえば、放送受信機からusbChargeステータスをチェックして情報を取得するか、またはオンデマンドの例でusbChargeを返す関数を作ります。 –

0

の場合デバイスが充電中であることを示すことができる下の機能を呼び出します。あなたが必要なタスクを実行するためにそれを使用することができます(これは、有線と無線の両方の充電のために動作します)

public static boolean isPlugged(Context context) { 
boolean isPlugged= false; 
Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 
int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); 
isPlugged = plugged == BatteryManager.BATTERY_PLUGGED_AC || plugged == BatteryManager.BATTERY_PLUGGED_USB; 
if (VERSION.SDK_INT > VERSION_CODES.JELLY_BEAN) { 
    isPlugged = isPlugged || plugged == BatteryManager.BATTERY_PLUGGED_WIRELESS; 
} 
return isPlugged; 
} 

を詳しくvisit the Android Dev site hereについて。

+0

私はこれをバックグラウンドで使用できますか?また、私はそれを繰り返し確認したい。プラグインの瞬間に充電状態を検出する必要があります。 – Farshan

+0

自分で試してみるべきです –

関連する問題