这是一个简单的google+GPS程序
public class MapActivityMain extends MapActivity {
private LocationManager locationManager;
private MapView mapView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String service = Context.LOCATION_SERVICE;
locationManager = (LocationManager)getSystemService(service);
/*Location provider查询条件*/
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);//设置高位置解析经度
criteria.setAltitudeRequired(false); //不要求得到海拔高度
criteria.setBearingRequired(false);//不要求得到方向
criteria.setCostAllowed(true);//允许运营商扣费
criteria.setPowerRequirement(Criteria.POWER_LOW);//低电池消耗
//String provider = locationManager.getBestProvider(criteria, true);
String provider = LocationManager.NETWORK_PROVIDER;
Location location = locationManager.getLastKnownLocation(provider);
this.updateWithNewLocation(location);
//设置监听器,自动更新的最小时间间隔为2秒,最小位移变化超过10米
locationManager.requestLocationUpdates(provider, 2000, 10, new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
//当provider的硬件状态变化时更新
}
@Override
public void onProviderEnabled(String provider) {
//当Location Provider可用时更新
}
@Override
public void onProviderDisabled(String provider) {
//当Location Provider被禁用时更新
updateWithNewLocation(null);
}
@Override
public void onLocationChanged(Location location) {
//当位置发生变化时更新
updateWithNewLocation(location);
}
});
mapView = (MapView)findViewById(R.id.mapview);
List<Overlay> overlays = mapView.getOverlays();
MyLocationOverlay myLocationOverlay = new MyLocationOverlay(this, mapView);
myLocationOverlay.enableMyLocation();
overlays.add(myLocationOverlay);
final MapController mapController = mapView.getController();
//缩放控件ZoomControls
mapView.setBuiltInZoomControls(true);
ToggleButton toggleButton = (ToggleButton)findViewById(R.id.tgBtn_satellite);
toggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked==true) { //卫星视图开
mapView.setSatellite(true);
}
else { //卫星视图关
mapView.setSatellite(false);
}
}
});
}
@Override
protected boolean isRouteDisplayed() { //表示是否需要在地图上绘制导航线路,默认是不需要即false
return false;
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==4) { //键值为4时,即返回键被触发
this.finish();
}
return super.onKeyDown(keyCode, event);
}
private void updateWithNewLocation(Location location) {
String strLatLong;
TextView tv = (TextView)findViewById(R.id.tv_info);
if(location!=null) {
double lat = location.getLatitude();
double lng = location.getLongitude();
strLatLong = "经度: " + lng + "\n纬度:" + lat;
}
else {
strLatLong = "无法获取经纬度";
}
tv.setText(strLatLong);
}
}
现在的问题是在按下返回键(返回键键值为4)之后,应用程序退出,可问题是程序退出后,手机状态栏里的GPS卫星扫描的的图标仍在闪烁?不知如何关闭?
public class MapActivityMain extends MapActivity {
private LocationManager locationManager;
private MapView mapView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String service = Context.LOCATION_SERVICE;
locationManager = (LocationManager)getSystemService(service);
/*Location provider查询条件*/
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);//设置高位置解析经度
criteria.setAltitudeRequired(false); //不要求得到海拔高度
criteria.setBearingRequired(false);//不要求得到方向
criteria.setCostAllowed(true);//允许运营商扣费
criteria.setPowerRequirement(Criteria.POWER_LOW);//低电池消耗
//String provider = locationManager.getBestProvider(criteria, true);
String provider = LocationManager.NETWORK_PROVIDER;
Location location = locationManager.getLastKnownLocation(provider);
this.updateWithNewLocation(location);
//设置监听器,自动更新的最小时间间隔为2秒,最小位移变化超过10米
locationManager.requestLocationUpdates(provider, 2000, 10, new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
//当provider的硬件状态变化时更新
}
@Override
public void onProviderEnabled(String provider) {
//当Location Provider可用时更新
}
@Override
public void onProviderDisabled(String provider) {
//当Location Provider被禁用时更新
updateWithNewLocation(null);
}
@Override
public void onLocationChanged(Location location) {
//当位置发生变化时更新
updateWithNewLocation(location);
}
});
mapView = (MapView)findViewById(R.id.mapview);
List<Overlay> overlays = mapView.getOverlays();
MyLocationOverlay myLocationOverlay = new MyLocationOverlay(this, mapView);
myLocationOverlay.enableMyLocation();
overlays.add(myLocationOverlay);
final MapController mapController = mapView.getController();
//缩放控件ZoomControls
mapView.setBuiltInZoomControls(true);
ToggleButton toggleButton = (ToggleButton)findViewById(R.id.tgBtn_satellite);
toggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked==true) { //卫星视图开
mapView.setSatellite(true);
}
else { //卫星视图关
mapView.setSatellite(false);
}
}
});
}
@Override
protected boolean isRouteDisplayed() { //表示是否需要在地图上绘制导航线路,默认是不需要即false
return false;
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==4) { //键值为4时,即返回键被触发
this.finish();
}
return super.onKeyDown(keyCode, event);
}
private void updateWithNewLocation(Location location) {
String strLatLong;
TextView tv = (TextView)findViewById(R.id.tv_info);
if(location!=null) {
double lat = location.getLatitude();
double lng = location.getLongitude();
strLatLong = "经度: " + lng + "\n纬度:" + lat;
}
else {
strLatLong = "无法获取经纬度";
}
tv.setText(strLatLong);
}
}
现在的问题是在按下返回键(返回键键值为4)之后,应用程序退出,可问题是程序退出后,手机状态栏里的GPS卫星扫描的的图标仍在闪烁?不知如何关闭?
package com.app;import java.util.List;import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.ToggleButton;
import android.widget.CompoundButton.OnCheckedChangeListener;import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.MyLocationOverlay;
import com.google.android.maps.Overlay;public class MapActivityMain extends MapActivity {
private LocationManager locationManager;
private MapView mapView; private AppLocationListener appLocationListener = new AppLocationListener();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String service = Context.LOCATION_SERVICE;
locationManager = (LocationManager)getSystemService(service);
/*Location provider查询条件*/
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);//设置高位置解析经度
criteria.setAltitudeRequired(false); //不要求得到海拔高度
criteria.setBearingRequired(false);//不要求得到方向
criteria.setCostAllowed(true);//允许运营商扣费
criteria.setPowerRequirement(Criteria.POWER_LOW);//低电池消耗
//String provider = locationManager.getBestProvider(criteria, true);
String provider = LocationManager.NETWORK_PROVIDER;
Location location = locationManager.getLastKnownLocation(provider);
this.updateWithNewLocation(location);
//设置监听器,自动更新的最小时间间隔为2秒,最小位移变化超过10米
locationManager.requestLocationUpdates(provider, 2000, 10, appLocationListener);
mapView = (MapView)findViewById(R.id.mapview);
List<Overlay> overlays = mapView.getOverlays();
MyLocationOverlay myLocationOverlay = new MyLocationOverlay(this, mapView);
myLocationOverlay.enableMyLocation();
overlays.add(myLocationOverlay);
final MapController mapController = mapView.getController();
//缩放控件ZoomControls
mapView.setBuiltInZoomControls(true);
ToggleButton toggleButton = (ToggleButton)findViewById(R.id.tgBtn_satellite);
toggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked==true) { //卫星视图开
mapView.setSatellite(true);
}
else { //卫星视图关
mapView.setSatellite(false);
}
}
});
}
@Override
protected boolean isRouteDisplayed() { //表示是否需要在地图上绘制导航线路,默认是不需要即false
return false;
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
System.out.println("keyCode = " + keyCode);
if(keyCode==4) { //键值为4时,即返回键被触发
this.finish();
locationManager.removeUpdates(appLocationListener);
}
return super.onKeyDown(keyCode, event);
}
private void updateWithNewLocation(Location location) {
String strLatLong;
TextView tv = (TextView)findViewById(R.id.tv_info);
if(location!=null) {
double lat = location.getLatitude();
double lng = location.getLongitude();
strLatLong = "经度: " + lng + "\n纬度:" + lat;
}
else {
strLatLong = "无法获取经纬度";
}
tv.setText(strLatLong);
}
class AppLocationListener implements LocationListener {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
//当provider的硬件状态变化时更新
}
@Override
public void onProviderEnabled(String provider) {
//当Location Provider可用时更新
}
@Override
public void onProviderDisabled(String provider) {
//当Location Provider被禁用时更新
updateWithNewLocation(null);
}
@Override
public void onLocationChanged(Location location) {
//当位置发生变化时更新
updateWithNewLocation(location);
}
}
}
我写了一个监听器AppLocationListener的类继承于LocationListener,通过AppLocationListener的对象来用,可是图标还在闪烁...郁闷中
requestLocationUpdates(provider, 2000, 10, new LocationListener()
就可以用
locationManager.removeUpdates(locationListener);
将监听的的gps可以给删除,但这还不能将gps给直接关闭;在网上查了下,有人说用这个函数:
setLocationProviderEnabled (ContentResolver cr, String provider, boolean enabled) ;
在包 android.provider.Settings.Secure 里面!试试?
google.load('visualization', '1.1', { 'packages': ['corechart, table', 'gauge', 'controls'] });
//创建初始化Chart
function drawChart() {
var vs = getLoadData(), v, i = 0, count = vs.length;
//创建数据google DataTable
gdata = new google.visualization.DataTable();
gdata.addColumn('string', jsonLanguage["v_503"]);
gdata.addColumn('number', jsonLanguage["v_501"]);
gdata.addRows(count);
//设置数据值
for (; i < count; i++) {
v = vs[i];
gdata.setValue(i, 0, v[1]);
gdata.setValue(i, 1, v[2]);
}
//实例化和设置图表
chart = new google.visualization.LineChart(document.getElementById('chart_div'));
//var w = parseInt($("#g-content").css("width")) - 50;
var w = 750;
//设置图标样式
chartOptions = { width: w, height: 600, title: jsonLanguage["v_500"], hAxis: { title: jsonLanguage["v_503"], titleTextStyle: { color: '#FF0000'} }, vAxis: { title: jsonLanguage["v_502"], titleTextStyle: { color: '#FF0000'}} };
//创建报表
chart.draw(gdata, chartOptions);
}
//获取初始数据
function getLoadData() {
gdata = [
["", ""]
];
// 初始化第一个数据
gdata[0][2] = 0;
return gdata;
}
//点击生成核心代码
success: function (result) {
dydata = result;
var vs = dydata;
var count = vs.length;
if (count > 0) {
var v, i = 0;
gdata = new google.visualization.DataTable();
gdata.addColumn('string', jsonLanguage["v_503"]);
gdata.addColumn('number', jsonLanguage["v_501"]);
gdata.addRows(count);
var j = parseInt(count);
for (; i < j; i++) {
v = vs[i];
//alert(v[1]);
gdata.setValue(i, 0, v.Lable);
// Math.random() * 100;
gdata.setValue(i, 1, parseFloat(v.Number) /*+ Math.random()*/);
//gdata.setValue(i, 1, Math.random() * 100);
}
//var w = parseInt($("#g-content").css("width")) - 50;
var w = 750;
chartOptions = { width: w, height: 600, title: treenode.name + " " + jsonLanguage["v_500"], hAxis: { title: jsonLanguage["v_503"], titleTextStyle: { color: '#FF0000'} }, vAxis: { title: jsonLanguage["v_502"] + titleSpeedU, titleTextStyle: { color: '#FF0000'}} };
chart.draw(gdata, chartOptions); /**/
}
else {
alert(jsonLanguage["e_901"]);
}
}
就可以了