`

定位的几种方法

阅读更多

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;
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;
     }
     
    }
   
}
 
 
<?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>
    </application>
</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;
/**
 * 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>
分享到:
评论

相关推荐

    轴承的轴向定位及几种定位方法借鉴.pdf

    轴承的轴向定位及几种定位方法借鉴 轴承的轴向定位是指将轴承的内外圈固定在轴承座或轴上,以确保轴承的正确安装和运转。本文将介绍轴承的轴向定位方法及其应用。 一、锁紧螺母定位法 锁紧螺母定位法是一种常用的...

    halcon几种定位方法C# 实现.rar

    本文将深入探讨如何使用C#语言结合Halcon库实现四种不同的定位方法,包括基于NCC(归一化互相关)、基于Blob、基于MetrologyModel模型以及基于线的定位。 首先,我们来看基于NCC的定位方法。`LocationNCC.cs`文件中...

    PLC控制步进伺服电机实现定位的几种方法.pdf

    本文将详细介绍几种PLC控制步进伺服电机实现定位的方法,并探讨在实现定位过程中需要注意的事项,旨在为工业生产中PLC控制伺服电机定位的过程提供理论依据和参考方案。 首先,精确定位系统的总体设计需要一个闭合...

    快速调试定位的几种方法.pdf

    ### 快速调试定位的几种方法 #### 一、引言 在软件开发过程中,调试是必不可少的一个环节。为了能够高效地找出问题所在并解决它,掌握一些有效的调试技巧至关重要。本文将详细介绍几种常见的快速调试定位的方法,...

    轴承的轴向定位及几种定位方法归类.pdf

    轴承的轴向定位及几种定位方法归类 轴承的轴向定位是指轴承在轴上的位置固定,以确保轴承的正常工作和提高其使用寿命。轴承的轴向定位方法有多种,下面将对其中几种常用的方法进行分类和介绍。 锁紧螺母定位法 锁...

    html中设置锚点定位的几种常见方法

    在html中设置锚点定位我知道的有几种方法,在此和大家分享一下: 1、使用id定位: 复制代码代码如下: 锚点1&lt;/a&gt; ”1F”&gt; &lt;p&gt; 11111111111 &lt;/br&gt; 11111111111 &lt;/br&gt;11111111111 &lt;/br&gt;11111111111 &lt;/br&gt;11111111111 ...

    几种典型程序Button处理代码的定位总结

    几种典型程序Button处理代码的定位总结 摘要:本文总结了在不同平台(VB, Delphi, CBuilder, VC)下 Button 处理代码的定位方法。对不同平台生成的程序,分别使用条件断点和内存断点来定位处理代码的位置。对 VC ...

    定位的几种方法参照.pdf

    定位理论是二十世纪营销及广告领域中的一种核心理论,它源自多位著名营销专家的思想。大卫·奥格威强调广告应是品牌长期投资,瑞夫斯提出独特的销售说辞(USP),菲里普·科特勒主张营销的分析、计划、执行与控制,...

    MTK平台开发快速调试定位的几种方法

    本文将深入探讨几种在MTK平台上进行开发的调试定位技术。 一、日志记录与分析 日志记录是调试过程中的基础工具,它能够记录应用程序运行时的详细信息。在MTK平台上,可以利用Logcat工具收集系统级别的日志,包括...

    介绍几种室内定位技术

    本文将详细介绍几种主要的室内定位技术及其特点。 ### 一、基于全球导航卫星系统的室内定位技术(GNSS) #### A-GPS定位技术 A-GPS(Assisted GPS)技术是辅助全球定位系统的一种变种,旨在解决GPS信号在室内环境...

    一种基于纹理模式的汽车牌照定位方法

    根据不同的应用场景,纹理可以分为几种类型,包括但不限于: - **同构型纹理图像**:这种类型的纹理图像描述子用于表示图像中特定的纹理特征。 - **纹理图像浏览描述子**:这类描述子主要用于快速浏览和检索包含...

    QmlListView控件位置定位的几个方法

    笔者在开发产品过程中,ListView算是用的最多的控件之一了。ListView控件有两大要素比较重要,一是model数据,二是delegate实例。用得好这两个基本上对...本文介绍几种方法来设置ListView控件的位置,总有一种适合你。

    微震震源定位方法的MATLAB程序.zip_Geiger定位法_MATLAB震源定位_geiger_微震定位程序_震源 定位

    此外,了解和掌握其他定位方法如线性定位法也是必要的,因为每种方法都有其适用条件和局限性。线性定位法通常适用于简单地质结构,而Geiger定位法则更适合处理复杂地质情况下的定位问题。在实际应用中,结合多种定位...

    图像中几种实用的目标定位方法研究与应用.pdf

    图像中几种实用的目标定位方法研究与应用.pdf

    一种基于特征的人脸定位方法的研究

    通常有几种选择阈值的方法:先验知识确定阈值、利用灰度直方图特征以及统计判决法。在本文的方法中,采用了先验知识来确定阈值。通过对EyeMapL子图进行形态学操作后,得到更加清晰的眼部轮廓,进而通过设定阈值(如...

    浅谈GPS数据转换为Org文件的几种方法.pdf

    浅谈GPS数据转换为Org文件的几种方法 本文主要介绍了将GPS数据转换为Org文件的几种方法,并对各种方法的适用性及优缺点进行了比较。 Org文件是一种专门用于SLCAD架空送电线路平断面处理及定位CAD系统的数据文件...

    详细介绍了GPS定位方法中的几种算法的比较,并用MATLAB给出了仿真程序

    详细介绍了GPS定位方法中的几种算法的比较,并用MATLAB给出了仿真程序

Global site tag (gtag.js) - Google Analytics