cllocationmanager是一个单例吗
1 // 查询条件
2 Criteria criteria = new Criteria();
3 criteria.setAccuracy(Criteria.ACCURACY_FINE); // 定位的精准度
4 criteria.setAltitudeRequired(false); // 海拔信息是否关注
5 criteria.setBearingRequired(false); // 对周围的事物是否关心
6 criteria.setCostAllowed(true); // 是否支持收费查询
7 criteria.setPowerRequirement(Criteria.POWER_LOW); // 是否耗电
8 criteria.setSpeedRequired(false); // 对速度是否关注
9
10 // 获取最好的定位方式
android locationprovider通过什么定位
[java] view plain copy
package com.baidu.mapapi.demo;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.provider.Settings;
import android.widget.TextView;
import android.widget.Toast;
android 怎么判断gps没定位
/**
* 判断GPS是否开启,GPS或者AGPS开启一个就认为是开启的
* @param context
* @return true 表示开启
*/
public static final boolean gPSIsOPen(final Context context) {
LocationManager locationManager
= (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
// 通过GPS卫星定位,定位级别可以精确到街(通过24颗卫星定位,在室外和空旷的地方定位准确、速度快)
boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
// 通过WLAN或移动网络(3G/2G)确定的位置(也称作AGPS,辅助GPS定位。主要用于在室内或遮盖物(建筑群或茂密的深林等)密集的地方定位)
boolean network = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (gps || network) {
return true;
}
return false;
}
如何在Android中编程获得当前的GPS定位
您好,很高兴为您解答。
一、准备工作需要如下三种软件:1. Eclipse2. Android SDK3. 开发Android程序的Eclipse 插件
为了开始我们的工作,首先要安装Eclipse,然后从Google的网站获得Android SDK,并且安装Eclipse插件。
二、Activity类每一种移动开发环境都有自己的基类。如J2ME应用程序的基类是midlets,BREW的基类是applets,而Android程序的基类是 Activity。这个activity为我们提供了对移动操作系统的基本功能和事件的访问。这个类包含了基本的构造方法,键盘处理,挂起来恢复功能,以 及其他底层的手持设备的访问。实质上,我们的应用程序将是一个Activity类的扩展。在本文中读者将会通过例子学习到如何使用Activity类来编 写Android程序。
如何获取位置信息?
1. 系统不保证,每隔minTime的时间回调locationchanged,This field is only used as a hint to conserve power, and actual time between location updates may be greater or lesser than this value.2. 触发locationchanged的途径有两个,间隔时间满足或者距离超过minDistance 从楼主的描述看:这个方案获取适合你,可以使用闹铃,每隔一定时间获取一次定位,判断移动距离是否超过指定距离,则做相应处理
android 获取经纬度 location 为null
代码没有问题的;之所以获取不到经纬度是因为 gps 定位有一定事件,而且要求比较苛刻,要在空旷的地方呆一会才能获取。解决方法:按照你现在的代码逻辑。可以先用network 模式定位 然后缓存下来经纬度,如果获取不到经纬度就使用network模式的经纬度。(正常情况下除非你的手机没有手机卡,并且手机么有连接到wifi network 模式都是可以获取经纬度的)使用第三方sdk 比如百度 location sdk 或者高德定位sdk ,他们sdk 里面已经做了封装,默认先使用gps 定位如果gps定位失败再使用network 模式。这样做起来比较简单,就是需要集成sdk 配置环境。
mqtt 怎么实现android以后台service的方式获取gps数据,并定时发送到服务器
1 从Service继承一个类。
2 创建startService()方法。
3 创建endService()方法 重载onCreate方法和onDestroy方法,并在这两个方法里面来调用startService以及endService。
4 在startService中,通过getSystemService方法获取Context.LOCATION_SERVICE。
5 基于LocationListener实现一个新类。默认将重载四个方法onLocationChanged、onProviderDisabled、onProviderEnabled、onStatusChanged。对于onLocationChanged方法是我们更新最新的GPS数据的方法。一般我们的操作都只需要在这里进行处理。
6 调用LocationManager的requestLocationUpdates方法,来定期触发获取GPS数据即可。在onLocationChanged函数里面可以实现我们对得到的经纬度的最终操作。
7 最后在我们的Activity里面通过按钮来启动Service,停止Service。
示意代码如下:
package com.offbye.gpsservice;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;
public class GPSService extends Service {
// 2000ms
private static final long minTime = 2000;
// 最小变更距离10m
private static final float minDistance = 10;
String tag = this.toString();
private LocationManager locationManager;
private LocationListener locationListener;
private final IBinder mBinder = new GPSServiceBinder();
public void startService() {
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationListener = new GPSServiceListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime, minDistance,
locationListener);
}
public void endService() {
if (locationManager != null && locationListener != null) {
locationManager.removeUpdates(locationListener);
}
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return mBinder;
}
android在service中能不能用gps定位
原因:1丶检查手机是否有明显的碰撞痕迹,可能是由于手机进行了碰撞而导致手机的GPS损坏从而无法进行定位。有的人手机摔了之后无线网就不能用了,或者蓝牙不能开,都是因为手机碰撞造成的。2丶进入百度地图的APP,检查是否是最新版本的APP手机应用,如果不是,请及时进行更新,如果是经常处在wifi环境下,可以勾选wifi环境下自动更新的选项。3丶在手机的安全中心中,查看是否给了百度地图APP的权限,如果没有的话,可以打开,这样一来,手机授权百度地图GPS定位服务,从而使百度地图可以定位自己的位置。4丶检查一下自己下的百度地图APP是否是真正的官方授权的正版软件。
iOS判断应用是否有定位权限
1.导入类库:#import 2.判断用户手机是否开启了定位服务:这里就要查看CLLocationManager的授权状态,此方法会返回当前授权状态:[CLLocationManager authorizationStatus]授权状态为枚举值:kCLAuthorizationStatusNotDetermined //用户尚未对该应用程序作出选择kCLAuthorizationStatusRestricted //应用程序的定位权限被限制 kCLAuthorizationStatusAuthorizedAlways //一直允许获取定位kCLAuthorizationStatusAuthorizedWhenInUse //在使用时允许获取定位kCLAuthorizationStatusAuthorized //已废弃,相当于一直允许获取定位kCLAuthorizationStatusDenied //拒绝获取定位3.判断用户是否授权应用获取定位权限的完整代码:if ([CLLocationManager locationServicesEnabled] && ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedWhenInUse || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized)) { //定位功能可用}else if ([CLLocationManager authorizationStatus] ==kCLAuthorizationStatusDenied) {//定位不能用iOS判断应用是否有定位权限
iOS 判断应用是否有使用相机的权限
iOS7之前都可以访问相机,iOS7之后访问相机有权限设置。打开设置/iknow-pic.cdn.bcebos.com/1b4c510fd9f9d72adc70a246d82a2834349bbb51"target="_blank"title="点击查看大图"class="ikqb_img_alink">/iknow-pic.cdn.bcebos.com/1b4c510fd9f9d72adc70a246d82a2834349bbb51?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="https://iknow-pic.cdn.bcebos.com/1b4c510fd9f9d72adc70a246d82a2834349bbb51"/>2.拉到底端找一个应用,微信举例。/iknow-pic.cdn.bcebos.com/37d12f2eb9389b50be8752098935e5dde7116e75"target="_blank"title="点击查看大图"class="ikqb_img_alink">/iknow-pic.cdn.bcebos.com/37d12f2eb9389b50be8752098935e5dde7116e75?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="https://iknow-pic.cdn.bcebos.com/37d12f2eb9389b50be8752098935e5dde7116e75"/>3.看到相机可以开启和关闭权限。一般新下载的应用在点开第一会有提示要不要开启相机权限,如果没有开启,想开启的时候进行以下步骤就可以了。打开设置找到想查看的软件看到相机打开后面的按钮(绿色为打开)
求Android GPS的完全代码啊,现老是取不到坐标!!!
先在manifest里面配置
做一个button在OnClick事件里面写
LocationManager locationmanager=(LocationManager) Location01Activity.this.getSystemService(Context.LOCATION_SERVICE);
//作用:1定义当前所使用的LocationProvider,后面的参数,一个是时间(间隔的最小时间,毫秒单位,更新位置,但是为了保存电量间隔可能比这个大也可能比这个小)
//两次定位的最小距离,单位是米
locationmanager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new TestLocationListener());
//如果如下设置,则用户需要移动5000米并过5秒后才会显示
//locationmanager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 5000, new TestLocationListener());
再定义一个类
class TestLocationListener implements LocationListener{
@Override
public void onLocationChanged(Location arg0) {
System.out.println(arg0.getLongitude());//经度
System.out.println(arg0.getLatitude());//纬度
}
//当数据的提供者不能用的时候
@Override
public void onProviderDisabled(String arg0) {
}
//当数据的提供者能用的时候
@Override
public void onProviderEnabled(String arg0) {
}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
}
}