易网时代-编程资源站
Welcome
微信登录
编程资源
图片资源库
蚂蚁家优选
PDF转换器
软件资源
软件开发
、
小程序制作
、
系统集成与运维
、
空间租用
、
硬件开发
、
视频监控
、
技术咨询与支持
——联系电话:0311-88999002/88999003
首页
/
操作系统
/
Linux
/
Android获取GPS坐标
Android获取GPS坐标:
package
an.android.application;
import
java.util.Iterator;
import
android.app.Activity;
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.Bundle;
import
android.util.Log;
import
android.view.Menu;
import
android.view.MenuItem;
import
android.view.View;
import
android.widget.Button;
import
android.widget.Toast;
public
class
SpeedToll
extends
Activity {
/** Called when the activity is first created. */
private
static
final
int
Search = Menu.FIRST;
private
static
final
int
Myloc = Menu.FIRST +
1
;
private
static
final
int
Exit = Menu.FIRST +
2
;
private
LocationManager locationManager;
private
GpsStatus gpsstatus;
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
/* 加载main.xml Layout */
setContentView(R.layout.desktop);
/* 以findViewById()取得Button对象,并加入onClickListener */
Button b1 = (Button) findViewById(R.id.button1);
b1.setOnClickListener(
new
Button.OnClickListener()
{
public
void
onClick(View v)
{
/* new一个Intent对象,并指定要启动的class */
Intent intent =
new
Intent();
intent.setClass(SpeedToll.
this
, Map.
class
);
/* 调用一个新的Activity */
startActivity(intent);
/* 关闭原本的Activity */
//SpeedToll.this.finish();
}
});
Button b2 = (Button) findViewById(R.id.button1);
b2.setOnClickListener(
new
Button.OnClickListener()
{
public
void
onClick(View v)
{
/* new一个Intent对象,并指定要启动的class */
Intent intent =
new
Intent();
intent.setClass(SpeedToll.
this
, Map.
class
);
/* 调用一个新的Activity */
startActivity(intent);
/* 关闭原本的Activity */
//SpeedToll.this.finish();
}
});
}
public
boolean
onCreateOptionsMenu(Menu menu) {
super
.onCreateOptionsMenu(menu);
menu.add(
0
, Search, Menu.NONE,
"搜索"
);
menu.add(
0
, Myloc, Menu.NONE,
"定位"
);
menu.add(
0
, Exit, Menu.NONE,
"退出"
);
return
true
;
}
//menu
public
boolean
onOptionsItemSelected(MenuItem item)
{
//super.onOptionsItemSelected(item);
switch
(item.getItemId()){
case
Search:
//Search();
break
;
case
Myloc:
GetMyLocation();
break
;
case
Exit:
//mLocationManager.removeUpdates(this); //关闭GPS
this
.finish();
break
;
}
return
super
.onOptionsItemSelected(item);
}
public
boolean
GetMyLocation(){
//获取到LocationManager对象
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
//根据设置的Criteria对象,获取最符合此标准的provider对象
String currentProvider = locationManager.getProvider(LocationManager.GPS_PROVIDER).getName();
//根据当前provider对象获取最后一次位置信息
Location currentLocation = locationManager.getLastKnownLocation(currentProvider);
//如果位置信息为null,则请求更新位置信息
if
(currentLocation ==
null
){
locationManager.requestLocationUpdates(currentProvider,
0
,
0
, locationListener);
}
//增加GPS状态监听器
locationManager.addGpsStatusListener(gpsListener);
//直到获得最后一次位置信息为止,如果未获得最后一次位置信息,则显示默认经纬度
//每隔10秒获取一次位置信息
while
(
true
){
currentLocation = locationManager.getLastKnownLocation(currentProvider);
if
(currentLocation !=
null
){
Log.d(
"Location"
,
"Latitude: "
+ currentLocation.getLatitude());
Log.d(
"Location"
,
"location: "
+ currentLocation.getLongitude());
Toast.makeText(SpeedToll.
this
,
"Latitude: "
+ currentLocation.getLatitude()+
" "
+
"location: "
+ currentLocation.getLongitude(), Toast.LENGTH_SHORT).show();
break
;
}
else
{
Log.d(
"Location"
,
"Latitude: "
+
0
);
Log.d(
"Location"
,
"location: "
+
0
);
}
try
{
Thread.sleep(
10000
);
}
catch
(InterruptedException e) {
Log.e(
"Location"
, e.getMessage());
}
}
return
false
;
}
private
GpsStatus.Listener gpsListener =
new
GpsStatus.Listener(){
//GPS状态发生变化时触发
@Override
public
void
onGpsStatusChanged(
int
event) {
//获取当前状态
gpsstatus=locationManager.getGpsStatus(
null
);
switch
(event){
//第一次定位时的事件
case
GpsStatus.GPS_EVENT_FIRST_FIX:
break
;
//开始定位的事件
case
GpsStatus.GPS_EVENT_STARTED:
break
;
//发送GPS卫星状态事件
case
GpsStatus.GPS_EVENT_SATELLITE_STATUS:
Toast.makeText(SpeedToll.
this
,
"GPS_EVENT_SATELLITE_STATUS"
, Toast.LENGTH_SHORT).show();
Iterable<GpsSatellite> allSatellites = gpsstatus.getSatellites();
Iterator<GpsSatellite> it=allSatellites.iterator();
int
count =
0
;
while
(it.hasNext())
{
count++;
}
Toast.makeText(SpeedToll.
this
,
"Satellite Count:"
+ count, Toast.LENGTH_SHORT).show();
break
;
//停止定位事件
case
GpsStatus.GPS_EVENT_STOPPED:
Log.d(
"Location"
,
"GPS_EVENT_STOPPED"
);
break
;
}
}
};
//创建位置监听器
private
LocationListener locationListener =
new
LocationListener(){
//位置发生改变时调用
@Override
public
void
onLocationChanged(Location location) {
Log.d(
"Location"
,
"onLocationChanged"
);
}
//provider失效时调用
@Override
public
void
onProviderDisabled(String provider) {
Log.d(
"Location"
,
"onProviderDisabled"
);
}
//provider启用时调用
@Override
public
void
onProviderEnabled(String provider) {
Log.d(
"Location"
,
"onProviderEnabled"
);
}
//状态改变时调用
@Override
public
void
onStatusChanged(String provider,
int
status, Bundle extras) {
Log.d(
"Location"
,
"onStatusChanged"
);
}
};
}
主要有两个文件,一个是主文件,一个是xml文件。
更多Android相关信息见
Android
专题页面
http://www.linuxidc.com/topicnews.aspx?tid=11
收藏该网址
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图