public class WifiAlarmReceiver extends BroadcastReceiver{
public static Context senderContext;
public WifiAlarmReceiver()
{
Log.i("AlarmReceiver.AlarmReceiver()", Calendar.getInstance().getTime().toLocaleString());
Log.i("AlarmReceiver.AlarmReceiver() -> pid", String.valueOf(android.os.Process.myPid()));
Log.i("AlarmReceiver.AlarmReceiver() -> tid", String.valueOf(android.os.Process.myTid()));
}
public void onReceive(Context context, Intent intent) {
SharedPreferences data=context.getSharedPreferences(FlightAndWifiActivity.FLIGHT_WIFI_NAME,0);
boolean isWifiOn=data.getBoolean(FlightAndWifiActivity.IS_WIFI_ON,FlightAndWifiActivity.DEFAULT_IS_ON);
if(isWifiOn){
closeWifi(senderContext);
}else{
openWifi(senderContext);
//showToast(senderContext,"onReceive(), openWifi trunk");
Log.i("TAG","onReceive(), openWifi trunk");
}
}
private void openWifi(Context context){
boolean isOn=false;
WifiManager mWifiManager=(WifiManager)context.getSystemService(Context.WIFI_SERVICE);
// showToast(senderContext,"openWifi trunk. "+mWifiManager.getWifiState());
try{
if(!mWifiManager.isWifiEnabled() && mWifiManager.getWifiState()!= WifiManager.WIFI_STATE_ENABLING){
if(mWifiManager.setWifiEnabled(true)){
switch(mWifiManager.getWifiState()){
case WifiManager.WIFI_STATE_ENABLING:
showToast(context,context.getResources().getString(R.string.wifi_enabling));
isOn=true;
break;
case WifiManager.WIFI_STATE_ENABLED:
showToast(context,context.getResources().getString(R.string.wifi_open_success));
isOn=true;
break;
default:
showToast(context,context.getResources().getString(R.string.wifi_open_fail)+":"+context.getResources().getString(R.string.wifi_unknow));
break;
}
}else{
showToast(context,context.getResources().getString(R.string.wifi_open_fail));
}
}else{
// showToast(senderContext,"openWifi(),fffff");
// mChkWifi.setChecked(false);
switch(mWifiManager.getWifiState()){
case WifiManager.WIFI_STATE_ENABLING:
showToast(context,context.getResources().getString(R.string.wifi_open_fail)+":"+context.getResources().getString(R.string.wifi_enabling));
break;
case WifiManager.WIFI_STATE_DISABLING:
showToast(context,context.getResources().getString(R.string.wifi_open_fail)+":"+context.getResources().getString(R.string.wifi_disabling));
break;
case WifiManager.WIFI_STATE_ENABLED:
showToast(context,context.getResources().getString(R.string.wifi_open_fail)+":"+context.getResources().getString(R.string.wifi_enabled));
isOn=true;
break;
case WifiManager.WIFI_STATE_DISABLED:
showToast(context,context.getResources().getString(R.string.wifi_open_fail)+":"+context.getResources().getString(R.string.wifi_disabled));
break;
case WifiManager.WIFI_STATE_UNKNOWN:
default:
showToast(context,context.getResources().getString(R.string.wifi_open_fail)+":"+context.getResources().getString(R.string.wifi_unknow));
break;
}
}
}catch(Exception ex){
ex.printStackTrace();
}
if(isOn){
Editor edit=context.getSharedPreferences(FlightAndWifiActivity.FLIGHT_WIFI_NAME,0).edit();
edit.putBoolean(FlightAndWifiActivity.IS_WIFI_ON, true);
edit.commit();
}else{
}
}
private void closeWifi(Context context){
boolean isOff=false;
WifiManager mWifiManager=(WifiManager)context.getSystemService(Context.WIFI_SERVICE);
try{
if(mWifiManager.isWifiEnabled()){ //如果wifi已經開啟,則可以關閉
if(mWifiManager.setWifiEnabled(false)){
showToast(context,context.getResources().getString(R.string.wifi_close_success));
isOff=true;
}else{
showToast(context,context.getResources().getString(R.string.wifi_close_fail));
}
}else{
switch(mWifiManager.getWifiState()){
case WifiManager.WIFI_STATE_ENABLING:
showToast(context,context.getResources().getString(R.string.wifi_close_fail)+":"+context.getResources().getString(R.string.wifi_disabling));
break;
case WifiManager.WIFI_STATE_DISABLING:
showToast(context,context.getResources().getString(R.string.wifi_close_fail)+":"+context.getResources().getString(R.string.wifi_disabling));
break;
case WifiManager.WIFI_STATE_DISABLED:
showToast(context,context.getResources().getString(R.string.wifi_close_fail)+":"+context.getResources().getString(R.string.wifi_disabled));
// isOff=true;
break;
case WifiManager.WIFI_STATE_UNKNOWN:
default:
showToast(context,context.getResources().getString(R.string.wifi_close_fail)+":"+context.getResources().getString(R.string.wifi_unknow));
break;
}
}
}catch(Exception ex){
ex.printStackTrace();
}
if(isOff){
SharedPreferences data=context.getSharedPreferences(FlightAndWifiActivity.FLIGHT_WIFI_NAME,0);
int timesLeft=data.getInt(FlightAndWifiActivity.WIFI_TIMES_LEFT, FlightAndWifiActivity.DEFAULT_EDITTEXT_VALUE);
timesLeft--;
Editor edit=data.edit();
edit.putBoolean(FlightAndWifiActivity.IS_WIFI_ON, false);
edit.putInt(FlightAndWifiActivity.WIFI_TIMES_LEFT,timesLeft);
edit.commit();
Intent intent=new Intent(FlightAndWifiActivity.ACTION_UPDATE_WIFI_TIMESLEFT);
context.sendBroadcast(intent);
}else{
}
}
private void showToast(Context context,String msg){
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
}
}