获取定位信息,测试前先确定打开,位置信息

package com.example.testactivity.service;import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;import com.cosofteck.Can;
import com.cosofteck.CanFrame;import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.location.GpsSatellite;
import android.location.GpsStatus;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Binder;
import android.os.Bundle;
import android.os.IBinder;
import android.widget.Toast;/** GPS 经纬�? 海拔 星数等信息的获取* @author Ting9* @Date 20180609*/public class GpsService extends Service {public static Location   mLocation    = null; // new Location("");/* GPS相关的数据的全局变量 */private String           longitude    = " "; // 经度private String           latitude     = " "; // 纬度private String           bearing      = " "; // 方位private String           altitude     = " "; // 海拔private String           satelliteNum = " "; // 卫星数目private String           gpsSpeed     = " "; // 速度private String           gpsTime      = " "; // GPS时间private LocationManager  locationManager;private String           provider;public static GpsService gpsService   = null;class GpsDataAcquire extends Binder {public GpsService getServiceInstance() {// 返回实例return GpsService.this;}public String getLongitude() {return longitude;}public String getLatitude() {return latitude;}public String getBearing() {return bearing;}public String getAltitude() {return altitude;}public String getSatelliteNum() {return satelliteNum;}public String getGpsSpeed() {return gpsSpeed;}public String getGpsTime() {return gpsTime;}}@Overridepublic IBinder onBind(Intent intent) {// 此处如果不返回一个Binder实例,onServiceConnected不会调用return new GpsDataAcquire();}@Overridepublic void onCreate() {super.onCreate();gpsService = this;locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);// 获取有效的provider,并显示出来List<String> providerList = locationManager.getProviders(true);if (providerList.contains(LocationManager.GPS_PROVIDER)) {provider = LocationManager.GPS_PROVIDER;} else if (providerList.contains(LocationManager.NETWORK_PROVIDER)) {provider = LocationManager.NETWORK_PROVIDER;} else {Toast.makeText(this, "没有可用的位置提供器", Toast.LENGTH_SHORT).show();return;}// 获取�?后一次定位信�?Location location = locationManager.getLastKnownLocation(provider);if (location != null) {System.out.println("location 有值-----");showLocation(location);    //返回位置信息}System.out.println("位置信息 ==== " + location);// gps位置监听设置监听器,设置自动更新间隔这里设置1000ms,移动距离:0�?locationManager.requestLocationUpdates(provider, 1000, 0, locationListener);// GPS状�?�监控,设置状�?�监听回调函数,statusListener是监听的回调函数locationManager.addGpsStatusListener(statusListener);//        CanStart();}// CAN 连接
//    public void CanStart() {// TODO Auto-generated method stub// 设置比特率
//        Can.SetBitrate(250000);
//        Can.Start();
//       System.out.println("CAN 连接---");// 接收数据线程
//       Can.ReadInit(29, 3, 1); // 接收初始化
//   }@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {return super.onStartCommand(intent, flags, startId);}//    --------------------------@Overridepublic void onDestroy() {if (locationManager != null) {locationManager.removeUpdates(locationListener);}super.onDestroy();}// 卫星信号private List<GpsSatellite>       numSatelliteList = new ArrayList<GpsSatellite>();// GpsStatus监听器,处理卫星返回的数�?private final GpsStatus.Listener statusListener   = new GpsStatus.Listener() {// GPS状�?�变化时的回调,如卫星数public void onGpsStatusChanged(int event) {// GPS状�?�变化时的回调,获取当前的状�?GpsStatus status = locationManager.getGpsStatus(null); // 取当前状�?// 自己编写的方法,获取卫星状�?�相关数�?updateGpsStatus(event, status);}};/** 获取搜索到的卫星 获取搜索到的卫星数目,主要是通过status.getSatellites()实现。* 获取到的GpsSatellite对象�? 保存到一个队列里面,用于后面刷新界面。上面是获取GPS状�?�监听器,* 除了GPS状�?�外,我们还�?要监听一个服务, 就是:LocationListener,定位监听器,监听位置的变化*/private String updateGpsStatus(int event, GpsStatus status) {StringBuilder sb2 = new StringBuilder("");if (status == null) {sb2.append("搜索到卫星个数:" + 0);} else if (event == GpsStatus.GPS_EVENT_SATELLITE_STATUS) {// 获取�?大的卫星�?(预设�?)int maxSatellites = status.getMaxSatellites();Iterator<GpsSatellite> it = status.getSatellites().iterator();numSatelliteList.clear();// 记录实际的卫星数int count = 0;while (it.hasNext() && count <= maxSatellites) {// 保存卫星的数据到�?个队列,用于刷新界面GpsSatellite s = it.next();numSatelliteList.add(s);count++;}sb2.append("搜索到卫星个数:" + numSatelliteList.size());}satelliteNum = numSatelliteList.size() + ""; // 卫星数目return sb2.toString();}/** LocationListener,定位监听器,监听位置的变化 获取到当前的GPS数据。另外我们可以�?�过回调函数提供的location参数�? 获取GPS的地理位置信息,包括经纬度经度、海拔等信息�?*/LocationListener locationListener = new LocationListener() {@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {// Provider的状态在可用、暂时不可用和无服务三个状�?�直接切换时触发此函�?}@Overridepublic void onProviderEnabled(String provider) {// Provider被enable时触发此函数,比如GPS被打�?}@Overridepublic void onProviderDisabled(String provider) {// Provider被disable时触发此函数,比如GPS被关�?}@Overridepublic void onLocationChanged(Location location) {// TODO Auto-generated method stub// 当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触�?showLocation(location);mLocation = location;}};/** 通过回调函数提供的location参数,获取GPS的地理位置信息,包括经纬度经度、海拔等信息*//*** @param location*/private void showLocation(Location location) {// 时间long GpsTime = location.getTime();// 利用Date进行时间的转�?Date date = new Date(GpsTime);location.getExtras().putString("LOCATION_PROVIDER", "GPS_CFG_GPS");// 用于格式化十进制数字DecimalFormat df = new DecimalFormat();df.applyPattern("###.000000");// 经度longitude = df.format(location.getLongitude());// 纬度latitude = df.format(location.getLatitude());System.out.println("经度 ==  " + longitude + "  纬度 == " + latitude);if (location.getSpeed() < 2) {df.applyPattern("####0.00");// 方向bearing = df.format(0) + "";} else {// 方位bearing = location.getBearing() + "";}// 海拔altitude = location.getAltitude() + "";df.applyPattern("####0.00");// GPS速度gpsSpeed = df.format(location.getSpeed()* 3.6) + "";     //m/s ---> km/h// GPS时间gpsTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);}}

MainActivity中开启:

package com.explme.Activity;import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.util.Log;public class MainActivity extends Activity {private static final String TAG = "starttest";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Intent intent = new Intent(MainActivity.this, GpsService.class);startService(intent);Log.d(TAG, "onCreate0");}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}

