当前位置:首页 > 代码 > 正文

android手机号码定位源代码(手机号定位手机号)

admin 发布:2022-12-19 20:27 153


本篇文章给大家谈谈android手机号码定位源代码,以及手机号定位手机号对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何利用Android编程实现GPS定位

您好,很高兴为您解答。

一、准备工作

需要如下三种软件:

1. Eclipse

2. Android SDK

3. 开发Android程序的Eclipse 插件

为了开始我们的工作,首先要安装Eclipse,然后从Google的网站获得Android SDK,并且安装Eclipse插件。

二、Activity类

每一种移动开发环境都有自己的基类。如J2ME应用程序的基类是midlets,BREW的基类是applets,而Android程序的基类是 Activity。这个activity为我们提供了对移动操作系统的基本功能和事件的访问。这个类包含了基本的构造方法,键盘处理,挂起来恢复功能,以 及其他底层的手持设备的访问。实质上,我们的应用程序将是一个Activity类的扩展。在本文中读者将会通过例子学习到如何使用Activity类来编 写Android程序。下面是一个简单的继承Activity的例子。

public class LocateMe extends Activity{  

public void onCreate(Bundle params){        

       super.onCreate(params);        

       setContentView(R.layout.main);       

      }  

public boolean onKeyDown(int keyCode, KeyEvent event){          

        return true;            

          }    

  }

三 View类

View类是Android的一个超类,这个类几乎包含了所有的屏幕类型。但它们之间有一些不同。每一个view都有一个用于绘画的画布。这个画布可以用 来进行任意扩展。本文为了方便起见,只涉及到了两个主要的View类型:定义View和Android的XML内容View。在上面的代码中,使用的是 “Hello World” XML View,它是以非常自然的方式开始的。

如果我们查看一下新的Android工程,就会发现一个叫main.xml的文件。在这个文件中,通过一个简单的XML文件,描述了一个屏幕的布局。这个 简单的xml文件的内容如下:

?xml version="1.0" encoding="utf-8"? 

RelativeLayout xmlns:android="" 

androidrientation="vertical" 

android:layout_width="fill_parent" 

android:layout_height="fill_parent" 

 

TextView 

android:layout_width="fill_parent" 

android:layout_height="wrap_content" 

android:layout_centerHoriz  

android:text="ress the center key to locate yourself" 

/RelativeLayout

上面的内容的功能看起来非常明显。这个特殊文件定义了一个相关的布局,这就意味着通过一个元素到另一个元素的关系或是它们父元素的关系来描述。对于视图来 说,有一些用于布局的方法,但是在本文中只关注于上述的xml文件。

RealtiveLayout中包含了一个填充整个屏幕的文本框(也就是我们的LocateMe activity)。这个LocateMe activity在默认情况下是全屏的,因此,文本框将继承这个属性,并且文本框将在屏幕的左上角显示。另外,必须为这个XML文件设置一个引用数,以便 Android可以在源代码中找到它。在默认情况下,这些引用数被保存在R.java中,代码如下:

public final class R{  

public static final class layout{  

public static final int main=0x7f030001;     

    }  

 }

视图也可以被嵌套,但和J2ME不同,我们可以将定制的视图和Android团队发布的Widgets一起使用。在J2ME中,开发人员被迫选择 GameCanvas和J2ME应用程序画布。这就意味着如果我们想要一个定制的效果,就必须在GameCanvas上重新设计我们所有的widget。 Android还不仅仅是这些,视图类型也可以混合使用。Android还带了一个 widget库,这个类库包括了滚动条,文本实体,进度条以及其他很多控件。这些标准的widget可以被重载或被按着我们的习惯定制。现在让我们来进入 我们的例子。

四、Android实例

这个演示应用程序将演示了用户的当前的经度和纬度(在文本框中显示)。onCreate构造方法将和上面的例子基本相同,除了在其中加入了键盘处理,现在 让我们看一下onKeyDown的代码。

