編輯:關於Android編程
我們項目現在改登錄流程,是在wifi或者數據連接開啟並且連接到網絡的時候,來後台自動注冊和登錄賬戶。這樣好像可以增加用戶數。
我的實現,是通過廣播BroadCastReciver觸發器組件來實現,在項目中,為了全局性,實在服務中注冊的,測出的demo只是在應用中的,原理都一樣,只是注冊的地方不同而已。
代碼如下:
package com.example.netlistener;
import android.net.ConnectivityManager;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.IntentFilter;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BroadcastReceiver receiver=new NetBroadCastReciver();
//注冊BroadCastReciver,設置監聽的頻道。就是filter中的
IntentFilter filter=new IntentFilter();
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(receiver, filter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
package com.example.netlistener;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiManager;
import android.os.Parcelable;
import android.util.Log;
public class NetBroadCastReciver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
//判斷wifi是打開還是關閉
if(WifiManager.WIFI_STATE_CHANGED_ACTION.equals(intent.getAction())){ //此處無實際作用,只是看開關是否開啟
int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);
switch (wifiState) {
case WifiManager.WIFI_STATE_DISABLED:
break;
case WifiManager.WIFI_STATE_DISABLING:
break;
}
}
//此處是主要代碼,
//如果是在開啟wifi連接和有網絡狀態下
if(ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())){
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
if(NetworkInfo.State.CONNECTED==info.getState()){
//連接狀態
Log.e("pzf", "有網絡連接");
//執行後續代碼
//new AutoRegisterAndLogin().execute((String)null);
//ps:由於boradCastReciver觸發器組件,他和Service服務一樣,都是在主線程的,所以,如果你的後續操作是耗時的操作,請new Thread獲得AsyncTask等,進行異步操作
}else{
Log.e("pzf", "無網絡連接");
}
}
}
}
源碼地址:
http://download.csdn.net/detail/pangzaifei/6938315
Android的多媒體管理庫Glide的基本使用示例
Glide 是一個android平台上的快速和高效的開源的多媒體資源管理庫, 提供 多媒體文件的壓縮,內存和磁盤緩存, 資源池的接口。Glide 支持獲取,解壓展示視頻,
Android實現3D旋轉的View
今天在網上看到一篇文章寫關於Android實現3D旋轉(http://www.ibm.com/developerworks/cn/opensource/os-cn-and
Android百度地圖應用之基本地圖功能實現
一、簡介 1、地圖 地圖展示:普通地圖(2D,3D)、衛星圖和實時交通圖。 地圖操作:可通過接口或手勢控制來實現地圖的點擊、雙擊、長按、縮放
Android使用AIDL實現進程間通信
為使應用程序之間能夠彼此通信,Android提供了IPC (Inter Process Communication,進程間通信)的一種獨特實現: AIDL (Androi