我一直在实施FusedLocationProvider。但是,我确实在一个活动中实现并获得了lat和long,但是我现在尝试的是在单独的非活动类GetLocationActivity中实现它,并在我的Maps_activity类中获取位置数据,当我单击按钮时,但是我无法获得数据!
是否存在从类中获取数据并将其显示在我的映射活动中的问题?我还尝试使用sharedPref在类中保存数据,但没有结果。
P.S :我认为GetLocationActivity没有运行,或者我无法实例化它。
这是代码
Map_activity.java
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
private GoogleApiClient mGoogleApiClient;
private FloatingActionButton floatingActionButton;
private static final String LIST_FRAGMENT_TAG = "list_fragment";
private static final String TAG = "list_fragment";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
floatingActionButton = (FloatingActionButton) findViewById(R.id.fab);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
final GetLocationActivity obj = new GetLocationActivity();
floatingActionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
obj.GetLocation();
}
});
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
// Add a marker in Karachi and move the camera
LatLng sydney = new LatLng(24.9217531, 66.8943302);
//mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Karachi"));
mMap.animateCamera(CameraUpdateFactory.zoomTo(10.75f));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}
@Override
public void onBackPressed() {
super.onBackPressed();
}GetLocationActivity.java
public class GetLocationActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener , com.google.android.gms.location.LocationListener {
public final static String TAG = "Application";
private GoogleApiClient mGoogleApiClient;
private Location mLastLocation;
private LocationRequest mLocationRequest;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (mGoogleApiClient == null) {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
}
}
public void GetLocation()
{
try {
mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(10000); // Update location every second
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
mGoogleApiClient);
if (mLastLocation != null) {
Log.d(TAG, "onConnected: "+String.valueOf(mLastLocation.getLatitude()));
Log.d(TAG, "onConnected: "+String.valueOf(mLastLocation.getLongitude()));
}
} catch (SecurityException e) {
}
}
@Override
public void onConnected(@Nullable Bundle bundle) {
GetLocation();
}
@Override
public void onConnectionSuspended(int i) {
Toast.makeText(this, "onConnectionSuspended: " + String.valueOf(i),
Toast.LENGTH_LONG).show();
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
Toast.makeText(this, "onConnectionFailed: " + connectionResult.toString(),
Toast.LENGTH_LONG).show();
}
protected void onStart() {
mGoogleApiClient.connect();
super.onStart();
}
protected void onStop() {
mGoogleApiClient.disconnect();
super.onStop();
}
@Override
public void onLocationChanged(Location location) {
}发布于 2017-01-03 10:07:23
尝试使用GetLocation()静态
public static void getLocation() {
...
}访问这样的功能
floatingActionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
GetLocationActivity.getLocation();
}
});据我所知,我们不必使用实例对象访问它,我们可以使用静态对象访问它。CMIIW。
https://stackoverflow.com/questions/41300928
复制相似问题