2015-11-05 66 views
1

設備:Nexus 5的 Android版本:6Android應用問題與棉花糖(安卓6)

更新Android版本開發我的應用越來越兩個問題之後。

(1)在我的應用程序中,我使用了Google地圖。 Android更新後,當前位置停止工作。

(2)使用Google登錄不適用於應用程序。

他們是已知問題還是存在任何解決方案?

+0

哪裏是logcat和一些代碼? –

+0

您是否檢查過我編譯的目標SDK –

+0

您是否試過FusedLocationProviderApi – Fasiha

回答

0

使用FusedLocationProviderApi

編譯庫

編譯 'com.google.android.gms:發揮服務:87年6月5日'

使用元標籤

public class AcurateLocation extends AppCompatActivity implements 
    LocationListener, 
    GoogleApiClient.ConnectionCallbacks, 
    GoogleApiClient.OnConnectionFailedListener { 

private static final String TAG = "LocationActivity"; 
private static final long INTERVAL = 1000; 
private static final long FASTEST_INTERVAL = 1000 * 2; 
Button btnFusedLocation; 
TextView tvLocation; 
LocationRequest mLocationRequest; 
GoogleApiClient mGoogleApiClient; 
Location mCurrentLocation; 
String mLastUpdateTime; 

protected void createLocationRequest() { 
    mLocationRequest = new LocationRequest(); 
    mLocationRequest.setInterval(INTERVAL); 
    mLocationRequest.setFastestInterval(FASTEST_INTERVAL); 
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 
} 

private boolean CheckEnableGPS() { 
    LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE); 
    boolean gps_enabled; 
    if (!lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
     gps_enabled = false; 

     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle("Location Services Not Active"); 
     builder.setMessage("Please enable Location Services and GPS"); 
     builder.setPositiveButton("OK", 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialogInterface, 
             int i) { 

         Intent intent = new Intent(
           android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
         startActivity(intent); 

        } 
       }); 
     Dialog alertDialog = builder.create(); 
     alertDialog.setCanceledOnTouchOutside(false); 
     alertDialog.show(); 
    } else { 
     gps_enabled = true; 
    } 
    return gps_enabled; 

} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Log.d(TAG, "onCreate ..............................."); 
    //show error dialog if GoolglePlayServices not available 
    if (!isGooglePlayServicesAvailable()) { 
     finish(); 
    } 
    createLocationRequest(); 
    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addApi(LocationServices.API) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .build(); 

    setContentView(R.layout.content_acurate_location); 
    tvLocation = (TextView) findViewById(R.id.tvLocation); 

    btnFusedLocation = (Button) findViewById(R.id.btnShowLocation); 
    btnFusedLocation.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 

      if (CheckEnableGPS()) { 
       updateUI(); 
      } 
     } 
    }); 

} 

@Override 
public void onStart() { 
    super.onStart(); 
    Log.d(TAG, "onStart fired .............."); 
    mGoogleApiClient.connect(); 
} 

@Override 
public void onStop() { 
    super.onStop(); 
    Log.d(TAG, "onStop fired .............."); 
    mGoogleApiClient.disconnect(); 
    Log.d(TAG, "isConnected ...............: " + mGoogleApiClient.isConnected()); 
} 

private boolean isGooglePlayServicesAvailable() { 
    int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this); 
    if (ConnectionResult.SUCCESS == status) { 
     return true; 
    } else { 
     GooglePlayServicesUtil.getErrorDialog(status, this, 0).show(); 
     return false; 
    } 
} 

@Override 
public void onConnected(Bundle bundle) { 
    Log.d(TAG, "onConnected - isConnected ...............: " + mGoogleApiClient.isConnected()); 
    startLocationUpdates(); 
} 

protected void startLocationUpdates() { 
    PendingResult<Status> pendingResult = LocationServices.FusedLocationApi.requestLocationUpdates(
      mGoogleApiClient, mLocationRequest, this); 
    Log.d(TAG, "Location update started ..............: "); 
} 

@Override 
public void onConnectionSuspended(int i) { 

} 

@Override 
public void onConnectionFailed(ConnectionResult connectionResult) { 
    Log.d(TAG, "Connection failed: " + connectionResult.toString()); 
} 

@Override 
public void onLocationChanged(Location location) { 
    Log.d(TAG, "Firing onLocationChanged.............................................."); 
    mCurrentLocation = location; 
    mLastUpdateTime = DateFormat.getTimeInstance().format(new Date()); 
    updateUI(); 
} 

private void updateUI() { 
    Log.d(TAG, "UI update initiated ............."); 
    if (null != mCurrentLocation) { 
     String lat = String.valueOf(mCurrentLocation.getLatitude()); 
     String lng = String.valueOf(mCurrentLocation.getLongitude()); 
     tvLocation.setText("At Time: " + mLastUpdateTime + "\n" + 
       "Latitude: " + lat + "\n" + 
       "Longitude: " + lng + "\n" + 
       "Accuracy: " + mCurrentLocation.getAccuracy() + "\n" + 
       "Provider: " + mCurrentLocation.getProvider()); 
    } else { 
     Log.d(TAG, "location is null ..............."); 
    } 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    stopLocationUpdates(); 
} 

protected void stopLocationUpdates() { 
    LocationServices.FusedLocationApi.removeLocationUpdates(
      mGoogleApiClient, this); 
    Log.d(TAG, "Location update stopped ......................."); 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    if (mGoogleApiClient.isConnected()) { 
     startLocationUpdates(); 
     Log.d(TAG, "Location update resumed ....................."); 
    } 
} 
} 

Reference