public boolean onKeyDown(int keyCode, KeyEvent event){  

if(keyCode != KeyEvent.KEYCODE_DPAD_CENTER || m_bLoading)  

{  

return true;  

}  

m_bLoading = true;  

getLocation();  

return true;  

}

下面让我们来解释一下这段代码,首先,这段代码检查了当前被按下的键,但还没有开始处理。而是在getLocation方法中处理这一切的。然后,将装载 flag标志以及调用getLocation方法,下面是getLocation方法的代码。

private void getLocation(){  

Location loc;  

LocationManager locMan;  

LocationProvider locPro;  

ListLocationProvider proList;  

setContentView(R.layout.laoding);  

locMan = (LocationManager) getSystemService(LOCATION_SERVICE);  

proList = locMan.getProviders();  

locPro = proList.get(0);  

loc = locMan.getCurrentLocation(locPro.getName());  

Lat = (float)loc.getLatitude();  

Lon = (float)loc.getLongitude();  

CreateView();  

setContentView(customView);  

}

到这为止,程序开始变得更有趣了。但是不幸的是,Google关于之方面的文档还是比较少了。在程序的变量声明之后,我们需要演示一些装载信息。 R.layout.loading符合了另一个简单的XML布局视图。通过简单地调用setContentView方法可以使用转载信息重绘屏幕。

读者要注意的是:在编译时,Android会预先将所有的XML布局数据包装起来。如果我们想在编译后变化布局属性,按着规定,我们必须在源程序中做这些 事。

获得LocationManager的唯一方法是通过getSystemService()方法的调用。通过使用LocationManager, 我们可以获得一个位置提供者的列表。在一个真实的手持设备中,这个列表包含了一些GPS服务。实际上,我们希望选择更强大,更精确,最后不带有其他附加服 务的GPS。现在,在模拟器中提供了一个用于测试的GPS,这个GPS来自San Francisco。定制的GPS文件可以可以被上传,并进行测试。如果我们要测试更复杂的应用,来自San Francisco的GPS可能并不适合。

目前我们可以使用位置管理器和位置提供者进行getCurrentLocation的调用。这个方法返回本机的当前位置的一个快照,这个快照将以 Location对象形式提供。在手持设备中,我们可以获得当前位置的经度和纬度。现在,使用这个虚拟的手持设备,我们可以获得这个例子程序的最终结果: 建立了显示一个定制的视图。

五、使用定制视图

在最简单的窗体中,一个Android中的视图仅仅需要重载一个onDraw方法。定制视图可以是复杂的3D实现或是非常简单的文本形式。下面的 CreateView方法列出了上面看到的内容。

public void CreateView(){  

customView = new CustomView(this);  

}

这个方法简单地调用了CustomView对象的构造方法。CustomView类的定义如下:

public class CustomView extends View{       

   LocateMe overlord;  

public CustomView(LocateMe pCtx){       

   super(pCtx);       

   overlord = pCtx;  

}  

  public void onDraw(Canvas cvs){     

  Paint p = new Paint();     

  String sLat = "Latitude: " + overlord.getLat();     

  String sLon = "Longitude: " + overlord.getLon();     

  cvs.drawText(sLat , 32, 32, p);     

  cvs.drawText(sLon, 32, 44, p);  

}  

}

这个定制的Android视图获得了经度和违度的测试数据,并将这些数据显示在屏幕上。这要求一个指向LocateMe的指针,Activity类是整 个应用程序的核心。它的两个方法是构造方法和onDraw方法。这个构造方法调用了超类的构造方法以及引起了Activity指针的中断。onDraw方 法将建立一个新的Paint对象(这个对象封装了颜色、透明度以及其他的主题信息),这个对象将会访问颜色主题。在本程序中,安装了用于显示的字符串,并 使用画布指针将它们画到屏幕上。这个和我们了解的J2ME游戏的画布看起来非常类似。

六、Android展望

