- 浏览: 205278 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
xyyx_nk:
在demo中没有下载的示例,能详细说一下怎么监听下载过程吗?比 ...
DhNet 网络http工具(带缓存功能哦) -dhroid文档 -
zhaoguowei998:
dhroid ioc模块对 加密混淆问题 -
zhaoguowei998:
你太牛了,佩服佩服,以后要多想你请教了
dhroid ioc模块对 加密混淆问题 -
白色蜻蜓:
转载下您的文章,已注明出处。
IOS开发之百度地图API应用 -
wenjiefeng:
你好,在andrioidpn-client客户端源码里,Not ...
Android 推送之原理与初触Androidpn(Android Push Notification)
定位的几种方法
1 gprs定位
package com.android.antking.gps;
import android.app.Activity;
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
public class GPSActivity extends Activity {
//声明位置管理对象
private LocationManager locationManager;
//声明位置监听对象
private LocationListener locationListener;
//声明字符串变量
String locationprovider;
//声明显示文本视图组建
private TextView textview;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获得文本视图
textview = (TextView)this.findViewById(R.id.textView1);
try{
//新建Criteria类
Criteria locationcriteria = new Criteria();
//设置精确精度
locationcriteria.setAccuracy(Criteria.ACCURACY_FINE);
//不提供海拔高度信息
locationcriteria.setAltitudeRequired(false);
//不提供方向信息
locationcriteria.setBearingRequired(false);
//允许运营商计费
locationcriteria.setCostAllowed(true);
//设置电池消耗为低耗费
locationcriteria.setPowerRequirement(Criteria.POWER_LOW);
//使用getSystemService()方法获得位置管理器对象
locationManager
=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
//locationManager.setTestProviderEnabled("gps", true);
Toast.makeText(GPSActivity.this, "getSystemService", Toast.LENGTH_SHORT).show();
//检查gps功能开启
if(checkgps()){
locationprovider
=locationManager.getBestProvider(locationcriteria, true);
Log.d("provider", locationprovider);
//注册位置监听器
locationListener = new MyLocationListener();
locationManager.requestLocationUpdates(locationprovider, 1000, 0,locationListener);
}
}catch(Exception e){
Toast.makeText(GPSActivity.this, "异常错误"+e.toString(),Toast.LENGTH_LONG).show();
}
}
private class MyLocationListener implements LocationListener{
/**
* 若位置发生变化,onLocationChanged方法被调用
*/
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
Log.i("位置发生变化", "Invoke");
if(location != null){
//获得经度
String latitude = Double.toString(location.getLatitude());//经度
//获得纬度
String longitude = Double.toString(location.getLongitude());//纬度
//在文本框中显示
textview = (TextView)GPSActivity.this.findViewById(R.id.textView1);
textview.setText("经度:"+longitude+"纬度"+latitude);
}
//locationManager.removeUpdates(this);
//locationManager.setTestProviderEnabled("gps", true);
}
//若屏蔽提供商,该方法被调用
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
Log.i("屏蔽提供商", "Invode");
}
//若激活提供商,该方法被调用
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
Log.i("激活提供商", "Invode");
}
//若状态发生变化,该方法被调用
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
Log.i("状态发生变化", "Invode");
}
}
private boolean checkgps(){
boolean providerEnabled
= locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
//若被激活,则返回真值
if(providerEnabled ==true){
Toast.makeText(this, "Gps模块活动正常", Toast.LENGTH_SHORT).show();
return true;
}
else{
Toast.makeText(this, "请开启GPS", Toast.LENGTH_SHORT);
return false;
}
}
}
//声明位置管理对象
private LocationManager locationManager;
//声明位置监听对象
private LocationListener locationListener;
//声明字符串变量
String locationprovider;
//声明显示文本视图组建
private TextView textview;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获得文本视图
textview = (TextView)this.findViewById(R.id.textView1);
try{
//新建Criteria类
Criteria locationcriteria = new Criteria();
//设置精确精度
locationcriteria.setAccuracy(Criteria.ACCURACY_FINE);
//不提供海拔高度信息
locationcriteria.setAltitudeRequired(false);
//不提供方向信息
locationcriteria.setBearingRequired(false);
//允许运营商计费
locationcriteria.setCostAllowed(true);
//设置电池消耗为低耗费
locationcriteria.setPowerRequirement(Criteria.POWER_LOW);
//使用getSystemService()方法获得位置管理器对象
locationManager
=(LocationManager)getSystemService(Context.LOCATION_SERVICE);
//locationManager.setTestProviderEnabled("gps", true);
Toast.makeText(GPSActivity.this, "getSystemService", Toast.LENGTH_SHORT).show();
//检查gps功能开启
if(checkgps()){
locationprovider
=locationManager.getBestProvider(locationcriteria, true);
Log.d("provider", locationprovider);
//注册位置监听器
locationListener = new MyLocationListener();
locationManager.requestLocationUpdates(locationprovider, 1000, 0,locationListener);
}
}catch(Exception e){
Toast.makeText(GPSActivity.this, "异常错误"+e.toString(),Toast.LENGTH_LONG).show();
}
}
private class MyLocationListener implements LocationListener{
/**
* 若位置发生变化,onLocationChanged方法被调用
*/
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
Log.i("位置发生变化", "Invoke");
if(location != null){
//获得经度
String latitude = Double.toString(location.getLatitude());//经度
//获得纬度
String longitude = Double.toString(location.getLongitude());//纬度
//在文本框中显示
textview = (TextView)GPSActivity.this.findViewById(R.id.textView1);
textview.setText("经度:"+longitude+"纬度"+latitude);
}
//locationManager.removeUpdates(this);
//locationManager.setTestProviderEnabled("gps", true);
}
//若屏蔽提供商,该方法被调用
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
Log.i("屏蔽提供商", "Invode");
}
//若激活提供商,该方法被调用
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
Log.i("激活提供商", "Invode");
}
//若状态发生变化,该方法被调用
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
Log.i("状态发生变化", "Invode");
}
}
private boolean checkgps(){
boolean providerEnabled
= locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
//若被激活,则返回真值
if(providerEnabled ==true){
Toast.makeText(this, "Gps模块活动正常", Toast.LENGTH_SHORT).show();
return true;
}
else{
Toast.makeText(this, "请开启GPS", Toast.LENGTH_SHORT);
return false;
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.antking.gps"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".GPSActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.antking.gps"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".GPSActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
</manifest>
2,谷歌基站定位(获取的是json字符串 有经纬度和城市信息)
package lab.sodino.location;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.telephony.gsm.GsmCellLocation;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.telephony.gsm.GsmCellLocation;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
/**
* Google定位的实现.<br/>
* Geolocation的详细信息请参见:<br/>
* <a
* href="http://code.google.com/apis/gears/geolocation_network_protocol.html">
* <A href="http://code.google.com/apis/gears/geolocation_network_protocol.htmlhttp://code.google.com/apis/gears/geolocation_network_protocol.html</a>
*/
public class LocationAct extends Activity {
private TextView txtInfo;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button) findViewById(R.id.btnStart);
txtInfo = (TextView) findViewById(R.id.txtInfo);
btn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View view) {
getLocation();
}
});
}
private void getLocation() {
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
GsmCellLocation gsmCell = (GsmCellLocation) tm.getCellLocation();
int cid = gsmCell.getCid();
int lac = gsmCell.getLac();
String netOperator = tm.getNetworkOperator();
int mcc = Integer.valueOf(netOperator.substring(0, 3));
int mnc = Integer.valueOf(netOperator.substring(3, 5));
JSONObject holder = new JSONObject();
JSONArray array = new JSONArray();
JSONObject data = new JSONObject();
try {
holder.put("version", "1.1.0");
holder.put("host", "maps.google.com");
holder.put("address_language", "zh_CN");
holder.put("request_address", true);
holder.put("radio_type", "gsm");
holder.put("carrier", "HTC");
data.put("cell_id", cid);
data.put("location_area_code", lac);
data.put("mobile_countyr_code", mcc);
data.put("mobile_network_code", mnc);
array.put(data);
holder.put("cell_towers", array);
} catch (JSONException e) {
e.printStackTrace();
}
DefaultHttpClient client = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://www.google.com/loc/json");
StringEntity stringEntity = null;
try {
stringEntity = new StringEntity(holder.toString());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
httpPost.setEntity(stringEntity);
HttpResponse httpResponse = null;
try {
httpResponse = client.execute(httpPost);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
HttpEntity httpEntity = httpResponse.getEntity();
InputStream is = null;
try {
is = httpEntity.getContent();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
InputStreamReader isr = new InputStreamReader(is);
BufferedReader reader = new BufferedReader(isr);
StringBuffer stringBuffer = new StringBuffer();
try {
String result = "";
while ((result = reader.readLine()) != null) {
stringBuffer.append(result);
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("[sodino]" + stringBuffer.toString());
txtInfo.setText(stringBuffer.toString());
}
}
* Google定位的实现.<br/>
* Geolocation的详细信息请参见:<br/>
* <a
* href="http://code.google.com/apis/gears/geolocation_network_protocol.html">
* <A href="http://code.google.com/apis/gears/geolocation_network_protocol.htmlhttp://code.google.com/apis/gears/geolocation_network_protocol.html</a>
*/
public class LocationAct extends Activity {
private TextView txtInfo;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button) findViewById(R.id.btnStart);
txtInfo = (TextView) findViewById(R.id.txtInfo);
btn.setOnClickListener(new Button.OnClickListener() {
public void onClick(View view) {
getLocation();
}
});
}
private void getLocation() {
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
GsmCellLocation gsmCell = (GsmCellLocation) tm.getCellLocation();
int cid = gsmCell.getCid();
int lac = gsmCell.getLac();
String netOperator = tm.getNetworkOperator();
int mcc = Integer.valueOf(netOperator.substring(0, 3));
int mnc = Integer.valueOf(netOperator.substring(3, 5));
JSONObject holder = new JSONObject();
JSONArray array = new JSONArray();
JSONObject data = new JSONObject();
try {
holder.put("version", "1.1.0");
holder.put("host", "maps.google.com");
holder.put("address_language", "zh_CN");
holder.put("request_address", true);
holder.put("radio_type", "gsm");
holder.put("carrier", "HTC");
data.put("cell_id", cid);
data.put("location_area_code", lac);
data.put("mobile_countyr_code", mcc);
data.put("mobile_network_code", mnc);
array.put(data);
holder.put("cell_towers", array);
} catch (JSONException e) {
e.printStackTrace();
}
DefaultHttpClient client = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("http://www.google.com/loc/json");
StringEntity stringEntity = null;
try {
stringEntity = new StringEntity(holder.toString());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
httpPost.setEntity(stringEntity);
HttpResponse httpResponse = null;
try {
httpResponse = client.execute(httpPost);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
HttpEntity httpEntity = httpResponse.getEntity();
InputStream is = null;
try {
is = httpEntity.getContent();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
InputStreamReader isr = new InputStreamReader(is);
BufferedReader reader = new BufferedReader(isr);
StringBuffer stringBuffer = new StringBuffer();
try {
String result = "";
while ((result = reader.readLine()) != null) {
stringBuffer.append(result);
}
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("[sodino]" + stringBuffer.toString());
txtInfo.setText(stringBuffer.toString());
}
}
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
发表评论
-
Dhdb 简化sqlite数据库操作--dhroid文档
2014-04-15 12:30 1356android数据库其实使用的不多,dhroid框架中的 ... -
dhroid ioc模块对 加密混淆问题
2014-04-14 12:52 971大家应该已经看过ioc ... -
NetJSONAdapter 网络化的adapter(高效) -dhroid文档
2014-04-04 12:15 897关于adapter 我想对于大家来说已经不陌生了,基本应用 ... -
DhNet 网络http工具(带缓存功能哦) -dhroid文档
2014-03-24 13:36 1490网络请求是大多数应用不可获取的一部分,曾经和一个其他公司的 ... -
eventbus 事件总线-dhroid文档
2014-03-23 11:47 1265你听过onClick 事件,onItemClick 事件, ... -
ioc基础(视图,资源,assert注入)-dhroid文档
2014-03-21 12:59 866上一节 Android 极速开发框架 dhroid来了 ... -
ioc高级(接口,对象注入)-dhroid文档
2014-03-21 13:04 1138前一章 ioc基础( ... -
IOC容器详解(想晋升的进来)---dhroid框架教教程(一)
2014-03-20 10:30 980控制反转(Inversion of Control,英文缩写 ... -
Android 极速开发框架 dhroid来了(提供demo)
2014-03-19 17:24 1381我们公司内部使用的商业级android开发框架dhr ... -
HttpClient的3种超时说明
2013-03-14 11:05 888/* 从连接池中取连接的超时时间 */ConnManag ... -
android中当EditText获得焦点时屏幕下面的控件移位
2013-01-27 21:15 1065这几天在写一个Anroid App时,在最下面写了一个工具栏, ... -
MeasureSpec介绍及使用详解
2013-01-24 21:21 754一个MeasureSpec封装了父 ... -
android 4.0 以上平台选择图片报错Attempted to access a cursor after it has been closed.
2013-01-20 15:32 1171android 4.0 以上平台选择图片报错Attempte ... -
android textview 添加下划线 中划线 删除线
2012-12-26 22:22 1191tv=(TextView)findViewById(R.id. ... -
Android学习——TextView 设置中划线 下划线
2012-10-31 14:42 3462android:textAppearance ... -
ListView与其中的Button,EditText,RatingBar等widget的click事件
2012-10-26 14:48 869在<RelativeLayout>中 an ... -
在线词典API
2012-09-09 19:34 742QQ词典 http://dict.qq.com/dic ... -
关于android WebViewClient的方法解释
2012-09-09 17:12 7691、public boolean shouldOverride ... -
android Uri获取真实路径转换成File的方法
2012-08-23 12:40 3066data.getData()返回的 ... -
Java之WeakReference与SoftReference使用讲解
2012-08-22 09:46 692如果你想写一个 Java 程序,观察某对象什么时候会被垃圾收集 ...
相关推荐
轴承的轴向定位及几种定位方法借鉴 轴承的轴向定位是指将轴承的内外圈固定在轴承座或轴上,以确保轴承的正确安装和运转。本文将介绍轴承的轴向定位方法及其应用。 一、锁紧螺母定位法 锁紧螺母定位法是一种常用的...
本文将深入探讨如何使用C#语言结合Halcon库实现四种不同的定位方法,包括基于NCC(归一化互相关)、基于Blob、基于MetrologyModel模型以及基于线的定位。 首先,我们来看基于NCC的定位方法。`LocationNCC.cs`文件中...
本文将详细介绍几种PLC控制步进伺服电机实现定位的方法,并探讨在实现定位过程中需要注意的事项,旨在为工业生产中PLC控制伺服电机定位的过程提供理论依据和参考方案。 首先,精确定位系统的总体设计需要一个闭合...
### 快速调试定位的几种方法 #### 一、引言 在软件开发过程中,调试是必不可少的一个环节。为了能够高效地找出问题所在并解决它,掌握一些有效的调试技巧至关重要。本文将详细介绍几种常见的快速调试定位的方法,...
轴承的轴向定位及几种定位方法归类 轴承的轴向定位是指轴承在轴上的位置固定,以确保轴承的正常工作和提高其使用寿命。轴承的轴向定位方法有多种,下面将对其中几种常用的方法进行分类和介绍。 锁紧螺母定位法 锁...
在html中设置锚点定位我知道的有几种方法,在此和大家分享一下: 1、使用id定位: 复制代码代码如下: 锚点1</a> ”1F”> <p> 11111111111 </br> 11111111111 </br>11111111111 </br>11111111111 </br>11111111111 ...
几种典型程序Button处理代码的定位总结 摘要:本文总结了在不同平台(VB, Delphi, CBuilder, VC)下 Button 处理代码的定位方法。对不同平台生成的程序,分别使用条件断点和内存断点来定位处理代码的位置。对 VC ...
定位理论是二十世纪营销及广告领域中的一种核心理论,它源自多位著名营销专家的思想。大卫·奥格威强调广告应是品牌长期投资,瑞夫斯提出独特的销售说辞(USP),菲里普·科特勒主张营销的分析、计划、执行与控制,...
本文将深入探讨几种在MTK平台上进行开发的调试定位技术。 一、日志记录与分析 日志记录是调试过程中的基础工具,它能够记录应用程序运行时的详细信息。在MTK平台上,可以利用Logcat工具收集系统级别的日志,包括...
本文将详细介绍几种主要的室内定位技术及其特点。 ### 一、基于全球导航卫星系统的室内定位技术(GNSS) #### A-GPS定位技术 A-GPS(Assisted GPS)技术是辅助全球定位系统的一种变种,旨在解决GPS信号在室内环境...
根据不同的应用场景,纹理可以分为几种类型,包括但不限于: - **同构型纹理图像**:这种类型的纹理图像描述子用于表示图像中特定的纹理特征。 - **纹理图像浏览描述子**:这类描述子主要用于快速浏览和检索包含...
笔者在开发产品过程中,ListView算是用的最多的控件之一了。ListView控件有两大要素比较重要,一是model数据,二是delegate实例。用得好这两个基本上对...本文介绍几种方法来设置ListView控件的位置,总有一种适合你。
此外,了解和掌握其他定位方法如线性定位法也是必要的,因为每种方法都有其适用条件和局限性。线性定位法通常适用于简单地质结构,而Geiger定位法则更适合处理复杂地质情况下的定位问题。在实际应用中,结合多种定位...
图像中几种实用的目标定位方法研究与应用.pdf
通常有几种选择阈值的方法:先验知识确定阈值、利用灰度直方图特征以及统计判决法。在本文的方法中,采用了先验知识来确定阈值。通过对EyeMapL子图进行形态学操作后,得到更加清晰的眼部轮廓,进而通过设定阈值(如...
浅谈GPS数据转换为Org文件的几种方法 本文主要介绍了将GPS数据转换为Org文件的几种方法,并对各种方法的适用性及优缺点进行了比较。 Org文件是一种专门用于SLCAD架空送电线路平断面处理及定位CAD系统的数据文件...
详细介绍了GPS定位方法中的几种算法的比较,并用MATLAB给出了仿真程序