2015-05-30 22 views
5

Bu basit uygulamayı konum almak için oluşturdum. Genymotion sanal makinesini kullanıyorum. GPS'i etkinleştirdim ve google oyun hizmetlerini doğru şekilde yükledim. Maalesef bu konumu alamıyorum. Şüphesiz ben zaten doğru izni ekledim. Yapmam gereken daha çok şey var mı?Genymotion VM'de Konum alınamadı 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

Bu sorunu çözdünüz mü? – stoefln

cevap

0

Genymotion "GPS" emülatörü penceresinin sağ üst kısmında simgesi üzerinden erişilebilir denilen yeri ayarlamak için ücretsiz bir özelliği vardır. Konumunuzu enlem/boylam veya aranabilir harita ile ayarlamak için "GPS" simgesini kullanın. Ardından, Konum Hizmetleri belirttiğiniz yeri bulur.

Ek bildirilen çözümler arasında ücretsiz kodlanabilir Genyshell veya ücretli Java API'sı bulunur.