2012-04-26 5 views
4

Я безуспешно пытался получить GPS-прием для работы в моем приложении под Android. Я хотел бы знать, что я могу делать неправильно. Я до сих пор пытались следующие методы:Приложение Android GPS не работает на эмуляторе

, а также многие другие, но все напрасно.

Учитывая, что все описанные выше решения работали для некоторых или другого человека, я буду использовать это для отладки:

package my.namespace; 

import android.app.Activity; 
import android.content.Context; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.Toast; 

public class HomeActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    LocationListener ll = new mylocationlistener(); 
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll); 
    } 

    private class mylocationlistener implements LocationListener { 
    public void onLocationChanged(Location location) { 
     if (location != null) { 
     Log.d("LOCATION CHANGED", location.getLatitude() + ""); 
     Log.d("LOCATION CHANGED", location.getLongitude() + ""); 
     Toast.makeText(HomeActivity.this, 
      location.getLatitude() + "" + location.getLongitude(), 
      Toast.LENGTH_LONG).show(); 
     } 
    } 
    public void onProviderDisabled(String provider) { 
    } 
    public void onProviderEnabled(String provider) { 
    } 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
    } 
    } 
} 

Там были @override аннотаций для 3-х методов onProviderDisabled, onProviderEnabled и onStatusChanged. Я должен был удалить их, потому что Eclipse дал ошибку, что эти методы не переопределяют суперкласс.

Я добавил разрешения в файл манифеста (ACCESS_FINE_LOCATION, ACCESS_MOCK_LOCATION, ACCESS_COARSE_LOCATION и INTERNET).

Есть ли у кого-нибудь идеи, что я могу делать неправильно?

Edit: работает на эмуляторе (Android 2.2 API 8)

ответ

3

Убедитесь, что включить GPS, когда вы тестируете приложение. Это также поможет, если вы используете NETWORK_PROVIDER и GPS_PROVIDER. Так что, когда GPS недоступен, вы все равно получаете местоположение с помощью NETWORK_PROVIDER.

UPDATE: Кроме того, если вы используете эмулятор для тестирования своего приложения, убедитесь, что вы эмулируете исправление GPS либо из командной строки, либо с помощью Eclipse. здесь ссылка на stackoverflow вопрос о том, как это сделать How to emulate GPS location in the Android Emulator?

+0

Благодарим за ответ. Я не думаю, что могу добавить NETWORK_PROVIDER, потому что я тестирую это на симуляторе. И я уже передаю GPS_PROVIDER в качестве параметра для метода requestLocationUpdates. – gkris

+0

означает, что вы тестируете свое приложение на базе gps в эмуляторе? – MAC

+0

Да, но вы можете использовать оба провайдера, если хотите. В любом случае, если вы тестируете его на эмуляторе, вы проходите, а затем имитируете исправления местоположения? либо из командной строки, либо из затмения. Поскольку на эмуляторе приложение получит обновление местоположения только тогда, когда вы имитируете исправление местоположения. – binW

Смежные вопросы