0

モバイルでロケーションサービスが有効になっているかどうかを確認しています。もしそうなら、ビルドgoogleapiclientを聞いて、ロケーション変更を聞いてください。私が直面している問題は、いったん場所がモバイルで表示され、画面が表示されると、場所(緯度/経度)を取得できなくなるということです。場所は常にnullです。ロケーションがnullです。融合ロケーションプロバイダandroid

isLocationEnabled - 場所は

  if (isLocationEnabled(getApplicationContext())) { 
       mMenu.getItem(0).setVisible(true); 
      } 
      else { 
       Snackbar.make(mLayout, getString(R.string.loc_not_enable), 
         Snackbar.LENGTH_LONG).show(); 
      } 
     } 
    }); 
    //setup GoogleApiclient 
    buildGoogleApiClient(); 


public static boolean isLocationEnabled(Context context) { 
    int locationMode = 0; 
    String locationProviders; 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){ 
     try { 
      locationMode = Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.LOCATION_MODE); 
     } catch (SettingNotFoundException e) { 
      e.printStackTrace(); 
      return false; 
     } 
     return locationMode != Settings.Secure.LOCATION_MODE_OFF; 

    }else{ 
     locationProviders = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED); 
     return !TextUtils.isEmpty(locationProviders); 
    } 
} 


private synchronized void buildGoogleApiClient() { 
    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addApi(LocationServices.API) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .build(); 
} 

@Override 
protected void onStart() { 
    // Connect the client. 
    super.onStart(); 
    if (mGoogleApiClient != null) { 
     mGoogleApiClient.connect(); 
    } 
} 

@Override 
protected void onStop() { 
    // Disconnecting the client invalidates it. 
    mGoogleApiClient.disconnect(); 
    super.onStop(); 
} 

@Override 
public void onConnected(Bundle bundle) { 
    if (ContextCompat.checkSelfPermission(getApplicationContext(), android.Manifest.permission.ACCESS_FINE_LOCATION) 
      != PackageManager.PERMISSION_GRANTED) { 
     ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSION_LOCATION); 
    } else { 
     startLocationServices(); 

    } 
} 

private void startLocationServices() { 
    try { 
     LocationRequest mLocationRequest = LocationRequest.create(); 
     Location mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
       mGoogleApiClient); 
     if (mLastLocation==null){ 
      LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this); 
     } else { 
      Log.d("mLastLocation", String.valueOf(mLastLocation)); 
      lat = String.valueOf(mLastLocation.getLatitude()); 
      lon = String.valueOf(mLastLocation.getLongitude()); 
     } 
     mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 
     mLocationRequest.setInterval(10*1000); // Update location every 10 seconds 
     mLocationRequest.setFastestInterval(1 * 1000); 
     LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this); 
    } catch (SecurityException exception) { 
     exception.printStackTrace(); 
    } 
} 


    E/AndroidRuntime: FATAL EXCEPTION: main 
       Process: com.my.game.wesport, PID: 30629 
       java.lang.NumberFormatException: empty String 
        at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1071) 
        at java.lang.Double.parseDouble(Double.java:547) 
        at com.my.game.wesport.MapsActivity.onMapReady(MapsActivity.java:161) 
        at com.google.android.gms.maps.SupportMapFragment$zza$1.zza(Unknown Source) 
        at com.google.android.gms.maps.internal.zzt$zza.onTransact(Unknown Source) 
        at android.os.Binder.transact(Binder.java:499) 
        at zu.a(:com.google.android.gms.DynamiteModulesB:82) 
        at maps.ad.t$5.run(Unknown Source) 
        at android.os.Handler.handleCallback(Handler.java:751) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:154) 
        at android.app.ActivityThread.main(ActivityThread.java:6077) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 

答えて

0

オンになっているかどうかをチェックする私は自分の携帯電話を再起動した後、問題が解決されました。

関連する問題