工作中遇到的问题要注意总结,我在工作中遇到了问题,现在抽空简单整理一下;
第一个问题:判断手机当前上网用的是sim卡还是wifi,我写了一个封装的方法,以后可以拿来用:
[java] view plain copy print ?
-
-
-
-
-
-
- private boolean checkWifi() {
- boolean isWifiConnect = true;
- ConnectivityManager cm = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
/** * check the internet is * mobile or wifi * add by wangxianming * in 2012-03-22 */ private boolean checkWifi() { boolean isWifiConnect = true; ConnectivityManager cm = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
[java] view plain copy print ?
-
- NetworkInfo[] networkInfos = cm.getAllNetworkInfo();
- for (int i = 0; i<networkInfos.length; i++) {
- if (networkInfos[i].getState() == NetworkInfo.State.CONNECTED) {
- if(networkInfos[i].getType() == cm.TYPE_MOBILE) {
- isWifiConnect = false;
- }
- if(networkInfos[i].getType() == cm.TYPE_WIFI) {
- isWifiConnect = true;
- }
- }
- }
- return isWifiConnect;
//check the networkInfos numbers NetworkInfo[] networkInfos = cm.getAllNetworkInfo(); for (int i = 0; i<networkInfos.length; i++) { if (networkInfos[i].getState() == NetworkInfo.State.CONNECTED) { if(networkInfos[i].getType() == cm.TYPE_MOBILE) { isWifiConnect = false; } if(networkInfos[i].getType() == cm.TYPE_WIFI) { isWifiConnect = true; } } } return isWifiConnect; }
第二个例子:判断当前的手机屏幕是否开启了旋转屏幕这个选项:
[java] view plain copy print ?
-
-
-
-
-
-
-
-
-
-
-
- systemGravity = Settings.System.getInt(this
- .getContentResolver(),
- Settings.System.ACCELEROMETER_ROTATION);
/** * ACCELEROMETER_ROTATION---->explain: * * Control whether the accelerometer will be * used to change screen orientation. * If 0, it will not be used unless explicitly * requested by the application; * if 1, it will be used by default * unless explicitly disabled by the application. * Constant Value: "accelerometer_rotation" */ systemGravity = Settings.System.getInt(this .getContentResolver(), Settings.System.ACCELEROMETER_ROTATION);//1 is open;0 is close;
第三个是在代码中注册监听内存卡状态的广播:
[java] view plain copy print ?
- IntentFilter intentFilter=new IntentFilter);
- intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
- intentFilter.addAction(Intent.ACTION_MEDIA_EJECT);
- intentFilter.addAction(Intent.ACTION_MEDIA_REMOVED);
- intentFilter.addAction(Intent.ACTION_MEDIA_BAD_REMOVAL);
- registerReceiver(sdcardListener,intentFilter);
IntentFilter intentFilter=new IntentFilter); intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED); intentFilter.addAction(Intent.ACTION_MEDIA_EJECT); intentFilter.addAction(Intent.ACTION_MEDIA_REMOVED); intentFilter.addAction(Intent.ACTION_MEDIA_BAD_REMOVAL); registerReceiver(sdcardListener,intentFilter);
有registerReceiver()注册广播,就有unregisterReceiver()方法,他们是成对出现的。
如果在onCreate()方法中注册广播,就在onDestroy()方法中释放。
如果在onResume()方法中注册广播,就在onPause()方法中释放。
在代码中写个内部类的广播:
[java] view plain copy print ?
- <span style="font-size:16px;color:#000000;">private final BroadcastReceiver sdcardListener=new BroadcastReceiver() {
-
- public void onReceive(Context context, Intent intent) {
- Toast.makeText(SummaryAppMainActivityActivity.this, R.string.sd_removed, 2000).show();
- }
- };</span>
<span style="font-size:16px;color:#000000;">private final BroadcastReceiver sdcardListener=new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { Toast.makeText(SummaryAppMainActivityActivity.this, R.string.sd_removed, 2000).show(); } };</span>
第四个是全屏的设置:写一个简单的方法中;
[java] view plain copy print ?
- <span style="font-size:16px;color:#000000;">
- private void setFullScreen() {
- misFullscreen = !misFullscreen;
- if (misFullscreen) {
- getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
- WindowManager.LayoutParams.FLAG_FULLSCREEN);
- } else {
- getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
- }
- }</span>
- <span style="color:#ff6600;"><strong><span style="font-size:18px;">今天先整理这么少吧,抽空把知识串联一下!呵呵,睡觉了,下次见!
- 今天参加移动语音开发者大会,见到了柳传志和李开复雷军没有到场,有点遗憾。呵呵,有点收获,听了他们现场的访谈!
- </span>
- </strong></span>
判断网络是否可用
在Android手机中判断是否联网可以通过 ConnectivityManager 类的isAvailable()方法判断,首先获取网络通讯类的实例
ConnectivityManager cwjManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cwjManager.getActiveNetworkInfo();
if (info != null && info.isAvailable()){
//do something
}
来返回是否有效,如果为True则表示当前Android手机已经联网,可能是WiFi或GPRS、HSDPA等等,具体的可以通过ConnectivityManager 类的getActiveNetworkInfo() 方法判断详细的接入方式,需要注意的是有关调用需要加入网络访问权限