2015-05-30 23 views
5

Ho creato questa semplice applicazione per ottenere la posizione. Sto usando la macchina virtuale di genomotion. Ho abilitato il GPS e installato correttamente i servizi di Google Play. Purtroppo non sono in grado di recuperare la posizione. Sicuramente ho già aggiunto il permesso giusto. C'è qualcosa in più che dovrei fare?Impossibile trovare la posizione in Genymotion VM

package com.salvo.weather.android; 

import android.app.Activity; 
import android.location.Location; 
import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.Toast; 

import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.location.LocationServices; 


public class TodayActivity extends Activity 
     implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { 

    protected static final String TAG = "location-weather"; 

    protected Location mLastLocation; 
    /** 
    * Provides the entry point to Google Play services. 
    */ 
    protected GoogleApiClient mGoogleApiClient; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_today); 

     // TODO: here get coordinates data and pass to Valley JsonObjectRetrieve 

     buildGoogleApiClient(); 
    } 

    /** 
    * Builds a GoogleApiClient. Uses the addApi() method to request the LocationServices API. 
    */ 
    protected synchronized void buildGoogleApiClient() { 
     mGoogleApiClient = new GoogleApiClient.Builder(this) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this) 
       .addApi(LocationServices.API) 
       .build(); 
    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 
     mGoogleApiClient.connect(); 
    } 

    @Override 
    protected void onStop() { 
     super.onStop(); 
     if (mGoogleApiClient.isConnected()) { 
      mGoogleApiClient.disconnect(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_today, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    /** 
    * Runs when a GoogleApiClient object successfully connects. 
    */ 
    @Override 
    public void onConnected(Bundle bundle) { 

     mLastLocation = LocationServices 
          .FusedLocationApi 
          .getLastLocation(mGoogleApiClient); 
     if (mLastLocation != null) { 
      Log.i(TAG, String.valueOf(mLastLocation.getLatitude())); 
      Log.i(TAG, String.valueOf(mLastLocation.getLongitude())); 
     } else { 
      Toast.makeText(this, "No Location detected", Toast.LENGTH_LONG).show(); 
     } 
    } 

    @Override 
    public void onConnectionSuspended(int i) { 
     // The connection to Google Play services was lost for some reason. We call connect() to 
     // attempt to re-establish the connection. 
     mGoogleApiClient.connect(); 
    } 

    @Override 
    public void onConnectionFailed(ConnectionResult connectionResult) { 
     // Refer to the javadoc for ConnectionResult to see what error codes might be returned in 
     // onConnectionFailed. 
     Log.i(TAG, "Connection failed: ConnectionResult.getErrorCode() = " + connectionResult.getErrorCode()); 
    } 
} 
+0

Hai risolto questo problema? – stoefln

risposta

0

Genymotion ha una funzione libera per l'impostazione della posizione denominata "GPS" accessibile tramite l'icona in alto a destra della finestra dell'emulatore. Usa l'icona "GPS" per impostare la tua posizione tramite latitudine/longitudine o mappa ricercabile. Quindi, i servizi di localizzazione troveranno la posizione che hai specificato.

Altre soluzioni segnalate includono Genyshell con script o API Java a pagamento.

Problemi correlati