我正在制作一个小项目,如果电池电量低于30%,我将设置wifi禁用。但如果用户再次启用wifi,我希望它不能再次禁用。 我在服务课上完成了这整个工作 我用的代码是...... 请提出任何建议。你的建议对我很有价值。
public class BatteryService extends Service
boolean checkwifi;
WifiManager mainWifi;
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
checkwifi = true;
mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
}
if (level <= 30 && !isCharging) {
tts.speak(" Battery LOw Connect Phone to Charger",
TextToSpeech.QUEUE_FLUSH, null);
if (checkwifi) {
mainWifi.setWifiEnabled(false);
bt.disable();
closemobiledata();
checkwifi = false;
}
}
更新1:
我发现了问题,问题是服务一次又一次地开始 该怎么做才能使服务不能一次又一次地开始
public class BatteryService extends Service
boolean checkwifi;
WifiManager mainWifi;
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
Toast.makeText(getApplicationContext(), "Service created", Toast.LENGTH_SHORT).show();
checkwifi = true;
mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
}
if (level <= 30 && !isCharging) {
tts.speak(" Battery LOw Connect Phone to Charger",
TextToSpeech.QUEUE_FLUSH, null);
if (checkwifi) {
mainWifi.setWifiEnabled(false);
bt.disable();
closemobiledata();
checkwifi = false;
}
}
答案 0 :(得分:0)
为android.net.wifi.WIFI_STATE_CHANGED
事件创建接收器。如果禁用后激活了wifi,请使用SharedPreferences将userEnabledWifi
设置为true
。在您的服务中,在禁用wifi之前检查userEnabledWifi
。如果电池电量高于%30,请再次将userEnabledWifi
重置为false
,以便在电池再次低于%30时禁用无线网络。
答案 1 :(得分:0)
区别是什么?您应该能够在服务中为电池事件注册接收器,就像对活动一样。例如:
private final BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent intent) {
int rawLevel = intent.getIntExtra("level", -1);
int scale = intent.getIntExtra("scale", -1);
int status = intent.getIntExtra("status", -1);
if (rawLevel <= 30 && !isCharging) {
tts.speak(" Battery LOw Connect Phone to Charger",
TextToSpeech.QUEUE_FLUSH, null);
if (checkwifi) {
mainWifi.setWifiEnabled(false);
bt.disable();
closemobiledata();
checkwifi = false;
}
// Do something
}
};
public void onCreate() {
registerReceiver(this.mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}
public void onDestroy() {
unregisterReceiver(this.mBatInfoReceiver);
}