清单文件中;注册GPS

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.testactivity"android:versionCode="1"android:versionName="1.0" ><uses-permission android:name="android.permission.INTERNET" />          <!-- 互联网 --><uses-sdkandroid:minSdkVersion="19"android:targetSdkVersion="21" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher_camera"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.example.testactivity.MainActivity"android:label="@string/app_name"android:theme="@android:style/Theme.NoTitleBar" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><serviceandroid:name="com.example.testactivity.GpsService"android:launchMode="singleTask" ></service></application></manifest>

Android 基于4G模块 GPS定位相关推荐

  1. 基于单片机和GPS定位农田面积测量仪设计(毕业设计资料)

    106[电路方案]基于单片机和GPS定位农田面积测量仪设计 摘要: 基于单片机和GPS定位农田面积测量仪设计(原理图+源程序+bom表+演示视频) 通过串口1连接ATK-NEO-6M GPS模块,然后 ...

  2. Android基于百度LBS的定位

    Android基于百度LBS的定位 一.百度SDK使用流程 1. 注册开发者账号 2. 获取SHA1和包名 二.AndroidStudio的配置 1. 下载SDK 2. 配置AndroidManife ...

  3. 推荐基于4G模块打造的超低功耗4G摄像头通讯板

    目前市面上大部分的通信板子都是用4G+MCU的模式去做,这样做体积太大,成功有很高,在市面上没啥优势. 如果直接基于4G模块直接开发体积会小,成本明显要低.下面给大家推荐一款: 看上的找我:152 2 ...

  4. 基于51单片机GPS定位公交车自动报站系统(程序+原理图+PCB+论文+全套资料)

    功能介绍: 1.电路设计合理. 2.熟练地使用STC89C52单片机.GPR模块,掌握其原理. 3.可设置播报声音的大小.上行或下行.显示时间等内容 4.采用LCD12864显示时间,位置等信息. 5 ...

  5. Android网络定位或GPS定位

    简单的位置定位 设备位置定位的方式有两种:GPS定位和网络定位. 1.GPS准确度高但耗电多, 2.网络定位耗电少但准确度低 下面介绍Android中最简单的获得手机地理位置的方法: 1.添加权限 & ...

  6. android 10.0关闭gps定位功能

    1.概述 在10.0的产品定制化开发中,有些是不需要gps定位功能的,所以就需要屏蔽掉gps上报定位数据的功能,而在framework层中是通过/frameworks/base/location/ja ...

  7. Android基于高德地图实时定位服务

    Service功能有:实时定位(后台进行) Service不会,去百度谷歌 功能有 实时定位(30秒间隔) 判断是否在规定的时间段内 判断距离是否大于规定的距离 判断服务是否在开启的状态 服务代码:L ...

  8. Android有官方的GPS定位API,为什么还要使用百度/高德定位SDK ?

    1. 背景 小组在一个Demo项目中,图省事准备使用官方的GPS定位API. 但在我的印象中,官方的定位API是不好用的,一般都是用 高德地图/百度地图 的定位SDK的. 使用官方的定位API获取定位 ...

  9. android局域网聊天毕业设计,Android基于wifi模块的局域网聊天以及文件传输app

    [实例简介] 一款基于wifi模块的局域网实时聊天以及文件互传的安卓app,能实现热点创建,热点连接,文件传输,实时通讯等功能. [实例截图] [核心代码] MyFeiGe2.0 └── MyFeiG ...

