2016-11-13 8 views
1

GPSで現在地を設定する際に問題があります。 Android 5.0.1(Xiaomi Redmi注3) でもAndroid 6.0(Sony Xperia Z5 Compact)などでは動作しません。通知なし、GPS位置は決して設定されません。 Xperiaでは、地図の右側にボタンが表示されていません。code(mMap.setMyLocationEnabled(true);)Android GPSの場所に関する問題

Android 4.4.2(Gigabyte GsMart Roma R2plus)でも通知は表示されませんが、現在の場所のボタンが表示されます画面の右上に表示されます。しかし、まだそれは必要なように動作しません。

@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 

    if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
     // TODO: Consider calling 
     // ActivityCompat#requestPermissions 
     // here to request the missing permissions, and then overriding 
     // public void onRequestPermissionsResult(int requestCode, String[] permissions, 
     //           int[] grantResults) 
     // to handle the case where the user grants the permission. See the documentation 
     // for ActivityCompat#requestPermissions for more details. 
     return; 
    } 

    mMap.setMyLocationEnabled(true); 
    mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 

    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    Criteria criteria = new Criteria(); 
    String provider = locationManager.getBestProvider(criteria, false); 

    Location location = locationManager.getLastKnownLocation(provider); 
    if (location != null) { 
     latitude = location.getLatitude(); 
     longitude = location.getLongitude(); 
    } else { 

    } 

    final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 
    emailicek = user.getEmail(); 
    emailicek = emailicek.replace(".", ""); 
    mDatabase = FirebaseDatabase.getInstance().getReference(); 

    if (latitude != 0) { 
     if (longitude != 0) { 
      mDatabase.child("userdata/" + email + "/latitude").setValue(latitude); 
      mDatabase.child("userdata/" + email + "/longitude").setValue(longitude); 
     } 
    } 
    LatLng latLng = new LatLng(latitude, longitude); 
    mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); 
    //mMap.animateCamera(CameraUpdateFactory.zoomTo(14)); 

    if (latitude != 0) { 
     mMap.animateCamera(CameraUpdateFactory.zoomTo(14)); 
    } else { 
     mMap.animateCamera(CameraUpdateFactory.zoomTo(1)); 
    } 
} 

答えて

1

マニフェストで正しい権限を要求していることを確認しましたか? GPSベースの場所の

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

:あなたは、ネットワークベースの場所、またはのために

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

をする必要があります最後の既知の位置を取得する 。

Getting the Last Known Location - Android Developers

+0

おかげで、私はこれらすべてを持っている:ところで

は、私は強くあなたがこれを読むためにあなたがあなたの場所を得るためにサービスを再生するために移動することを検討すべき理由の理由の多くが示唆されていますアクセス許可:) – Sam