Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android WIFI定位

android WIFI定位

編輯:關於Android編程

      WIFI定位其實和基站定位都差不多,只需要把WIFI的MAC地址取到傳給google就行了,下面是具體實現!

[java]
import java.io.Serializable; 
 
import android.content.Context; 
import android.net.wifi.WifiManager; 
import android.util.Log; 
 
/**
 * @author yangzhiqiang
 * 
 */ 
public class WiFiInfoManager implements Serializable { 
 
    /**
     * 
     */ 
    private static final long serialVersionUID = -4582739827003032383L; 
 
    private Context context; 
 
    public WiFiInfoManager(Context context) { 
        super(); 
        this.context = context; 
    } 
 
    public WifiInfo getWifiInfo() { 
        WifiManager manager = (WifiManager) context 
                .getSystemService(Context.WIFI_SERVICE); 
        WifiInfo info = new WifiInfo(); 
        info.mac = manager.getConnectionInfo().getBSSID(); 
        Log.i("TAG", "WIFI MAC is:" + info.mac); 
        return info; 
    } 
 
    public class WifiInfo { 
 
        public String mac; 
 
        public WifiInfo() { 
            super(); 
        } 
    } 
 

上面是取到WIFI的mac地址的方法,下面是把地址發送給google服務器,代碼如下:

[java] 
public static Location getWIFILocation(WifiInfo wifi) { 
        if (wifi == null) { 
            Log.i("TAG", "wifi is null."); 
            return null; 
        } 
        DefaultHttpClient client = new DefaultHttpClient(); 
        HttpPost post = new HttpPost("http://www.google.com/loc/json"); 
        JSONObject holder = new JSONObject(); 
        try { 
            holder.put("version", "1.1.0"); 
            holder.put("host", "maps.google.com"); 
 
            JSONObject data; 
            JSONArray array = new JSONArray(); 
            if (wifi.mac != null && wifi.mac.trim().length() > 0) { 
                data = new JSONObject(); 
                data.put("mac_address", wifi.mac); 
                data.put("signal_strength", 8); 
                data.put("age", 0); 
                array.put(data); 
            } 
            holder.put("wifi_towers", array); 
            Log.i("TAG", "request json:" + holder.toString()); 
            StringEntity se = new StringEntity(holder.toString()); 
            post.setEntity(se); 
            HttpResponse resp = client.execute(post); 
            int state = resp.getStatusLine().getStatusCode(); 
            if (state == HttpStatus.SC_OK) { 
                HttpEntity entity = resp.getEntity(); 
                if (entity != null) { 
                    BufferedReader br = new BufferedReader( 
                            new InputStreamReader(entity.getContent())); 
                    StringBuffer sb = new StringBuffer(); 
                    String resute = ""; 
                    while ((resute = br.readLine()) != null) { 
                        sb.append(resute); 
                    } 
                    br.close(); 
 
                    Log.i("TAG", "response json:" + sb.toString()); 
                    data = new JSONObject(sb.toString()); 
                    data = (JSONObject) data.get("location"); 
 
                    Location loc = new Location( 
                            android.location.LocationManager.NETWORK_PROVIDER); 
                    loc.setLatitude((Double) data.get("latitude")); 
                    loc.setLongitude((Double) data.get("longitude")); 
                    loc.setAccuracy(Float.parseFloat(data.get("accuracy") 
                            .toString())); 
                    loc.setTime(System.currentTimeMillis()); 
                    return loc; 
                } else { 
                    return null; 
                } 
            } else { 
                Log.v("TAG", state + ""); 
                return null; 
            } 
 
        } catch (Exception e) { 
            Log.e("TAG", e.getMessage()); 
            return null; 
        } 
    } 
 


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved