[原]android 中如何飞行模式的几个操作

  • Android中如何判断系统当前是否处于飞行模式中:

 

public static boolean IsAirModeOn(Context context) {
		return (Settings.System.getInt(context.getContentResolver(),
				Settings.System.AIRPLANE_MODE_ON, 0) == 1 ? true : false);
	}
  • 如何切换飞行模式

 

public static void setAirplaneMode(Context context, boolean enabling) {
		Settings.System.putInt(context.getContentResolver(),
				Settings.System.AIRPLANE_MODE_ON, enabling ? 1 : 0);
		Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
		intent.putExtra("state", enabling);
		context.sendBroadcast(intent);
	}

 

  • 如何注册和取消自动飞行时间

 

注册

 

AlarmManager am = (AlarmManager) context
			.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(AIR_ALERT_ACTION);
	Parcel out = Parcel.obtain();
	air.writeToParcel(out, 0);
	out.setDataPosition(0);
	intent.putExtra(AIR_RAW_DATA, out.marshall());
	PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent,
			PendingIntent.FLAG_CANCEL_CURRENT);
am.set(AlarmManager.RTC_WAKEUP, atTimeInMillis, sender);

取消

 

AlarmManager am = (AlarmManager) context
				.getSystemService(Context.ALARM_SERVICE);
	endingIntent sender = PendingIntent.getBroadcast(context, 0,
				new Intent(action), PendingIntent.FLAG_CANCEL_CURRENT);
am.cancel(sender);
  •  如何控制切换飞行模式的硬件(cell,Bluetooth,wifi)

     

    Settings.System.putString(context.getContentResolver(),
    				Settings.System.AIRPLANE_MODE_RADIOS, air_mode_radios);
    air_mode_radios为一个这样的字符串,看android源码中android/provider/Settings.java
    	
    /***
             * Whether Airplane Mode is on.
             */
            public static final String AIRPLANE_MODE_ON = "airplane_mode_on";
            /***
             * Constant for use in AIRPLANE_MODE_RADIOS to specify Bluetooth radio.
             */
            public static final String RADIO_BLUETOOTH = "bluetooth";
            /***
             * Constant for use in AIRPLANE_MODE_RADIOS to specify Wi-Fi radio.
             */
            public static final String RADIO_WIFI = "wifi";
            /***
             * Constant for use in AIRPLANE_MODE_RADIOS to specify Cellular radio.
             */
            public static final String RADIO_CELL = "cell";
            /***
             * A comma separated list of radios that need to be disabled when airplane mode
             * is on. This overrides WIFI_ON and BLUETOOTH_ON, if Wi-Fi and bluetooth are
             * included in the comma separated list.
             */
            public static final String AIRPLANE_MODE_RADIOS = "airplane_mode_radios";
            /***
             * A comma separated list of radios that should to be disabled when airplane mode
             * is on, but can be manually reenabled by the user.  For example, if RADIO_WIFI is
             * added to both AIRPLANE_MODE_RADIOS and AIRPLANE_MODE_TOGGLEABLE_RADIOS, then Wifi
             * will be turned off when entering airplane mode, but the user will be able to reenable
             * Wifi in the Settings app.
             *
             * {@hide}
             */
            public static final String AIRPLANE_MODE_TOGGLEABLE_RADIOS = "airplane_mode_toggleable_radios";
    如果air_mode_radios=“cell,bluetooth,wifi”,这就便是切换飞行模式是切换字符串中的这cell,bluetooth,wifi硬件,我们可以通过设置该字符串的值,来控制这三个硬件是否在切换飞行模式是进行切换状态。

     


 

 

 



 

 

作者:wjh200821 发表于2012-3-15 20:02:02 原文链接
阅读:41 评论:0 查看评论

posted on 2012-03-15 20:02  tilltheendwjx  阅读(910)  评论(0编辑  收藏  举报

导航