`
ming_fanglin
  • 浏览: 224927 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

gps、wifi、基站定位

阅读更多
集合了gps、wifi、基站定位。
其中GPS定位首先是GpsTask类异步返回GPS经纬度信息
01.GpsTask gpstask = new GpsTask(GpsActivity.this,new GpsTaskCallBack() {                        @Override                        

02.public void gpsConnectedTimeOut() {                            

03.gps_tip.setText("获取GPS超时了");                        

04.}                        

05.@Override                        

06.public void gpsConnected(GpsData gpsdata) {                            

07.do_gps(gpsdata);                        

08.}                    

09.}, 3000);           

10.gpstask.execute();
其中3000是设置获取gps数据timeout时间。GpsTask是根据
01.locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
获取最后一次GPS信息,如果返回为Null则是根据监听获取Location信息发生改变时返回的GPS信息。因为手机获取GPS信息时间比较长,所以这个类实际使用时可能还存在一些BUG。
IAddressTask封装了获取地理位置的方法,具体代码如下:
01.package com.maxtech.common.gps;

02.

03.import java.io.BufferedReader;

04.import java.io.InputStreamReader;

05.import org.apache.http.HttpEntity;

06.import org.apache.http.HttpResponse;

07.import org.json.JSONArray;

08.import org.json.JSONObject;

09.import android.app.Activity;

10.import android.content.Context;

11.import android.net.wifi.WifiManager;

12.import android.telephony.TelephonyManager;

13.import android.telephony.gsm.GsmCellLocation;

14.

15.public abstract class IAddressTask {

16.        protected Activity context;

17.

18.        public IAddressTask(Activity context) {

19.                this.context = context;

20.        }

21.

22.        public abstract HttpResponse execute(JSONObject params) throws Exception;

23.

24.        public MLocation doWifiPost() throws Exception {

25.                return transResponse(execute(doWifi()));

26.        }

27.

28.        public MLocation doApnPost() throws Exception {

29.                return transResponse(execute(doApn()));

30.        }

31.

32.        public MLocation doGpsPost(double lat, double lng) throws Exception {

33.                return transResponse(execute(doGps(lat, lng)));

34.        }

35.

36.        private MLocation transResponse(HttpResponse response) {

37.                MLocation location = null;

38.                if (response.getStatusLine().getStatusCode() == 200) {

39.                        location = new MLocation();

40.                        HttpEntity entity = response.getEntity();

41.                        BufferedReader br;

42.                        try {

43.                                br = new BufferedReader(new InputStreamReader(

44.                                                entity.getContent()));

45.                                StringBuffer sb = new StringBuffer();

46.                                String result = br.readLine();

47.                                while (result != null) {

48.                                        sb.append(result);

49.                                        result = br.readLine();

50.                                }

51.                                JSONObject json = new JSONObject(sb.toString());

52.                                JSONObject lca = json.getJSONObject("location");

53.                                location.Access_token = json.getString("access_token");

54.                                if (lca != null) {

55.                                        if (lca.has("accuracy"))

56.                                                location.Accuracy = lca.getString("accuracy");

57.                                        if (lca.has("longitude"))

58.                                                location.Latitude = lca.getDouble("longitude");

59.                                        if (lca.has("latitude"))

60.                                                location.Longitude = lca.getDouble("latitude");

61.                                        if (lca.has("address")) {

62.                                                JSONObject address = lca.getJSONObject("address");

63.                                                if (address != null) {

64.                                                        if (address.has("region"))

65.                                                                location.Region = address.getString("region");

66.                                                        if (address.has("street_number"))

67.                                                                location.Street_number = address

68.                                                                                .getString("street_number");

69.                                                        if (address.has("country_code"))

70.                                                                location.Country_code = address

71.                                                                                .getString("country_code");

72.                                                        if (address.has("street"))

73.                                                                location.Street = address.getString("street");

74.                                                        if (address.has("city"))

75.                                                                location.City = address.getString("city");

76.                                                        if (address.has("country"))

77.                                                                location.Country = address.getString("country");

78.                                                }

79.                                        }

80.                                }

81.                        } catch (Exception e) {

82.                                e.printStackTrace();

83.                                location = null;

84.                        }

85.                }

86.                return location;

87.        }

88.

89.        private JSONObject doGps(double lat, double lng) throws Exception {

90.                JSONObject holder = new JSONObject();

91.                holder.put("version", "1.1.0");

92.                holder.put("host", "maps.google.com");

93.                holder.put("address_language", "zh_CN");

94.                holder.put("request_address", true);

95.                JSONObject data = new JSONObject();

96.                data.put("latitude", lat);

97.                data.put("longitude", lng);

98.                holder.put("location", data);

99.                return holder;

100.        }

101.

102.        private JSONObject doApn() throws Exception {

103.                JSONObject holder = new JSONObject();

104.                holder.put("version", "1.1.0");

105.                holder.put("host", "maps.google.com");

106.                holder.put("address_language", "zh_CN");

107.                holder.put("request_address", true);

108.                TelephonyManager tm = (TelephonyManager) context

109.                                .getSystemService(Context.TELEPHONY_SERVICE);

110.                GsmCellLocation gcl = (GsmCellLocation) tm.getCellLocation();

111.                int cid = gcl.getCid();

112.                int lac = gcl.getLac();

113.                int mcc = Integer.valueOf(tm.getNetworkOperator().substring(0, 3));

114.                int mnc = Integer.valueOf(tm.getNetworkOperator().substring(3, 5));

115.                JSONArray array = new JSONArray();

116.                JSONObject data = new JSONObject();

117.                data.put("cell_id", cid);

118.                data.put("location_area_code", lac);

119.                data.put("mobile_country_code", mcc);

120.                data.put("mobile_network_code", mnc);

121.                array.put(data);

122.                holder.put("cell_towers", array);

123.                return holder;

124.        }

125.

126.        private JSONObject doWifi() throws Exception {
        JSONObject holder = new JSONObject();        holder.put("version", "1.1.0");        holder.put("host", "maps.google.com");        holder.put("address_language", "zh_CN");        holder.put("request_address", true);                WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);                if(wifiManager.getConnectionInfo().getBSSID() == null) {            throw new RuntimeException("bssid is null");        }                JSONArray array = new JSONArray();        JSONObject data = new JSONObject();        data.put("mac_address", wifiManager.getConnectionInfo().getBSSID());          data.put("signal_strength", 8);          data.put("age", 0);          array.put(data);        holder.put("wifi_towers", array);                return holder;    }        public static class MLocation {

127.                public String Access_token;

128.                public double Latitude;

129.                public double Longitude;

130.                public String Accuracy;

131.                public String Region;

132.                public String Street_number;

133.                public String Country_code;

134.                public String Street;

135.                public String City;

136.                public String Country;

137.

138.                @Override

139.                public String toString() {

140.                        StringBuffer buffer = new StringBuffer();

141.                        buffer.append("Access_token:" + Access_token + "\n");

142.                        buffer.append("Region:" + Region + "\n");

143.                        buffer.append("Accuracy:" + Accuracy + "\n");

144.                        buffer.append("Latitude:" + Latitude + "\n");

145.                        buffer.append("Longitude:" + Longitude + "\n");

146.                        buffer.append("Country_code:" + Country_code + "\n");

147.                        buffer.append("Country:" + Country + "\n");

148.                        buffer.append("City:" + City + "\n");

149.                        buffer.append("Street:" + Street + "\n");

150.                        buffer.append("Street_number:" + Street_number + "\n");

151.                        return buffer.toString();

152.                }

153.        }

154.}


01.package com.maxtech.common;

02.

03.import com.maxtech.common.gps.GpsTask;

04.import com.maxtech.common.gps.GpsTaskCallBack;

05.import com.maxtech.common.gps.GpsTask.GpsData;

06.import com.maxtech.common.gps.IAddressTask.MLocation;

07.import android.app.Activity;

08.import android.app.AlertDialog;

09.import android.app.ProgressDialog;

10.import android.os.AsyncTask;

11.import android.os.Bundle;

12.import android.util.Log;

13.import android.view.View;

14.import android.view.View.OnClickListener;

15.import android.widget.TextView;

16.

17.public class GpsActivity extends Activity implements OnClickListener {

18.        private TextView gps_tip = null;

19.        private AlertDialog dialog = null;

20.

21.        @Override

22.        public void onCreate(Bundle savedInstanceState) {

23.                super.onCreate(savedInstanceState);

24.                setContentView(R.layout.main);

25.                gps_tip = (TextView) findViewById(R.id.gps_tip);

26.                findViewById(R.id.do_gps).setOnClickListener(GpsActivity.this);

27.                findViewById(R.id.do_apn).setOnClickListener(GpsActivity.this);

28.                findViewById(R.id.do_wifi).setOnClickListener(GpsActivity.this);

29.                dialog = new ProgressDialog(GpsActivity.this);

30.                dialog.setTitle("请稍等...");

31.                dialog.setMessage("正在定位...");

32.        }

33.

34.        @SuppressWarnings("unchecked")

35.        @Override

36.        public void onClick(View v) {

37.                gps_tip.setText("");

38.                switch (v.getId()) {

39.                case R.id.do_apn:

40.                        do_apn();

41.                        break;

42.                case R.id.do_gps:

43.                        GpsTask gpstask = new GpsTask(GpsActivity.this,

44.                                        new GpsTaskCallBack() {

45.                                                @Override

46.                                                public void gpsConnectedTimeOut() {

47.                                                        gps_tip.setText("获取GPS超时了");

48.                                                }

49.

50.                                                @Override

51.                                                public void gpsConnected(GpsData gpsdata) {

52.                                                        do_gps(gpsdata);

53.                                                }

54.                                        }, 3000);

55.                        gpstask.execute();

56.                        break;

57.                case R.id.do_wifi:

58.                        do_wifi();

59.                        break;

60.                }

61.        }

62.

63.        private void do_apn() {

64.                new AsyncTask<Void, Void, String>() {

65.                        @Override

66.                        protected String doInBackground(Void... params) {

67.                                MLocation location = null;

68.                                try {

69.                                        location = new AddressTask(GpsActivity.this,

70.                                                        AddressTask.DO_APN).doApnPost();

71.                                } catch (Exception e) {

72.                                        e.printStackTrace();

73.                                }

74.                                if (location == null)

75.                                        return null;

76.                                return location.toString();

77.                        }

78.

79.                        @Override

80.                        protected void onPreExecute() {

81.                                dialog.show();

82.                                super.onPreExecute();

83.                        }

84.

85.                        @Override

86.                        protected void onPostExecute(String result) {

87.                                if (result == null) {

88.                                        gps_tip.setText("基站定位失败了...");

89.                                } else {

90.                                        gps_tip.setText(result);

91.                                }

92.                                dialog.dismiss();

93.                                super.onPostExecute(result);

94.                        }

95.                }.execute();

96.        }

97.

98.        private void do_gps(final GpsData gpsdata) {

99.                new AsyncTask<Void, Void, String>() {

100.                        @Override

101.                        protected String doInBackground(Void... params) {

102.                                MLocation location = null;

103.                                try {

104.                                        Log.i("do_gpspost", "经纬度:" + gpsdata.getLatitude() + "----"

105.                                                        + gpsdata.getLongitude());

106.                                        location = new AddressTask(GpsActivity.this,

107.                                                        AddressTask.DO_GPS).doGpsPost(

108.                                                        gpsdata.getLatitude(), gpsdata.getLongitude());

109.                                } catch (Exception e) {

110.                                        e.printStackTrace();

111.                                }

112.                                if (location == null)

113.                                        return "GPS信息获取错误";

114.                                return location.toString();

115.                        }

116.

117.                        @Override

118.                        protected void onPreExecute() {

119.                                dialog.show();

120.                                super.onPreExecute();

121.                        }

122.

123.                        @Override

124.                        protected void onPostExecute(String result) {

125.                                gps_tip.setText(result);

126.                                dialog.dismiss();

127.                                super.onPostExecute(result);

128.                        }

129.                }.execute();

130.        }

131.

132.        private void do_wifi() {

133.                new AsyncTask<Void, Void, String>() {

134.                        @Override

135.                        protected String doInBackground(Void... params) {

136.                                MLocation location = null;

137.                                try {

138.                                        location = new AddressTask(GpsActivity.this,

139.                                                        AddressTask.DO_WIFI).doWifiPost();

140.                                } catch (Exception e) {

141.                                        e.printStackTrace();

142.                                }

143.                                if (location == null)

144.                                        return null;

145.                                return location.toString();

146.                        }

147.

148.                        @Override

149.                        protected void onPreExecute() {

150.                                dialog.show();

151.                                super.onPreExecute();

152.                        }

153.

154.                        @Override

155.                        protected void onPostExecute(String result) {

156.                                if (result != null) {

157.                                        gps_tip.setText(result);

158.                                } else {

159.                                        gps_tip.setText("WIFI定位失败了...");

160.                                }

161.                                dialog.dismiss();

162.                                super.onPostExecute(result);

163.                        }

164.                }.execute();

165.        }

166.}



01.package com.maxtech.common;

02.import org.apache.http.HttpHost;

03.import org.apache.http.HttpResponse;

04.import org.apache.http.client.HttpClient;

05.import org.apache.http.client.methods.HttpPost;

06.import org.apache.http.conn.params.ConnRouteParams;

07.import org.apache.http.entity.StringEntity;

08.import org.apache.http.impl.client.DefaultHttpClient;

09.import org.apache.http.params.HttpConnectionParams;

10.import org.json.JSONObject;

11.import android.app.Activity;

12.import android.database.Cursor;

13.import android.net.Uri;

14.import com.maxtech.common.gps.IAddressTask;

15.public class AddressTask extends IAddressTask {    

16.        public static final int DO_APN = 0;    

17.        public static final int DO_WIFI = 1;    

18.        public static final int DO_GPS = 2;    

19.        private int postType = -1;        

20.        public AddressTask(Activity context, int postType) {        

21.                super(context);        

22.                this.postType = postType;    

23.                }        

24.        @Override    

25.        public HttpResponse execute(JSONObject params) throws Exception {        

26.                HttpClient httpClient = new DefaultHttpClient();        

27.                HttpConnectionParams.setConnectionTimeout(httpClient.getParams(),                20 * 1000);        

28.                HttpConnectionParams.setSoTimeout(httpClient.getParams(), 20 * 1000);        

29.                HttpPost post = new HttpPost("http://74.125.71.147/loc/json");        // 设置代理        

30.                if (postType == DO_APN) {            

31.                        Uri uri = Uri.parse("content://telephony/carriers/preferapn"); // 获取当前正在使用的APN接入点            

32.                        Cursor mCursor = context.getContentResolver().query(uri, null,null, null, null);            

33.                        if (mCursor != null) {                

34.                                if(mCursor.moveToFirst()) {                    

35.                                        String proxyStr = mCursor.getString(mCursor.getColumnIndex("proxy"));                    

36.                                        if (proxyStr != null && proxyStr.trim().length() > 0) {                        

37.                                                HttpHost proxy = new HttpHost(proxyStr, 80);                        

38.                                                httpClient.getParams().setParameter(                                

39.                                                                ConnRouteParams.DEFAULT_PROXY, proxy);                    

40.                                                }                

41.                                        }            

42.                                }        

43.                        }                

44.                StringEntity se = new StringEntity(params.toString());        

45.                post.setEntity(se);        

46.                HttpResponse response = httpClient.execute(post);        

47.                return response;    

48.                }

49.        }

50.                }

51.        }

52.}


0
2
分享到:
评论

相关推荐

    android gps wifi 基站 定位齐全。源码

    本源码包专注于三种主要的定位技术:GPS(全球定位系统)、WiFi和基站定位。 GPS(全球定位系统)是最常见的定位方式,它通过接收多个卫星信号来计算设备的位置。在Android中,我们可以使用LocationManager类来请求...

    androidGPS及WIFI基站定位坐标源码.zip

    在Android系统中,GPS(全球定位系统)和WIFI基站定位是两种常见的定位技术,用于获取设备的地理位置信息。这份“androidGPS及WIFI基站定位坐标源码.zip”压缩包包含了一些实现这两种定位方式的源代码,对于学习...

    安卓Android源码——androidGPS及WIFI基站定位坐标源码.zip

    这个压缩包“安卓Android源码——androidGPS及WIFI基站定位坐标源码.zip”提供了一个实践示例,展示了如何在Android平台上实现基于GPS和WIFI的定位功能。下面将详细讲解这两个定位技术及其在源码中的应用。 1. GPS...

    GPS及WIFI基站定位坐标源码

    本文将深入探讨“GPS及WIFI基站定位坐标源码”这一主题,主要关注Android平台下的GPS和WiFi基站定位技术。 首先,我们要理解GPS(全球定位系统)的工作原理。GPS是一种基于卫星导航的全球定位系统,它通过接收至少...

    Android应用源码之androidGPS及WIFI基站定位坐标源码_androidGPS.zip

    这份"Android应用源码之androidGPS及WIFI基站定位坐标源码"提供了实现这两种定位方式的详细示例,帮助开发者更好地理解和运用到自己的项目中。 一、Android GPS定位 Android系统通过Google Play服务提供的Location ...

    Android GPS和基站定位 Android studio开发

    在Android开发中,GPS(全球定位系统)和基站定位是两种常见的定位技术,它们用于获取设备的地理位置信息。本文将详细讲解这两种定位方式,并结合Android Studio的开发实践,阐述如何在实际应用中实现它们。 首先,...

    Android应用源码之androidGPS及WIFI基站定位坐标源码-IT计算机-毕业设计.zip

    在Android应用开发中,GPS(全球定位系统)和WIFI基站定位是常见的定位技术,用于获取设备的地理位置信息。这份毕业设计源码提供了一个深入理解这两种定位方式的实践平台。以下将详细介绍这两种定位方法及其在...

    安卓Android源码——GPS及WIFI基站定位坐标源码.zip

    本压缩包"安卓Android源码——GPS及WIFI基站定位坐标源码.zip"包含了实现GPS(全球定位系统)和WIFI基站定位的源代码示例,这将有助于开发者深入理解这两种定位机制的工作原理及其在实际应用中的集成。 GPS定位是...

    安卓Andriod源码——GPS及WIFI基站定位坐标源码.zip

    在Android操作系统中,GPS(全球定位系统)和WIFI基站定位是两种常见的定位技术,用于获取设备的地理位置信息。这份名为“安卓Andriod源码——GPS及WIFI基站定位坐标源码.zip”的压缩包文件可能包含了一套完整的示例...

    gps.rar_GPS_GPS java_wifi定位_基站定位_定位

    本主题主要关注三种定位方法:GPS(全球定位系统)、GPS与Java的结合、WiFi定位以及基站定位。以下是对这些知识点的详细阐述: 1. GPS(全球定位系统): GPS是一种全球性的卫星导航系统,由美国建立并维护。它...

    androidGPS及WIFI基站定位坐标源码_地图定位.zip

    本资源包含的"androidGPS及WIFI基站定位坐标源码"提供了实现这些功能的具体代码实现,对于开发者来说是很好的学习和参考材料。 GPS定位是通过接收来自多个GPS卫星的信号来计算设备的位置。Android系统提供了...

    GPS及WIFI基站定位坐标源码.zip

    本源码压缩包“GPS及WIFI基站定位坐标源码.zip”显然提供了实现这两种定位方式的代码示例,主要适用于Android平台。下面将详细探讨这两种定位方法以及可能包含的源码知识点。 1. GPS(全球定位系统)定位: GPS是...

    基站定位和WIFI定位完美结合项目源码

    基站定位和WIFI定位是移动设备定位技术中的两种主要方法,它们在许多现代应用程序和服务中起着关键作用,如导航、紧急救援、社交网络和广告定向。本项目源码提供了将这两种定位方式完美结合的解决方案。 基站定位是...

    安卓开发-androidGPS及WIFI基站定位坐标源码.zip

    此压缩包"androidGPS及WIFI基站定位坐标源码.zip"包含了一个示例项目,用于演示如何利用GPS和WiFi基站数据进行定位。下面将详细介绍这两个定位方法及其在Android中的实现。 1. GPS(全球定位系统)定位: GPS是...

    androidGPS及WIFI基站定位坐标源码.zip项目安卓应用源码下载

    androidGPS及WIFI基站定位坐标源码.zip项目安卓应用源码下载androidGPS及WIFI基站定位坐标源码.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考

    androidGPS及WIFI基站定位坐标源码.zip源码资源下载

    这份“androidGPS及WIFI基站定位坐标源码.zip”源码资源将帮助我们深入理解这两种定位方式的工作原理以及如何在实际应用中实现它们。 一、GPS定位 GPS定位依赖于天空中的多个卫星,通过测量地面设备与卫星之间的...

    Android应用源码之androidGPS及WIFI基站定位坐标源码.zip

    这份"Android应用源码之androidGPS及WIFI基站定位坐标源码.zip"压缩包包含了实现这两种定位方式的源代码示例,非常适合初学者深入理解和实践Android定位系统的工作原理。 首先,我们要了解GPS定位。GPS定位是通过...

    androidGPS及WIFI基站定位坐标源码.7z

    这份“androidGPS及WIFI基站定位坐标源码.7z”压缩包文件很可能是包含了实现这两种定位方式的Android应用源代码。下面我们将详细探讨这两种定位方法及其相关知识点。 1. GPS定位: GPS是全球卫星导航系统,通过...

Global site tag (gtag.js) - Google Analytics