0

Android用のGPSベースのアプリを開発しました。アプリは他のすべてのデバイスで正常に動作しますが、ロケーション リスナーは Galaxy Note 2 デバイスで失敗します。

GPS を有効にする:

       if (locationManager == null) {

        locationManager = (LocationManager) this
                .getSystemService(Context.LOCATION_SERVICE);
    }
    if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
            && !locationManager
                    .isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
        _objSLM.isGPSEnable = false;
    }

    startService(new Intent(this, SLGPSService.class));

リスナーの接続:

       if (locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {

        locationManager.requestLocationUpdates(
                LocationManager.NETWORK_PROVIDER, 0, 100, locationListener);

    }

    if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {

        locationManager.requestLocationUpdates(
                LocationManager.GPS_PROVIDER, 0, 100, locationListener);

    }
    if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
            && !locationManager
                    .isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {

        try {

            locationManager.requestLocationUpdates(
                    LocationManager.NETWORK_PROVIDER, 0, 100,
                    locationListener);

        } catch (Exception e) {

        }

        try {
            locationManager.requestLocationUpdates(
                    LocationManager.GPS_PROVIDER, 0, 100, locationListener);

        } catch (Exception e) {

        }
    }

ロケーションリスナー:

         LocationListener locationListener = new LocationListener() {

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

        Log.v(TAG, "**********=======Status=" + status);

    }

    public void onProviderEnabled(String provider) { 

        // _objSLM.isGPSEnable = true;

        if (locationManager.isProviderEnabled(provider)) {

            if (locationManager.getLastKnownLocation(provider) != null) {

                _objSLM.curLocation = locationManager
                        .getLastKnownLocation(provider);

                _objSLM.isGPSEnable = true;

                if (_objSLM.prevLocation == null) {

                    _objSLM.prevLocation = _objSLM.curLocation;
                }
            }
        }
        if (locationManager.isProviderEnabled(provider)) {

            if (locationManager.getLastKnownLocation(provider) != null) {

                _objSLM.curLocation = locationManager.getLastKnownLocation(provider);

                _objSLM.isGPSEnable = true;

                if (_objSLM.prevLocation == null) {

                    _objSLM.prevLocation = _objSLM.curLocation;

                }
            }
        }

    }

    public void onProviderDisabled(String provider) {

        _objSLM.isGPSEnable = false;
    }

    public void onLocationChanged(Location location) {

        Log.v(TAG, location.getLatitude() + "==" + location.getLongitude()+=================onLocationChanged()");

        if(location.getProvider().equals(LocationManager.GPS_PROVIDER)){

            _objSLM.curLocation = location;
            _objSLM.isGPSEnable = true;
        }


        if (_objSLM.prevLocation == null) {

            _objSLM.prevLocation = _objSLM.curLocation;

        }
    }
};

権限 :

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
4

1 に答える 1

0

これはあなたの問題ではないかもしれませんが、これはデバイス固有の問題です。

Android のバージョンを確認し、 manifest.xmlファイルを更新する必要があります。

于 2013-03-08T04:27:44.067 に答える