从纯粹的开发观点看,Android是一个非常强大的SDK。它使用基于XML的布局和定制视图联合了起来。并可以使用滚动条、地图以及其他的组件。所以 的这一切都可以被重载,或由开发人员来定制。但它所提供的文档非常粗糙。在文档中并没有象SMS等技术,但是从整体上来看Android SDK,还是非常有希望的。也非常符合Google承诺的“First Look”SDK。现在我们要做的就是等待Google发布第一个基于Android的手机,并使用它。

如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】

希望我的回答对您有所帮助,望采纳!

~ O(∩_∩)O~

实现Android的不同精度的定位(基于网络和GP

Android中的定位服务的相关类基本上都在android.location包中,下面会按编写的顺序依次讲解。

1.获取位置服务管理器LocationManager

//变量定义

private LocationManager locationManager;

//onCreate()方法中得到LocationManager

locationManager = (LocationManager) this

.getSystemService(Context.LOCATION_SERVICE)

2.开启位置服务的监听

有了LocationManager之后,我们就可以开始监听位置的变化了。我们使用LocationManager中的方法:

requestLocationUpdates(String

provider, long minTime, float minDistance, LocationListener

listener)

来设置监听器。

首先,我们要注意到第1个参数,这个参数的值为2选1,分别是:LocationManager.NETWORK_PROVIDER和LocationManager.GPS_PROVIDER,前者用于移动网络中获取位置,精度较低但速度很快,后者使用GPS进行定位,精度很高但一般需要10-60秒时间才能开始第1次定位,如果是在室内则基本上无法定位。

这2种Provider本质上是互补的,在本教程中,我们会同时开启2个监听,但基于移动网络的监听只会执行一次就会被停止,而基于GPS的监听则会一直持续下去,直至用户自己停止监听。

代码片段如下:

首先,我们会声明1个监听器的内部类,这个类会同时用于2种模式的监听。还要声明1个变量,用于记录当前的位置

private class MyLocationListener implements LocationListener {

Location currentLocation;

@Override

public void onLocationChanged(Location location) {

if (currentLocation != null) {

if (isBetterLocation(location, currentLocation)) {

currentLocation = location;

showLocation(location);

} else {

Toast.makeText(getApplicationContext(), "not very good", Toast.LENGTH_SHORT).show();

}

} else {

currentLocation = location;

showLocation(location);

}

//移除基于LocationManager.NETWORK_PROVIDER的监听器

if (LocationManager.NETWORK_PROVIDER.equals(location.getProvider())) {

if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

// TODO: Consider calling

// ActivityCompat#requestPermissions

// here to request the missing permissions, and then overriding

// public void onRequestPermissionsResult(int requestCode, String[] permissions,

// int[] grantResults)

// to handle the case where the user grants the permission. See the documentation

// for ActivityCompat#requestPermissions for more details.

return;

}

locationManager.removeUpdates(this);

}

}

@Override

public void onStatusChanged(String s, int i, Bundle bundle) {

}

@Override

public void onProviderEnabled(String s) {

}

@Override

public void onProviderDisabled(String s) {

}

private void showLocation(Location location) {

Toast.makeText(getApplication(), "经度:" + location.getLongitude() + ",纬度:" + location.getLatitude() + ",精确度:" + location.getAccuracy(), Toast.LENGTH_SHORT).show();

}

}

3.添加开始监听的代码

首先声明两个全局变量,并定义监听方法registerLocationListener()

private LocationListener gpsListener = null;

private MyLocationListener networkListener = null;

private void registerLocationListener() {

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

// TODO: Consider calling

// ActivityCompat#requestPermissions

// here to request the missing permissions, and then overriding

// public void onRequestPermissionsResult(int requestCode, String[] permissions,

// int[] grantResults)

// to handle the case where the user grants the permission. See the documentation

// for ActivityCompat#requestPermissions for more details.

return;

}

networkListener = new MyLocationListener();

gpsListener = new MyLocationListener();

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 3000, 0, networkListener);

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 0, gpsListener);

}

以上的代码还是很易懂的吧,创建1个监听器对象,然后指定1个provider,然后requestLocationUpdates。在监听器中检查如果是NETWORK_PROVIDER,则取消监听,只留GPS的监听(在你的实际应用中可以根据情况来进行,因为GPS有可能会因为建筑的阻挡而暂时不工作)。

