менеджэр Размяшчэнне паказаны нулявы

Я спрабую адсочваць месцазнаходжанне GPS для выкарыстання ў маім дадатку,

Вось мой код,

public class GetGpsCoordinates extends Service implements LocationListener {

boolean isGPSEnabled ;

boolean isNetworkEnabled ;
boolean canGetLocation ;
Location location;
double latitude;
double longitude;

// The minimum distance to change Updates in meters
public static final float MIN_DISTANCE_CHANGE_FOR_UPDATES = 10;//10
                                                                   //meters

// The minimum time between updates in milliseconds
public static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1;//1 minute

private  final Context Context = GetGpsCoordinates.this;
public final android.content.Context mContext = GetGpsCoordinates.this;
LocationManager locationManager;

public Location getLocation() {
    try {
        int chkGooglePlayServices = GooglePlayServicesUtil
                .isGooglePlayServicesAvailable(Context);
        if (chkGooglePlayServices != ConnectionResult.SUCCESS) {
            GooglePlayServicesUtil.getErrorDialog(chkGooglePlayServices,
                    (Activity) mContext, 1122).show();
        } else {

            locationManager = (LocationManager) getSystemService(mContext.LOCATION_SERVICE);
            Criteria criteria = new Criteria();
            criteria.setAccuracy(Criteria.ACCURACY_FINE);

           //getting GPS status
            isGPSEnabled = locationManager
                    .isProviderEnabled(LocationManager.GPS_PROVIDER);

           //getting network status
            isNetworkEnabled = locationManager
                    .isProviderEnabled(LocationManager.NETWORK_PROVIDER);

            if (!isGPSEnabled && !isNetworkEnabled) {
               //no network provider is enabled
            } else {
                this.canGetLocation = true;
               //First get location from Network Provider
                if (isNetworkEnabled) {
                    locationManager.requestLocationUpdates(
                            LocationManager.NETWORK_PROVIDER,
                            MIN_TIME_BW_UPDATES,
                            MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                    Log.d("Network", "Network");
                    if (locationManager != null) {
                        location = locationManager
                                .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                        if (location != null) {
                            latitude = location.getLatitude();
                            longitude = location.getLongitude();
                        }
                    }
                }
               //if GPS Enabled get lat/long using GPS Services
                if (isGPSEnabled) {
                    if (location == null) {
                        locationManager.requestLocationUpdates(
                                LocationManager.GPS_PROVIDER,
                                MIN_TIME_BW_UPDATES,
                                MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                        Log.d("GPS Enabled", "GPS Enabled");
                        if (locationManager != null) {
                            location = locationManager
                                    .getLastKnownLocation(LocationManager.GPS_PROVIDER);
                            if (location != null) {
                                latitude = location.getLatitude();
                                longitude = location.getLongitude();

                            }
                        }
                    }
                }
            }

        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    return location;
}

Я не ведаю, што мне не хапае, пераменная «locationManager» адлюстроўваецца як нуль.

Гэта мой файл маніфесту,




















    
        
            

            
        
    

    
    

    
    
       

    
     <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="API_KEY" />



гэта мой LogCat,

06-04 19:21:08.960: D/BatteryService(1499): update start
06-04 19:21:10.101: D/dalvikvm(16760): GC_EXPLICIT freed 17K, 49% free 2778K/5379K,  external 688K/1036K, paused 54ms
06-04 19:21:10.210: E/StatusBarPolicy(1552): ecio: 255
06-04 19:21:10.210: E/StatusBarPolicy(1552): iconLevel: 4
06-04 19:21:12.109: D/dalvikvm(18597):   JDWP invocation returning with exceptObj=0x40614540 (Ljava/lang/NullPointerException;)
06-04 19:21:12.906: D/dalvikvm(18597):   JDWP invocation returning with exceptObj=0x406146a0 (Ljava/lang/NullPointerException;)
06-04 19:21:15.265: D/dalvikvm(15818): GC_EXPLICIT freed 481K, 49% free 3529K/6791K, external 688K/1036K, paused 53ms
06-04 19:21:18.992: D/BatteryService(1499): update start
06-04 19:21:20.265: D/dalvikvm(14873): GC_EXPLICIT freed 199K, 47% free 3590K/6727K, external 688K/1036K, paused 50ms

выклік у іншай дзейнасці,

 protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.map_fragment);
    progressDialog = new ProgressDialog(MapSearch.this);

            /* getting latitude and longitude*/
    GetGpsCoordinates getgpslatlng = new GetGpsCoordinates();
    getgpslatlng.getLocation();

    Latitude = getgpslatlng.getLatitude();
    Longitude = getgpslatlng.getLongitude();
    SupportMapFragment sfm = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    map = sfm.getMap();
    map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
    map.setMyLocationEnabled(true);
}

Я дадаў ўсё га epermissions. Я дазволіў GPS ў прыладзе. Нават пры тым, што ўзбуджаецца выключэнне кажуць, што «locationManager» нулявыя, а таксама «chkGooglePlayServices» з'яўляецца несапраўдным. Я ма маючы Google гуляць паслугі, устаноўленыя ў прыладзе.

Што здарылася ў маім кодзе? Калі ласка, папраўце мяне ..  Загадзя дзякую!!

1
спачатку пераканайцеся, што правільны код, які вы выкарыстоўваеце замест змены кода ў пытанні, а таксама дадаць часопіс з пытаннем, каб атрымаць дадатковую дапамогу
дададзена аўтар ρяσѕρєя K, крыніца
спачатку пераканайцеся, што правільны код, які вы выкарыстоўваеце замест змены кода ў пытанні, а таксама дадаць часопіс з пытаннем, каб атрымаць дадатковую дапамогу
дададзена аўтар ρяσѕρєя K, крыніца
Я сумняваюся, што вы можаце патэлефанаваць getLocation з іншай дзейнасці, таму што вы карыстаецеся службу ў якасці кантэксту. Вы можаце паказаць, што частка кода, таксама размясціць як вы ініцыялізацыі службы ў дзейнасці
дададзена аўтар nandeesh, крыніца
Я сумняваюся, што вы можаце патэлефанаваць getLocation з іншай дзейнасці, таму што вы карыстаецеся службу ў якасці кантэксту. Вы можаце паказаць, што частка кода, таксама размясціць як вы ініцыялізацыі службы ў дзейнасці
дададзена аўтар nandeesh, крыніца
Я сумняваюся, што вы можаце патэлефанаваць getLocation з іншай дзейнасці, таму што вы карыстаецеся службу ў якасці кантэксту. Вы можаце паказаць, што частка кода, таксама размясціць як вы ініцыялізацыі службы ў дзейнасці
дададзена аўтар nandeesh, крыніца
дзе вы тэлефануеце getLocation з?
дададзена аўтар nandeesh, крыніца
дзе вы тэлефануеце getLocation з?
дададзена аўтар nandeesh, крыніца
дзе вы тэлефануеце getLocation з?
дададзена аўтар nandeesh, крыніца
@nandeesh, я ўставіў код, дзе я выклікаю службу. Вы можаце знайсці код.
дададзена аўтар Mahe, крыніца
@nandeesh, я ўставіў код, дзе я выклікаю службу. Вы можаце знайсці код.
дададзена аўтар Mahe, крыніца
@nandeesh, я ўставіў код, дзе я выклікаю службу. Вы можаце знайсці код.
дададзена аўтар Mahe, крыніца
@nandeesh, называючы getLocation() ад іншай дзейнасці ..
дададзена аўтар Mahe, крыніца
@prosper, калі ласка, знайсці прымацаваны LogCat !!
дададзена аўтар Mahe, крыніца
@prosper, калі ласка, знайсці прымацаваны LogCat !!
дададзена аўтар Mahe, крыніца
@prosper, калі ласка, знайсці прымацаваны LogCat !!
дададзена аўтар Mahe, крыніца
@nandeesh, называючы getLocation() ад іншай дзейнасці ..
дададзена аўтар Mahe, крыніца
@nandeesh, называючы getLocation() ад іншай дзейнасці ..
дададзена аўтар Mahe, крыніца

9 адказы

Гэта няправільны спосаб ініцыялізаваць LocationManager,

locationManager = (LocationManager) getSystemService(mContext.LOCATION_SERVICE);

Замест mContext вы павінны выкарыстоўваць прамой клас кантэксту, як паказана ніжэй,

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
2
дададзена
Ах !! мадыфікаваў код, як вы сказалі, тая ж самая праблема. Калі ласка, звярніцеся да LogCat для прычыны выключэння.
дададзена аўтар Mahe, крыніца

Гэта няправільны спосаб ініцыялізаваць LocationManager,

locationManager = (LocationManager) getSystemService(mContext.LOCATION_SERVICE);

Замест mContext вы павінны выкарыстоўваць прамой клас кантэксту, як паказана ніжэй,

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
2
дададзена
Ах !! мадыфікаваў код, як вы сказалі, тая ж самая праблема. Калі ласка, звярніцеся да LogCat для прычыны выключэння.
дададзена аўтар Mahe, крыніца

Гэта няправільны спосаб ініцыялізаваць LocationManager,

locationManager = (LocationManager) getSystemService(mContext.LOCATION_SERVICE);

Замест mContext вы павінны выкарыстоўваць прамой клас кантэксту, як паказана ніжэй,

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
2
дададзена
Ах !! мадыфікаваў код, як вы сказалі, тая ж самая праблема. Калі ласка, звярніцеся да LogCat для прычыны выключэння.
дададзена аўтар Mahe, крыніца

Вы ініцыялізацыя сэрвісу з дзейнасці. Гэта не правільны метад для ініцыялізацыі службы. Сэрвіс павінен быць ініцыялізаваны рамачныя. Так што ваш клас службы не мае ініцыялізаваць кантэкст. Таму любыя выклікі метадаў з кантэксту не атрымаецца. Так што паспрабуйце гэта

   GetGpsCoordinates getgpslatlng = new GetGpsCoordinates();
   getgpslatlng.getLocation(this);

public Location getLocation(Context mContext) {
//use passed Context instead of field mContext 
}
2
дададзена
Зразумела!! Дзякуй !!
дададзена аўтар Mahe, крыніца

Вы ініцыялізацыя сэрвісу з дзейнасці. Гэта не правільны метад для ініцыялізацыі службы. Сэрвіс павінен быць ініцыялізаваны рамачныя. Так што ваш клас службы не мае ініцыялізаваць кантэкст. Таму любыя выклікі метадаў з кантэксту не атрымаецца. Так што паспрабуйце гэта

   GetGpsCoordinates getgpslatlng = new GetGpsCoordinates();
   getgpslatlng.getLocation(this);

public Location getLocation(Context mContext) {
//use passed Context instead of field mContext 
}
2
дададзена
Зразумела!! Дзякуй !!
дададзена аўтар Mahe, крыніца

Вы ініцыялізацыя сэрвісу з дзейнасці. Гэта не правільны метад для ініцыялізацыі службы. Сэрвіс павінен быць ініцыялізаваны рамачныя. Так што ваш клас службы не мае ініцыялізаваць кантэкст. Таму любыя выклікі метадаў з кантэксту не атрымаецца. Так што паспрабуйце гэта

   GetGpsCoordinates getgpslatlng = new GetGpsCoordinates();
   getgpslatlng.getLocation(this);

public Location getLocation(Context mContext) {
//use passed Context instead of field mContext 
}
2
дададзена
Зразумела!! Дзякуй !!
дададзена аўтар Mahe, крыніца

Вы не ініцыялізуецца locationmanager, калі ласка, выкарыстоўвайце

<�Р> locationManager = (LocationManager) context.getSystemService (LOCATION_SERVICE); </р>

Перад выкарыстаннем locationManager

0
дададзена

Вы не ініцыялізуецца locationmanager, калі ласка, выкарыстоўвайце

<�Р> locationManager = (LocationManager) context.getSystemService (LOCATION_SERVICE); </р>

Перад выкарыстаннем locationManager

0
дададзена

Вы не ініцыялізуецца locationmanager, калі ласка, выкарыстоўвайце

<�Р> locationManager = (LocationManager) context.getSystemService (LOCATION_SERVICE); </р>

Перад выкарыстаннем locationManager

0
дададзена