Android Location服务之LocationManager案例详解
package com.scott.location;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.MapView.LayoutParams;
public class MainActivity extends MapActivity {
private MapView mapView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mapView = (MapView) findViewById(R.id.mapView);
mapView.getController().setZoom(17);
final LocationManager locMgr = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
//获取缓存中的位置信息
Location location = locMgr.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
markCurrLocation(location);
}
final MyLocationListener listener = new MyLocationListener();
//注册位置更新监听(最小时间间隔为5秒,最小距离间隔为5米)
locMgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 5, listener);
Button removeUpdates = (Button) findViewById(R.id.removeUpdates);
removeUpdates.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//停止监听
locMgr.removeUpdates(listener);
}
});
}
/**
* 标记当前位置
* @param location
*/
private void markCurrLocation(Location location) {
mapView.removeAllViews(); //清除地图上所有标记视图
GeoPoint point = new GeoPoint((int) (location.getLatitude() * 1E6), (int) (location.getLongitude() * 1E6));
mapView.getController().animateTo(point);
final MapView.LayoutParams params = new MapView.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, point, LayoutParams.BOTTOM_CENTER);
final ImageView marker = new ImageView(MainActivity.this);
marker.setImageResource(R.drawable.marker);
marker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "hello, location manager!", Toast.LENGTH_SHORT).show();
}
});
mapView.addView(marker, params);
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
private final class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location location) {
markCurrLocation(location);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
//Provider状态在可用、暂不可用、无服务三个状态之间直接切换时触发此函数
}
@Override
public void onProviderEnabled(String provider) {
//Provider被enable时触发此函数,比如GPS被打开
}
@Override
public void onProviderDisabled(String provider) {
//Provider被disable时触发此函数,比如GPS被关闭
}
}
}
- .NET Core系列之MemoryCache 初识
- 007手机一键Root(安机网一键Root) v3.0 官方最新版 一键ROOT您的Android手机
- 12306密码被盗了怎么办?12306密码外泄解决方法
- 12个字的qq网名
- 150M迷你型无线路由器怎么设置?
- 192.168.1.1打不开怎么办?路由器192.168.1.1打不开的原因以及解决办法
- 2011年电子报合订本 电子报 编辑部 中文 PDF版 [84M]
- 2015年1月15日小米新旗舰发布会现场图文直播
- 2016.3.1vivo Xplay5新品发布会现场视频直播 优酷直播
- 2016华为P9发布会视频直播地址 4月15日华为P9国行发布会直播
相关文章
- Android ListView分页简单实现
- Android入门之Menu组件的使用教程详解
- Android TextView的TextWatcher使用案例详解
- Android编程之绝对布局AbsoluteLayout和相对布局RelativeLayout实例详解
- Android drawable微技巧,你不知道的drawable细节
- Android之ListView分页加载数据功能实现代码
- Android控件系列之EditText使用方法
- Android中的OpenGL使用配置详解
- 9Cut v2.0.0 九格宫样式图 for android(安卓)版
- Android自定义View实现LayoutParams的方法详解