位置精度的判断在showLocation方法中,我们打印了location的Accuracy属性,这就是精确度,一般来说NETWORK得到的位置精度一般在500-1000米,GPS得到的精度一般在5-50米,基于这个属性我们可以对精度进行判断,以决定是否采用这个精度。

4.增加判断获取的位置是否更好的方法isBetterLocation()

你可能已经注意到上面的代码中有1个isBetterLocation方法,这是用来判断获取的位置是否更好,事实上这个方法来自于Dev

Guide。我们看下这个方法的内容:

protected boolean isBetterLocation(Location location,

Location currentBestLocation) {

if (currentBestLocation == null) {

// A new location is always better than no location

return true;

}

// Check whether the new location fix is newer or older

long timeDelta = location.getTime() - currentBestLocation.getTime();

boolean isSignificantlyNewer = timeDelta CHECK_INTERVAL;

boolean isSignificantlyOlder = timeDelta -CHECK_INTERVAL;

boolean isNewer = timeDelta 0;

// If it's been more than two minutes since the current location,

// use the new location

// because the user has likely moved

if (isSignificantlyNewer) {

return true;

// If the new location is more than two minutes older, it must

// be worse

} else if (isSignificantlyOlder) {

return false;

}

// Check whether the new location fix is more or less accurate

int accuracyDelta = (int) (location.getAccuracy() - currentBestLocation

.getAccuracy());

boolean isLessAccurate = accuracyDelta 0;

boolean isMoreAccurate = accuracyDelta 0;

boolean isSignificantlyLessAccurate = accuracyDelta 200;

// Check if the old and new location are from the same provider

boolean isFromSameProvider = isSameProvider(location.getProvider(),

currentBestLocation.getProvider());

// Determine location quality using a combination of timeliness and

// accuracy

if (isMoreAccurate) {

return true;

} else if (isNewer !isLessAccurate) {

return true;

} else if (isNewer !isSignificantlyLessAccurate

isFromSameProvider) {

return true;

}

return false;

}

/** Checks whether two providers are the same */

private boolean isSameProvider(String provider1, String provider2) {

if (provider1 == null) {

return provider2 == null;

}

return provider1.equals(provider2);

}

从代码中可以很清楚的看出判断位置是否“更好”的准则,不仅使用了精度(getAccuracy()),还使用了时间进行判断。事实上除了在导航应用,其它的时候均可以直接使用上面的这个方法来对位置更新信息进行过滤,以减少不断更新界面而带来的性能损失。

5.结束监听

只需要调用LocationManager对象的removeUpdates(LocationListener listener)方法就可以停止监听。事实上,在之前的代码中你已经看到我们移除了基于移动网络的监听器,下面的代码片段用于移除GPS监听器。

if(gpsListener!=null){

locationManager.removeUpdates(gpsListener);

gpsListener=null;

}

LocationManager的其它使用这里还要介绍LocationManager中的几个方法:

getLastKnownLocation(String

provider),用于得到上次定位时的最后位置,通常在应用刚启动时立刻得到1个位置,这样应用看上去会比较快。

getBestProvider(Criteria

criteria, boolean

enabledOnly),根据条件(精度的高低,是否能够得到海拔等)以及当前是否开启,得到1个最好的位置Provider。看上去很美,但现在的Android系统中只有2个Provider,而大多数用户的GPS都是开启的,在仅仅是2选1的情况我想像不出这个方法的用途。而即便用户关闭了GPS,我们也有能力帮他开启,用完了之后再关掉它。开启的方法见《进阶:如何编程实现开启或关闭GPS?》。

总结2个Provider提供了不同精度的定位服务,我们可以根据情况来使用。

一般来说,先使用NETWORK来得到1个精度较差的位置,再使用GPS来得到更准确的位置。

概括起来就是2句话:“快速反应,渐进式精确”。在实际的使用中也要根据自己的情况画1个时间线,好决定何时开始监听,何时结束监听。

