听取位置和方向的变化

时间:2013-08-20 01:34:15

标签: android location orientation event-listener

我正在研究Android应用程序的想法,但它需要我监听位置更改和方向更改。

基本上我想知道某人是否面对某一点,这需要我找到手机的方向。但是我也想跟踪位置的变化,因为我想知道用户是否离这一点更近或更远。 我对位置监听器进行了排序,因此我可以根据数据库中的多个存储点查找位置。

我现在如何同时听取方向变化?是否可以在同一活动中实现2个侦听器。

通过方向更改,我指的是用户面向的方向的更改,而不是手机方向,例如横向或纵向。所以我想要监视onSensorChanged并检索方位角

2 个答案:

答案 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);
        }

    }

希望这有帮助。