2013.12.10 监听屏幕解锁事件 Intent再学习 wifi,mobile 关闭开启

1,操作系统是硬件和应用程序之间的一个桥梁。通过os,app可以调用硬件的功能(接打电话,照相,游戏),而os也及时的将硬件状态的变化提供给app。android系统通过广播来告知系统硬件状态的变化,不同Action代表了不同的广播。

我的编程之路始于android,但我觉得我该走出android看编程了。

2, Intent再学习

 监听屏幕解锁事件:可用来启动服务,show welcome dialog,

只需要监听 android.intent.action.USER_PRESENT(用户按下电源键点亮屏幕的行为) 即可,清单文件注册或者代码注册都可以

监听屏幕on、off事件:

需要在代码中注册监听,监听Intent.ACTION_SCREEN_OFF、Intent.ACTION_SCREEN_On 即可。

监听网络状态变化事件:

监听 android.net.conn.CONNECTIVITY_CHANGE (好像新版本sdk提供不同的action了)

监听时间变化事件:

Intent.ACTION_TIME_CHANGED  设置时间

Intent.ACTION_TIME_TICK 时间自然流逝 需要在代码中注册


Intent起着实现调用者与被调用者之间的解耦作用

3,android 流量监控 

TrafficStats

http://developer.android.com/reference/android/net/TrafficStats.html

4,wifi,mobile data 关闭开启

/**
	 * <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >
	 * @date 2013-12-10 下午6:57:15
	 */
	private void wifiSwitch(boolean on_off){
		WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
		wifi.setWifiEnabled(on_off);
		
		ConnectivityManager conn = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
	}
	
	/**
	 * For Android 2.3 and above
	 *  <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
	 * @date 2013-12-10 下午6:47:07
	 */
	private boolean mobileDataSwitch(Context context, boolean enabled){
		boolean result = true;
		    final ConnectivityManager conman = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
		    Class conmanClass;
			try {
				conmanClass = Class.forName(conman.getClass().getName());
				final Field iConnectivityManagerField = conmanClass.getDeclaredField("mService");
				iConnectivityManagerField.setAccessible(true);
				final Object iConnectivityManager = iConnectivityManagerField.get(conman);
				final Class iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName());
				final Method setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
				setMobileDataEnabledMethod.setAccessible(true);
				
				setMobileDataEnabledMethod.invoke(iConnectivityManager, enabled);
			} catch (Exception e) {
				Log.i(TAG, "mobileDataSwitch:"+e.getMessage());
				result = false;
			}
			
			return result;
	}
	



5,

你可能感兴趣的:(2013.12.10 监听屏幕解锁事件 Intent再学习 wifi,mobile 关闭开启)