Вы можете использовать широковещательный приемник, если питание подключено или нет, и выполните свои действия соответствующим образом.
Для подключенного питания:
public class PowerConnected extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if(intent.getAction().equalsIgnoreCase("android.intent.action.ACTION_POWER_CONNECTED")){
//Initialize your listener here...
}
}
}
В файле манифеста:
<receiver android:name=".receiver.PowerConnected" >
<intent-filter >
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
</intent-filter>
</receiver>
Когда питание отключено:
public class PowerDisconnected extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equalsIgnoreCase("android.intent.action.ACTION_POWER_DISCONNECTED")){
//Do your task here...
}
}
}
В вашем файле манифеста:
<receiver android:name=".receiver.PowerDisconnected" >
<intent-filter >
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
</intent-filter>
</receiver>
Теперь вы должны использовать service
и инициализируйте свой GPS там.Когда питание подключено, используйте GPS_Provider
, в противном случае используйте network provider
. Используйте wakelock
, если необходимо.