2013-02-09 7 views
6

jestem obecnie testuje lokalizacje GPS w Androidzie (z SDK Tools rev 21.0.1 Próbowałem standardową procedurę:android emulator geo fix nie jest w stanie ustawić lokalizację GPS

  1. Utwórz emulator z włączonym GPS (próbowałem wielu wersji od 2.1 do 4.2)
  2. Uruchom emulator
  3. telnet localhost: 5554
  4. Rodzaj geo fix długo łac

Teoretycznie powinno to ustawić GPS na.

Ale następujące znaki wskazują, lokalizacja nie jest prawidłowo ustawiony:

1. Kiedy idę do maps.google.com lub otworzyć mapę Google, to zawsze narzeka, że ​​nie może zdecydować moją lokalizację i zawsze mnie zapytać aby włączyć wifi.

2. GPS nigdy nie wydaje się być aktywowany - brak ikon na pasku stanu.

Próbowałem również DDMS (który jest przestarzały i oczywiście próbowałem również Monitora). Nic nie może się wydarzyć.

poszedłem poprzednie linki wskazał tutaj: Location not being updated on new geo fix in android emulator

Android - Unable to get the gps location on the emulator

GPS on emulator doesn't get the geo fix - Android

Ale wszystkie te powiązania nie wydają się pomóc. Istnieje kilka zgłoszeń błędów na stronie projektu Android: http://code.google.com/p/android/issues/detail?id=13046

ale był to dość stary problem i nie udało się uzyskać ostatecznego rozwiązania.

Zastanawiam się, czy ktoś jeszcze doświadczył podobnego problemu i proszę o pomoc. Dzięki.

+0

Absolutnie mogę to potwierdzić. To nie działa. Co ciekawe, jeśli skonfiguruję AVD z Androidem 2.1 (lub czymś innym bardzo starym) działa to jak urok: geo fix long lat, a lokalizacja jest wyświetlana natychmiast w aplikacji Mapy Google ... – decades

Odpowiedz

1

nadzieja Zobaczysz ikonę i zadziała. Pracuję nad moją. Poziom APi 10

package com.example.locationsddf; 

import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

    LocationManager lm; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     final TextView tv = (TextView) findViewById(R.id.tv); 
     lm = (LocationManager) getSystemService(LOCATION_SERVICE); 
     lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() { 

      @Override 
      public void onStatusChanged(String arg0, int arg1, Bundle arg2) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onProviderEnabled(String arg0) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onProviderDisabled(String arg0) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onLocationChanged(Location arg0) { 
       tv.setText("Latitude: "+arg0.getLatitude()+" \nLongitude: "+arg0.getLongitude()); 

      } 
     }); 
    } 

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

} 

manifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.locationsddf" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="5" 
     android:targetSdkVersion="10" /> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.locationsddf.MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

Gdy ikona jest powiadamiany następnie można po prostu dostać lokalizację przez lm.getLastKnowLocation będzie działać

+0

Podążyłem za kodem i mogę potwierdzić Zdarzenie onLocationChanged zostało uruchomione, a lokalizacje zostały odebrane. Ale dlaczego w aplikacjach takich jak mapa Google, czy nie reagują one na zmianę lokalizacji GPS i wciąż wyświetlają komunikaty typu "nie można określić swojej lokalizacji"? – kkspeed

+0

Jeśli tak, możesz zaznaczyć mój wpis jako odpowiedź, zaznaczając lewy górny róg mojego posta. czy możesz opublikować informacje o "Logcat"? –

0

Czasami są problemy z samego AVD. Spróbuj przełączyć się na inną architekturę procesora. Miałem podobne problemy i zostało to rozwiązane poprzez przełączenie między ARM i Intel. Czasami AVD z usług Google umożliwił również pomógł

także bawić się z „Pozwól Mock Lokalizacje” w opcji deweloperów

Jako alternatywę, można spróbować tego klienta: https://github.com/RomanTheLegend/Pokemon_NoGo/tree/master/Sources/PokemonNoGo napisałem go grać Pokemony, ale działa z każdą aplikacją opartą na GPS. Wystarczy, że zaakceptuje współrzędne z klienta pulpitu i wyśmieje głównego dostawcę systemu GPS - LocationManager.GPS_PROVIDER

Last but not least: w AVD można odtwarzać pliki .kml. Istnieje wiele usług, które mogą pomóc w jej wygenerowaniu. Lub po prostu zainstaluj "Lockito" i wygeneruj fałszywe współrzędne z Androidem

Powiązane problemy