聆听位置和方向的变化
Posted
技术标签:
【中文标题】聆听位置和方向的变化【英文标题】:Listen for location and orientation changes 【发布时间】:2013-08-21 22:46:48 【问题描述】:我正在构思一个 android 应用程序,但它需要我监听位置变化和方向变化。
基本上我想知道是否有人面向某个点,这需要我找到手机的方向。但是,我还想跟踪位置变化,因为我想知道用户是离这一点更近还是更远。 我已对位置侦听器进行了排序,因此我可以根据数据库中存储的一些点来查找位置。
我现在如何同时监听方向变化?是否可以在同一个活动中实现 2 个侦听器。
我所说的方向变化是指用户面向的方向的变化,而不是手机方向的变化,例如横向或纵向。所以我会想要监控 onSensorChanged 并检索方位角
【问题讨论】:
【参考方案1】:对于聆听方向的改变,您可以使用onConfigurationChanged()
并在您的清单中为activity
添加一些configChanges
:
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
【讨论】:
【参考方案2】:您的需求分为两部分:
首先是方向变化,在AndroidManifest.xml
中,为你的Activity
注册方向的配置变化:
<activity android:name=".YourActivity"
android:configChanges="orientation">
在YourActivity
中,覆盖onConfigurationChanged
方法:
@Override
public void onConfigurationChanged(Configuration newConfig)
if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
// Do your stuffs here as LANDSCAPE mode
else if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT)
//Do your stuffs here as PORTRAIT mode
super.onConfigurationChanged(newConfig);
第二部分,位置变更,将你的Activity
注册为LocationListener
并实现onLocationChanged
方法:
@Override
public void onLocationChanged(Location loc)
// Location changed as loc, do things here
在你的onCreate
:
LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (manager.isProviderEnabled(LocationManager.GPS_PROVIDER))
Log.d(TAG, "GPS is enabled");
GPSListener = new MyLocationListener("GPS");
manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000,
1, this);
else
if (manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER))
Log.d(TAG, "NETWORK is enabled");
NetworkListener = new MyLocationListener("NETWORK");
manager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, 1000, 1, this);
希望这会有所帮助。
【讨论】:
我稍微编辑了我的问题,我的意思是用户的方向,而不是横向/纵向的手机方向。我的问题是我将如何实现如上所述的位置监听器,以及传感器监听器来获取方位角。 是的,您可以在同一个Activity
中实现任意数量的Listener
,我不确定onSensorChanged
但您可以自己尝试,但是关于位置,正如我上面的回答,您可以通过更改传入的变量来聆听每秒(1000ms)或每米(1)的位置变化。希望这会有所帮助。以上是关于聆听位置和方向的变化的主要内容,如果未能解决你的问题,请参考以下文章