2013-03-23 7 views
1

Привет, я пытаюсь получить местоположение устройства, используя Location api in android, используя сеть устройств или Wi-Fi-соединение. Однако, похоже, он не получил решетку или долготу.Проблема с местоположением Android

Я создал поставщика услуг и провайдера, а также зарегистрировал приемник местоположения.

я тогда

начал

locationManagaer.requestLocationUpdates(locationProvide.getName(),TIME_INTERVAL, DISTANCE, this); 

и с этого момента, приложение оленья кожа получить новые изменения местоположение на всех. что мне не хватает?

вот мой userLocation Код

public class UserLocation implements LocationListener{ 

    public static final int UPDATE_LATT = 0; 

    private static final int TIME_INTERVAL = 1000; 

    private static final int DISTANCE = 10; 

    private LocationManager locationManagaer; 

    private LocationProvider locationProvide; 

    private Handler mHandler; 

    public UserLocation(Context context, Handler handler){ 
     locationManagaer = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); 
     locationProvide = locationManagaer.getProvider(LocationManager.NETWORK_PROVIDER); 

     mHandler = handler; 


    } 

    public void startSearchLocation(){ 
     Log.d("", "sart location search"); 
     locationManagaer.requestLocationUpdates(locationProvide.getName(),TIME_INTERVAL, DISTANCE, this); 
    } 

    @Override 
    public void onLocationChanged(Location location) { 
     Log.d("", "location update on " + location.getLongitude()); 
     Message.obtain(mHandler,UPDATE_LATT, new Position(location.getLongitude(), location.getLatitude())); 

    } 

    @Override 
    public void onProviderDisabled(String provider) { 
     Log.d("", "onProviderDisabled"); 

    } 

    @Override 
    public void onProviderEnabled(String provider) { 
     Log.d("", "onProviderEnabled"); 

    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
     Log.d("", "onStatusChanged"); 

    } 

} 

вот моя деятельность, которая использует этот класс для настройки и прослушивания новых локаций

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

    mHandler = new Handler() { 

     @Override 
     public void handleMessage(Message msg) { 
      // TODO Auto-generated method stub 
      super.handleMessage(msg); 
      position = (Position) msg.obj; 

      Toast.makeText(
        getApplicationContext(), 
        position.getLattitude() + " " + position.getLongetude(), 
        Toast.LENGTH_LONG).show(); 
     } 

    }; 

    userLocation = new UserLocation(this, mHandler); 

    initializeViews(); 


    userLocation.startSearchLocation(); 
} 

Вот моя позиция POJO

public class Position { 

    private double longetude; 

    private double lattitude; 

    public Position(){ 

    } 

    public Position(double longetude, double lattitude){ 

    } 

    public double getLongetude() { 
     return longetude; 
    } 

    public void setLongetude(double longetude) { 
     this.longetude = longetude; 
    } 

    public double getLattitude() { 
     return lattitude; 
    } 

    public void setLattitude(double lattitude) { 
     this.lattitude = lattitude; 
    } 


} 

Вот часть моего файла манифеста

<application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.jr.haliotest.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> 

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 

Logcat:

03-23 20:19:14.309: D/(16992): sart location search 
03-23 20:19:14.384: E/(16992): file /data/data/com.nvidia.NvCPLSvc/files/driverlist.txt: not found! 
03-23 20:19:14.384: I/(16992): Attempting to load EGL implementation /system/lib//egl/libEGL_tegra_impl 
03-23 20:19:14.449: I/(16992): Loaded EGL implementation /system/lib//egl/libEGL_tegra_impl 
03-23 20:19:14.514: I/(16992): Loading GLESv2 implementation /system/lib//egl/libGLESv2_tegra_impl 

тестирование сразу на HTC One X Thats укорененных, если это помогает. wifi is on and god signal

+0

Вы видите ошибки в logcat или сообщения из 'startSearchLocation()' и/или 'onLocationChanged (Location location)'? – paul

+0

Нет. wil post logcat now – jonney

ответ

1

Если вы находитесь в здании, то, вероятно, ваше устройство не может подключиться к провайдеру GPS. Я бы предложил, если вы перейдете на более открытое пространство, чтобы вы могли получить сигнал.

Подсказка: если устройство подключено для приема сигнала gps. Знак gps перестанет мигать и станет твердым.

+0

Привет. Я думаю, я нахожу, почему он не работает. ничего общего с кодом, кроме самого устройства. я попробовал это на своем старом желании HTC, и он сразу же работал через Wi-Fi или сетевое подключение. – jonney

+0

yup думал, что код мне кажется удобным :-) –

1

Я бы начал с проверки, включены ли ваши службы определения местоположения и, возможно, попробуйте перезагрузить. Также попробуйте использовать «GPS» вместо «network», чтобы узнать, связана ли проблема с вашей сетью, не предоставляя информацию о местоположении.

Из моего опыта Wi-Fi сети иногда просто не предоставляют информацию о местоположении. Я не уверен, что это справедливо и для сотовых сетей, но я подозреваю, что нет никакой гарантии.