为什么程序不调用方法" onLocationChanged"?

时间:2016-06-21 13:06:47

标签: android-studio android-gps

我写了这个简单的代码来获取GPS坐标,但它并没有调用方法" onChangedLocation"。我知道它应该只在坐标发生变化时跳入方法,但是一开始它总是应该跳转到那个方法?

它应该在catlog中显示经度和纬度。

我正在使用手机进行调试。

package tabs;

import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.ListFragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;


import androfenix.whetoo.R;


public class Tab1 extends ListFragment implements LocationListener {

    double latitude;
    double longitude;


    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.tab_local, container, false);

        String[] abc = {"Message1", "Message2", "Message3", "Message1", "Message2", "Message3", "Message1", "Message2", "Message3", "Message1", "Message2", "Message3"};
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
                android.R.layout.simple_list_item_1, abc);
        setListAdapter(adapter);

        LocationManager locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
        if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED &&
                ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {

            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
        }
        return v;
    }

    @Override
    public void onLocationChanged(Location location) {
        Log.d("onLocationChanged", "onLocationChanged wird aufgerufen");
        longitude = location.getLongitude();
        String name = String.valueOf(longitude);
        Log.d("longtitude", name);

        latitude = location.getLatitude();
        String name2 = String.valueOf(latitude);
        Log.d("latitude", name2);
    }

    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }

    @Override
    public void onProviderEnabled(String provider) {
    }

    @Override
    public void onProviderDisabled(String provider) {
    }
}

0 个答案:

没有答案