Работа с GPS

Ответить
field
Сообщения: 2
Зарегистрирован: 16 авг 2012, 16:05

Работа с GPS

Сообщение field » 16 авг 2012, 16:36

Не удается установить или изменить координаты в эмуляторе, пробовал получать их через getLastKnownLocation и по событию onLocationChanged в листенере. Методы location.getLatitude() или location.getLongitude() в location возвращают нуль, событие onLocationChanged не срабатывает при смене координат, хотя такие события листенера как onProviderDisabled и onProviderEnabled работают.
Кординаты менял и по Send в Location Controls эмулятора и через telnet. GPS support в AVD присутствует. В самом эмуляторе GPS включен. Код исправный - проверял на железе. Подскажите, в чем может быть проблема?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Работа с GPS

Сообщение rezak90 » 16 авг 2012, 16:47

кинь проект, проверю у себя, может проблема в eclipse быть. Если уж проект секретный то кинь код, будем разбиратся, а то это иголка в сене...
R.id.team
Политика на форуме запрещена

field
Сообщения: 2
Зарегистрирован: 16 авг 2012, 16:05

Re: Работа с GPS

Сообщение field » 17 авг 2012, 09:24

Вот код:

Код: Выделить всё

package com.paad.whereami;

import java.io.IOException;
import java.util.List;
import java.util.Locale;

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.widget.TextView;
import android.widget.Toast;

public class WhereAmI extends Activity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    LocationManager locationManager;
    String context = Context.LOCATION_SERVICE;
    locationManager = (LocationManager)getSystemService(context);
    Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
    updateWithNewLocation(location);

    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1, 1,
    		locationListener);
  }
  
  private final LocationListener locationListener = new LocationListener() {
    public void onLocationChanged(Location location) {
      updateWithNewLocation(location);
    }
	 
    public void onProviderDisabled(String provider){
      updateWithNewLocation(null);
    }

    public void onProviderEnabled(String provider){ }
    public void onStatusChanged(String provider, int status, 
                                Bundle extras){ }
  };

  private void updateWithNewLocation(Location location) {
	    String latLongString;
	    TextView myLocationText; 
	    myLocationText = (TextView)findViewById(R.id.myLocationText);
	    if (location != null) {
	      double lat = location.getLatitude();
	      double lng = location.getLongitude();
	      latLongString = "Lat:" + lat + "\nLong:" + lng;
	    } else {
	      latLongString = "No location found"; 
	    }
	    myLocationText.setText("Your Current Position is:\n" + 
	                           latLongString);
	  }
}
Вот манифест:

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.paad.whereami">
  <application 
    android:icon="@drawable/ic_launcher">
    <activity 
      android:name=".WhereAmI" 
      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>
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
</manifest>

Ответить