android 定位服务和wifi,android WIFI定位和基站定位实现
android WIFI定位和基站定位实现
来源:互联网 作者:佚名 时间:2015-04-01 13:38
关于定位原理网上很多,这里就不多说了。下面说怎么实现的,直接贴代码如下:首先是Util类:import java.io.BufferedReader;import java.io.InputStreamReader;i
关于定位原理网上很多,这里就不多说了。下面说怎么实现的,,直接贴代码如下:
首先是Util类:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONObject;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.util.Log;
public class Util {
//log的标签
public static final String TAG = "location";
public static final boolean DEBUG = true;
public static final String LOCATION_URL = "";
public static final String LOCATION_HOST = "maps.google.com";
public static void logi(String content){
if(DEBUG) {
Log.i(TAG, content);
}
}
public static void loge(String content){
if(DEBUG) {
Log.e(TAG, content);
}
}
public static void logd(String content){
if(DEBUG) {
Log.d(TAG, content);
}
}
/**
* 获取地理位置
*
* @throws Exception
*/
public static String getLocation(String latitude, String longitude) throws Exception {
String resultString = "";
/** 这里采用get方法,直接将参数加到URL上 */
String urlString = String.format("?key=abcdefg&q=%s,%s", latitude, longitude);
Util.logi("Util: getLocation: URL: " + urlString);
/** 新建HttpClient */
HttpClient client = new DefaultHttpClient();
/** 采用GET方法 */
HttpGet get = new HttpGet(urlString);
try {
/** 发起GET请求并获得返回数据 */
HttpResponse response = client.execute(get);
HttpEntity entity = response.getEntity();
BufferedReader buffReader = new BufferedReader(new InputStreamReader(entity.getContent()));
StringBuffer strBuff = new StringBuffer();
String result = null;
while ((result = buffReader.readLine()) != null) {
strBuff.append(result);
}
resultString = strBuff.toString();
/** 解析JSON数据,获得物理地址 */
if (resultString != null && resultString.length() > 0) {
JSONObject jsonobject = new JSONObject(resultString);
JSONArray jsonArray = new JSONArray(jsonobject.get("Placemark").toString());
resultString = "";
for (int i = 0; i < jsonArray.length(); i++) {
resultString = jsonArray.getJSONObject(i).getString("address");
}
}
} catch (Exception e) {
throw new Exception("获取物理位置出现错误:" + e.getMessage());
} finally {
get.abort();
client = null;
}
return resultString;
}
/**
* 判断网络是否可用
* @param context
* @return
*/
public static boolean isNetworkAvaliable(Context context){
ConnectivityManager manager = (ConnectivityManager) (context
.getSystemService(Context.CONNECTIVITY_SERVICE));
NetworkInfo networkinfo = manager.getActiveNetworkInfo();
return !(networkinfo == null || !networkinfo.isAvailable());
}
/**
* 判断网络类型 wifi 3G
*
* @param context
* @return
*/
public static boolean isWifiNetwrokType(Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = connectivityManager.getActiveNetworkInfo();
if (info != null && info.isAvailable()) {
if (info.getTypeName().equalsIgnoreCase("wifi")) {
return true;
}
}
return false;
}
}
在MainActivity中根据当前网络环境,决定用WIFI定位还是基站定位
import com.demo.location.cell.CellLocationManager;
import com.demo.location.wifi.WifiLocationManager;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private TextView mTextView;
private Button mButton;
private WifiLocationManager wifiLocation;
private CellLocationManager cellLocation;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextView = (TextView) findViewById(R.id.tv_show_info);
mButton = (Button) findViewById(R.id.btn_get_info);
wifiLocation = new WifiLocationManager(MainActivity.this);
cellLocation = new CellLocationManager(MainActivity.this);
mButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Util.logi("MainActivity: on mButton Click!!!");
getLocation();
}
});
}
private void getLocation(){
boolean isNet = Util.isNetworkAvaliable(MainActivity.this);
if(!isNet){
Toast.makeText(MainActivity.this, "网络不可用:打开WIFI 或 数据连接!!!", Toast.LENGTH_LONG).show();
Util.logd("MainActivity: getLocation: Net work is not avaliable, and return!!!");
return;
}
boolean isWifi = Util.isWifiNetwrokType(MainActivity.this);
if(isWifi){
Util.logd("MainActivity: getLocation: Wifi定位");
wifiLocation.getLocation(new WifiReceiver());
}else{
Util.logd("MainActivity: getLocation: 基站定位");
String location = cellLocation.getLocationCell();
mTextView.setText(location);
}
}
class WifiReceiver extends BroadcastReceiver {
public void onReceive(Context c, Intent intent) {
Util.logi("get broadcastReceiver: SCAN_RESULTS_AVAILABLE_ACTION");
String location = wifiLocation.getLocationWifi();
mTextView.setText(location);
}
}
}
1. WIFI定位:
android 定位服务和wifi,android WIFI定位和基站定位实现相关推荐
- 使用百度API实现热点(WIFI)、GPS、基站定位
直接上代码...嘎嘎 /*** 百度基站定位错误返回码*/ // 61 : GPS定位结果 // 62 : 扫描整合定位依据失败.此时定位结果无效. // 63 : 网络异常,没有成功向服务器发起请求 ...
- android wifi定位服务,如何在Android中使用Wifi获取位置?
我希望通过Wifi获取位置并在谷歌地图中工作,这对我不起作用,但Gps没问题,也没问题. 我的代码: locationManager = (LocationManager) getSystemServ ...
- 腾讯定位服务使用教程Android版
开发环境: android studio 目录 一:准备环境 二:编码部分 三:百度和腾讯的对比 一:准备环境 1.首先你得有一个腾讯开发账号 传送门:https://lbs.qq.com?lbs_i ...
- android 定位服务源码,android gps定位app源码(GpsTracker)
[实例简介]做到了 gps 开启关闭后的提醒 以及地理位置记录(经纬度) [实例截图] [核心代码] package android.gpstracker; import android.app.Ac ...
- android调服务不更新,android – OnUpdate()不调用小部件服务
我正在为我的应用程序开发一个小部件.窗口小部件名称是历史记录,当用户浏览任何URL时,我将其存储在本地数据库中,从中列出该窗口小部件. 当我打开小部件时,它从本地数据库中获取所有细节并在小部件的列表视 ...
- android 辅助服务 简书,Android AccessibilityService使用
测试demo主要使用了Android 的无障碍辅助服务(AccessibilityService),主要注意是 1. 开启服务,绑定目标app的监听(demo中根据包命绑定了体积计算的app),需要在 ...
- android必须服务,说说在Android如何使用服务(Service)的方法
Android 服务(Service)适合执行那些不需要和用户交互而且还要求长期运行的任务. 服务的运行不依赖于任何用户界面,即使 APP 被切换到后台,或者打开了另外一个 APP,服务仍然能够保持正 ...
- android同步服务启动失败,android – FirebaseCloudMessaging:FirebaseInstanceId后台同步失败 – SERVICE_NOT_AVAILABLE...
我已在Android中使用Firebase云消息传递(FCM)API进行推送通知.当我实现那个时间完美的工作,但现在它找不到谷歌播放的服务. 错误是: FirebaseInstanceId: back ...
- android中服务播放音乐,android中用Service播放音乐
一般的Android应用程序的音乐可以分为背景音乐和点击各种控件时的音效,前者一般为比较大的音乐文件,后者一般为比较小的音乐.在Android中一般用MediaPlayer类处理比较大的音频文件,用S ...
- android 判断服务是否活动,Android:我如何获得当前的前台活动(从服务)?
这里有一个使用活动管理器的好方法.您基本上可以从活动经理那里得到runningTask.它将始终首先返回当前活动的任务.从那里你可以得到topActivity. 有一种从ActivityManager ...
最新文章
- Openresty中使用LuaJit
- 第十四章:springboot 定时任务
- looper message handler之间的关系
- codeforces contest 1119
- leetcode jump game ii
- 虚拟机里面安装Openfiler 2.99
- python函数变量的作用域_学不会的Python函数——变量作用域
- 防止表格中的单行按钮被频繁点击,前端实例讲解~
- 每日学习笔记(17)
- matlab编程椅子放平问题,数学模型程序代码Matlab-姜启源-第一章-建立数学模型.docx...
- python如何编辑pdf_用Python实现一款永久免费的PDF编辑工具
- itext7 java转pdf添加图片
- JAVA程序练习---小车行走距离
- 蓝桥杯 ADV-222 7-2求arccos值
- 请写出至少五个块级元素_以下属于行内块元素的是()
- Python:利用matplotlib库绘制统计图(饼图、直方图、散点图、极坐标图和网格图)
- 2021-09-21
- 谷歌地图api 微信小程序_使用Google的融合位置提供程序API进行实时位置跟踪
- C++ 关键字 typeid, typename
- 富文本生成pdf-java
热门文章
- 运动设施管理系统er图
- postman测试Map参数、List接口
- LTE 测试文档(翻译)
- 电脑测试软件删了如何恢复了,如何把已经删掉的文件快速恢复过来
- Sketch Essential Training: The Basics Sketch基本训练:基础知识 Lynda课程中文字幕
- 西门子PLC300系列上载密码,程序块密码,支持博图,step7软件解读,操作简单
- 月销涨3倍:阿里巴巴零售通联合饿了么宣布将赋能近万天猫小店
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java校园花卉销售系统ef5ox
- 最新微信ipad协议, CODE获取 公众号授权等
- 关于this引用逸出的理解