最新文章

  1. showdialog 尝试读取或写入受保护的内存_共享内存在不同系统的应用与优劣详解...
  2. 请教visio-uml-活动图中动作状态和状态的区别谢谢 - 软件工程-管理 - 软件规划版...
  3. c语言如何发现错误在哪里,二个C语言例子,编译没通过.不知道错在哪里[求助]
  4. 快速构建Windows 8风格应用33-构建锁屏提醒
  5. ssl2295-暗黑破坏神【dp练习】
  6. 读书笔记——数据压缩入门(柯尔特·麦克安利斯)下
  7. 考满分软件测试工程师(实习)面试软达启航面试
  8. iOS蓝牙开发之数据传输精华篇
  9. CAS单点登录及处理流程介绍(一)
  10. 解决TextView中文英文数字混排导致的自动换行问题
  11. 微型计算机有哪些型号,微型计算机一般按什么进行分类
  12. bzoj:1922: [Sdoi2010]大陆争霸 (luogu 2446)
  13. BTA | 量子链帅初:区块链的开发很漫长,技术突破要有十年心理预期
  14. 一件虚拟连衣裙价值9500美元?然而这只是数字服装的开始……
  15. 手机问题点整理和总结
  16. ScriptManager.RegisterStartupScript()方法
  17. 自动添加芝麻代理白名单的方法
  18. 【dubbo-2.5.x】Linux下dubbo-admin监控/管理平台部署详细教程
  19. 如何管理WiFi无线网络?
  20. 关于计算机语言的知识正确的是,2019微软认证考试精选模拟题及答案(1.17)

热门文章

  1. 运行safari提示:无法启动此程序,因为计算机中丢失 QTCF.dll
  2. android架构师技能图谱
  3. VisualGDB系列3:安装VisualGDB
  4. amtisy带你暴炒基金Action-Three:聊聊如何选基金
  5. 面向集团客户云计算运营平台的运营开通技术方案及应用架构——之云计算运营平台方案(三)
  6. hypermill后处理构造器安装_UG如何用后处理构造器创建一个新的后处理文件?
  7. 怎样0成本搭建一个高效CDN加速图床
  8. 实用网站软文美化编辑与网站图片链接限位代码
  9. OSChina 周一乱弹 —— 喝掉这瓶奶 忘掉那个仔
  10. [技术讨论]多点矩阵控制系统