这已经是12天没有写博客了,原因是这两个星期,一直在解决计步器。结论是:自己电脑上已经可以运用Android传感器(加速度传感器)来实现记步功能,Android自带的GPS不能在手机上实现定位,百度地图的API可以实现。总的来说,GPS肯定是比传感器更加精准,但是由于知识水平限制,只能实现加速度传感器来实现记步功能,GPS只是能实现定位,而且极其的不精准,就算用百度地图API也是要上网时才会比较精准,但是现实计步器不可能时时有网,最后还是决定暂时用传感器实现记步功能吧。下来详细说说这几个具体情况吧。
先来说加速度传感器实现记步大概步骤
首先获取SensorManager(系统所有传感器的管理器)的实例,SensorManager sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
其次获取Sensor实例,Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);//用此方法得到加速器类型
然后注册sensorManager,sensorManager.registerListener(listener, sensor, SensorManager);
最后要对传感器输出的信号进行监听,需要SensorEventListener,以及它所实现的onSensorChanged()方法
这就是大概的就是实现传感器的大概步骤,下一章节给出具体的代码。
然后是Android的GPS的主要步骤
找出自己的位置,主要是通过Android的LocationManager这个类来实现的
首先是获取LocationManager的实例,LocationManager locationManager =(LocationManager)gerSystemService(Context.LOCATION_SERVICE);
Android中一般有三种位置提供器可供选择,GPS_PROVIDER,NETWORK_PROVIDER和PASSIVE_PROVIDER。GPS_PROVIDER定不了位置,搜索不到卫星,NETWORK_PROVIDER用网络也不能定位,我看网上说是因为谷歌停止了基站。
其次是获得本地位置Location, Location location =locationManager.getLastKnownLocation(LcationManager.NETWORK_PROVIDER);
//首先是定位,如果不能定位则取到上一次定位,如果是第一次运行这个程序,那么第一次定位是空的,上面也解释了不能定位,所以location一直为空。location中包含了经度、纬度、海拔等一系列的位置信息。
最后LocationManager还提供了一个requestLocationUpdates()方法,只要传入一个LocationListener的实例,locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, new LocationListener())
{}
最后是百度地图API,我会在后面几张说明