Android中定位系统怎么实现呢?求源代码

1.得到系统定位服务

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

2.加载定位监听

lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, locationListener);

locationListener = new LocationListener() {

@Override

public void onLocationChanged(Location location) {

System.out.println(location.getLatitude() + " " + location.getLongitude());

}

@Override

public void onStatusChanged(String provider, int status,

Bundle extras) {

// TODO Auto-generated method stub

}

@Override

public void onProviderEnabled(String provider) {

// TODO Auto-generated method stub

}

@Override

public void onProviderDisabled(String provider) {

// TODO Auto-generated method stub

}

};

3.得到最近一次监听地址

Location loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);

loc.getLatitude();

loc.getLongitude();

贫穷人士表示没有安卓手机 不能测试下了 大概的流程记得是这样

如何在Android中编程获得当前的GPS定位

您好,很高兴为您解答。

一、准备工作需要如下三种软件:1. Eclipse2. Android SDK3. 开发Android程序的Eclipse 插件

为了开始我们的工作,首先要安装Eclipse,然后从Google的网站获得Android SDK,并且安装Eclipse插件。

二、Activity类每一种移动开发环境都有自己的基类。如J2ME应用程序的基类是midlets,BREW的基类是applets,而Android程序的基类是 Activity。这个activity为我们提供了对移动操作系统的基本功能和事件的访问。这个类包含了基本的构造方法,键盘处理,挂起来恢复功能,以 及其他底层的手持设备的访问。实质上,我们的应用程序将是一个Activity类的扩展。在本文中读者将会通过例子学习到如何使用Activity类来编 写Android程序。

android中获取自己的手机号码

这个方法是从SIM中读取手机号码,但是并不是所有的SIM中都有写手机号码。应该说大部分的都没有。如果你手机设置中的“关于手机”能取到手机号,那么这个方法也肯定取不到。

现在一般通过运营商接口、发送短信等方式获取手机号码

android 手机 地图 定位 编程 如何获取 定位的地点 的图片 和 文字 信息

最近开发中使用的是百度地图android SDK:

1、初始化地图

2、注册定位监听器,初始化Location模块

3、初始化定位图层;启用定位,启用指南针,最后把定位图层添加到地图中。附简单代码:

//mMapView = (MapView) findViewById(R.id.bmapsView);

mMapView = new MapView(this); //初始化一个mapView 存放Map

mMapView.setBuiltInZoomControls(true);// 设置启用默认的缩放控件

locationManager = mBMapMan.getLocationManager();

/*

* 由于LocationListener获取第一个位置修正的时间会很长,为了避免用户等待,

* 在LocationListener获取第一个更精确的位置之前,应当使用getLocationInfo() 获取一个缓存的位置

*/

Location location = locationManager.getLocationInfo();

locationManager.requestLocationUpdates(this);

mMapController = mMapView.getController();// 得到mMapView的控制权,可以用它控制和驱动平移和缩放

if (location != null) {

mMapController.setCenter(new GeoPoint(

(int) (location.getLatitude() * 1E6), (int) (location

.getLongitude() * 1E6)));

}

mMapController.setZoom(12);// 设置地图zoom级别

MyLocationOverlay mylocTest = new MyLocationOverlay(this, mMapView);

mylocTest.enableMyLocation();

mylocTest.enableCompass();

mMapView.getOverlays().add(mylocTest);

@Override

public void onLocationChanged(Location location) {

// TODO Auto-generated method stub

if (location != null) {

mMapController.animateTo(new GeoPoint(

(int) (location.getLatitude() * 1E6), (int) (location

.getLongitude() * 1E6)));

}

}

如果你想点击定位地点,显示信息,你需要去扩展MyLocationOverlay图层,它里面有个public boolean onTap(GeoPoint p, MapView map) {}方法,是处理点击事件的。

有问题,可以与我联系,共同探讨。

关于android手机号码定位源代码和手机号定位手机号的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/22857.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载