我正在研究Android应用程序的想法,但它需要我监听位置更改和方向更改。
基本上我想知道某人是否面对某一点,这需要我找到手机的方向。但是我也想跟踪位置的变化,因为我想知道用户是否离这一点更近或更远。 我对位置监听器进行了排序,因此我可以根据数据库中的多个存储点查找位置。
我现在如何同时听取方向变化?是否可以在同一活动中实现2个侦听器。
通过方向更改,我指的是用户面向的方向的更改,而不是手机方向,例如横向或纵向。所以我想要监视onSensorChanged并检索方位角
答案 0 :(得分:0)
对于聆听方向更改,您可以使用onConfigurationChanged()
并在您的清单中为configChanges
添加一些activity
:
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
答案 1 :(得分:0)
您的要求分为两部分:
首先是方向更改,在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);
}
}
希望这有帮助。