0

我正在研究一个 android 应用程序的想法,但它需要我监听位置变化和方向变化。

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

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

方向变化是指用户面向的方向的变化,而不是手机方向的变化,例如横向或纵向。所以我会想要监控 onSensorChanged 并检索方位角

4

2 回答 2

0

对于聆听方向的变化,您可以使用onConfigurationChanged()

configChanges并在清单中添加一些activity

<activity android:name=".MyActivity"
          android:configChanges="orientation|keyboardHidden"
          android:label="@string/app_name">
于 2013-08-20T01:47:04.883 回答
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);
    }

第二部分,位置更改,将您的注册ActivityLocationListener并实现该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);
        }

    }

希望这可以帮助。

于 2013-08-20T02:16:49.373 回答