Android 怎样稳定的获取原生GPS数据

Android 怎样稳定的获取原生GPS数据,第1张

定位了就有经纬度,没定位,则一直闪的;

一般是4个星的时候 会定位。

所以可以根据是否获取有效的经纬度信息来判断是否定位。

卫星的个数 sv_status也是可以通过API获取的。LOCATION类

给一段咱的代码,看看就知道了。

locationManageraddGpsStatusListener(statusListener);//侦听GPS状态

private GpsStatusListener statusListener = new GpsStatusListener()

{

public void onGpsStatusChanged(int event)

{

// TODO Auto-generated method stub

GpsStatus gpsStatus= locationManagergetGpsStatus(null);

Logv(TAG,"GPS status listener ");

//UtilsDisplayToastShort(GPSServicethis, "GPS status listener ");

switch(event)

{

case GpsStatusGPS_EVENT_FIRST_FIX:{

//第一次定位时间UTC gps可用

//Logv(TAG,"GPS is usable");

int i=gpsStatusgetTimeToFirstFix();

UtilsDisplayToastShort(GPSServicethis, "GPS 第一次可用 "+i);

UtilssetGPSStatus(UtilsGPS_STATUSSTART);

break;

}

case GpsStatusGPS_EVENT_SATELLITE_STATUS:{//周期的报告卫星状态

//得到所有收到的卫星的信息,包括 卫星的高度角、方位角、信噪比、和伪随机号(及卫星编号)

Iterable<GpsSatellite> allSatellites;

allSatellites = gpsStatusgetSatellites();

Iterator<GpsSatellite>iterator = allSatellitesiterator();

int numOfSatellites = 0;

int maxSatellites=gpsStatusgetMaxSatellites();

while(iteratorhasNext() && numOfSatellites<maxSatellites){

numOfSatellites++;

iteratornext();

}

Logv(TAG,"GPS is unusable "+ numOfSatellites +" "+ maxSatellites);

if( numOfSatellites < 3){

// UtilsDisplayToastShort(GPSServicethis, "卫星少于3颗");

UtilssetGPSStatus(UtilsGPS_STATUSSTOP);

} else if(numOfSatellites > 7){

UtilssetGPSStatus(UtilsGPS_STATUSSTART);

}

break;

}

case GpsStatusGPS_EVENT_STARTED:{

//UtilsDisplayToastShort(GPSServicethis, "GPS start Event");

break;

}

case GpsStatusGPS_EVENT_STOPPED:{

//UtilsDisplayToastShort(GPSServicethis, "GPS stop Event");

UtilssetGPSStatus(UtilsGPS_STATUSSTOP);

break;

}

default :

break;

}

}

};

数据库很多,但是安卓直接支持的数据库只有sqlite一种。如果要使用其它的非本地数据库,你得建立连接,采用webservice或>

Android 不自动提供数据库。在 Android 应用程序中使用 SQLite,必须自己创建数据库,然后创建表、索引,填充数据。Android 提供了 SQLiteOpenHelper 帮助你创建一个数据库,你只要继承 SQLiteOpenHelper 类,就可以轻松的创建数据库。SQLiteOpenHelper 类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。SQLiteOpenHelper 的子类,至少需要实现三个方法:

构造函数,调用父类 SQLiteOpenHelper 的构造函数

onCreate()方法;// TODO 创建数据库后,对数据库的 *** 作

onUpgrage()方法。// TODO 更改数据库版本的 *** 作

当你完成了对数据库的 *** 作(例如你的 Activity 已经关闭),需要调用 SQLiteDatabase 的 Close() 方法来释放掉数据库连接。

*** 作数据库的最佳实践是创建一个辅助类,例如联系人模块

class ContactsDatabaseHelper extends SQLiteOpenHelper

32 Cursor类

Android使用Cursor类返回一个需要的值,Cursor作为一个指针从数据库查询返回结果集,使用Cursor允许Android更有效地管理它们需要的行和列,你使用ContentValues对象存储键/值对,它的put()方法允许你插入不同数据类型的键值。

33 数据类型

SQLite 和其他数据库最大的不同就是对数据类型的支持,创建一个表时,可以在 CREATE TABLE 语句中指定某列的数据类型,但是你可以把任何数据类型放入任何列中。当某个值插入数据库时,SQLite 将检查它的类型。如果该类型与关联的列不匹配,则 SQLite 会尝试将该值转换成该列的类型。如果不能转换,则该值将作为其本身具有的类型存储。比如可以把一个字符串(String)放入 INTEGER 列。SQLite 称这为“弱类型”(manifest typing)。

四、数据库 *** 作

41创建和打开数据库

在Android中创建和打开一个数据库都可以使用openOrCreateDatabase方法来实现,因为它会自动去检测是否存在这个数据库,如果存在则打开,如果不存在则创建一个数据库:创建成功则返回一个SQLiteDatebase对象,否则抛出异常FileNotFoundException。

下面我们来创建一个名为Test的数据库,并返回一个SQLiteDatabase对象mSQLiteDatabase。

mSQLiteDatabase=thisopenOrCreateDatabase("Test",MODE_PRIVATE,null);

42创建表

通过execSQL方法来执行一条SQL语句。

String CREATE_TABLE="create table 表名(列名,列名,……)";

mSQLiteDatabaseexecSQL(CREATE_TABLE);

创建表的时候总要确定一个主键,这个字段是64位整型,别名_rowid。其特点就是自增长功能。当到达最大值时,会搜索该字段未使用的值(某些记录被删除_rowid会被回收),所以要唯一严格增长的自动主键必须加入关键字autoincrement。

43删除表

mSQLiteDatabase("drop table 表名");

按以下代码可获取到list数据:

package comexamplesdtgsdsw;

import javaioIOException;

import javautilArrayList;

import javautilHashMap;

import javautilList;

import javautilMap;

import orgksoap2SoapEnvelope;

import orgksoap2SoapFault;

import orgksoap2serializationSoapObject;

import orgksoap2serializationSoapSerializationEnvelope;

import orgksoap2transport>

接口文档不是直接让获取数据用的 接口文档就是提供给你URL地址,参数,方法名之类的。然后你从前台要连网的时候,根据接口文档的URL,参数等 连网获取数据。获取到数据后需要解析。目前主流的就是json或者xml格式的。解析后就是你需要的数据

以上就是关于Android 怎样稳定的获取原生GPS数据全部的内容,包括:Android 怎样稳定的获取原生GPS数据、android 手机怎么连接电脑上的数据库,直接获取数据库数据、android app如何从数据库中获取需要的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9798590.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存