在Android模拟器中找不到天气应用程序

时间:2018-10-20 10:20:27

标签: java android

我正在Android Studio中创建天气应用。我写完代码并通过使用进行了测试 Android模拟器。我是使用Google Maps模板创建的,因此在测试时,我打开了Google 地图应用程序。不过我意识到有些奇怪。我尝试运行另一种方式 没有Google Maps模板的项目,我发现它也具有相同的Google Maps应用程序,这意味着显然已经使用Android Emulator启动的任何项目 默认情况下具有该应用。这意味着我起初以为我正在测试自己创建的应用,但是 现在事实并非如此。我看不到任何其他代表该符号的应用程序符号 我创造的我发布了模拟器的屏幕截图:

First Second

我什至不知道如何制作我的应用程序 在屏幕上可见。我只是为它的功能编写了代码。唯一出现的东西 启动后,它询问我是否允许该应用访问我的位置,这是一个好兆头,但除此之外 似乎什么都没有。这是完整的代码:

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener {

private GoogleMap mMap;
private GoogleApiClient googleApiClient;
public static final String TAG = MapsActivity.class.getSimpleName();
private FusedLocationProviderClient fusedLocationClient;
private final static int CONNECTION_FAILURE_RESOLUTION_REQUEST = 9000; //Request code to send to Google Play Services
private LocationRequest locationRequest;
private LocationCallback locationCallback;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);
    setUpMapIfNeeded();
    googleApiClient = new GoogleApiClient.Builder(this).addConnectionCallbacks(this).addOnConnectionFailedListener(this).addApi(LocationServices.API).build();
    locationRequest = LocationRequest.create().setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY).setInterval(10*1000).setFastestInterval(1*1000);
}

private void setUpMapIfNeeded(){
    if (mMap==null){
        SupportMapFragment mapFragment = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map));
        mapFragment.getMapAsync(this);
    }
}

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

@Override
public void onConnected(Bundle bundle) {
    Log.i(TAG,"Location Services Connected");
    fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
    if (checkLocationPermission(this)){
        fusedLocationClient.getLastLocation().addOnSuccessListener(this, new OnSuccessListener<Location>() {
            @Override
            public void onSuccess(Location location) {
                if (location == null || !checkLocationPermission(MapsActivity.this)){
                    fusedLocationClient.requestLocationUpdates(locationRequest,locationCallback,null);
                }
                else{
                    handleNewLocation(location);
                }
            }
        });
    }
    else{
        Toast.makeText(this,"Please allow location access.",Toast.LENGTH_SHORT).show();
    }
}
public static boolean checkLocationPermission(Activity activity){
    if(ActivityCompat.checkSelfPermission(activity, android.Manifest.permission.ACCESS_FINE_LOCATION)
            != PackageManager.PERMISSION_GRANTED
            || ActivityCompat.checkSelfPermission(activity, android.Manifest.permission.ACCESS_COARSE_LOCATION)
            != PackageManager.PERMISSION_GRANTED){

        ActivityCompat.requestPermissions(activity, new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION,
                android.Manifest.permission.ACCESS_COARSE_LOCATION},0);
        return false;
    }
    return true;
}
private void handleNewLocation(Location location){
    Log.d(TAG,location.toString());
    double currentLatitude = location.getLatitude();
    double currentLongitude = location.getLongitude();
    LatLng latLng = new LatLng(currentLatitude,currentLongitude);
    MarkerOptions options = new MarkerOptions().position(latLng).title("I am here:");
    mMap.addMarker(options);
    mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
}

@Override
public void onConnectionSuspended(int i) {
    Log.i(TAG,"Location Services suspended. Please reconnect.");
}

@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
    if (connectionResult.hasResolution()){
        //Starts an Activity that tries to resolve the error
        try {
            connectionResult.startResolutionForResult(this,CONNECTION_FAILURE_RESOLUTION_REQUEST);
        } catch (IntentSender.SendIntentException e) {
            e.printStackTrace();
        }
    }
    else{
        Log.i(TAG,"Location services connection failed code: " + connectionResult.getErrorCode());
    }
}

@Override
protected void onResume(){
    super.onResume();
    setUpMapIfNeeded();
    googleApiClient.connect();
}

@Override
protected void onPause(){
    super.onPause();
    if (googleApiClient.isConnected()){
        googleApiClient.disconnect();
        fusedLocationClient.removeLocationUpdates(locationCallback);
    }
}

@Override
public void onLocationChanged(Location location) {
    handleNewLocation(location);
}

private void setUpMap(){
    mMap.addMarker(new MarkerOptions().position(new LatLng(0,0)).title("Marker"));
}

0 个答案:

没有答案