Android: потеря некоторых сигналов GPS на некоторых телефонах при запуске камеры и SurfaceView - PullRequest
1 голос
/ 12 августа 2011

Я работаю над приложением, которое делает фотографии в кодировке GPS.

Я могу получить сигнал GPS с точностью до 15 - 20 метров, когда у меня нет камеры, и у меня есть как минимум 3 спутника, иногда 5-7 спутников.

Однако, когда я запускаю упражнение, которое отображает SurfaceView с подключенной к нему камерой и код GPS, моя точность падает (> 100 метров), но только на некоторых телефонах.

Телефоны, на которых он не работает:

  1. Дроид Невероятный 2
  2. HTC Wildfire
  3. HTC Inspire

Телефоны, с которыми он работает:

  1. Atrix
  2. Galaxy Tab
  3. Motorolla Droid (Оригинал)

Итак, мои вопросы: почему это произошло? И конечно, как я могу это исправить?

Вот мой код, который я использую для запуска GPS

try{
    locator = new GeoLocator(this);
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    locationManager.addGpsStatusListener(new GPSStatusManager(locationManager));
    Criteria criteria = new Criteria();
    criteria.setAccuracy(Criteria.ACCURACY_FINE);
    criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);
    bestProvider = locationManager.getBestProvider(criteria, true);
    Bundle bundle = new Bundle();
    //I copied the next two lines out of some tutorial hoping that they would help boost my gps, but I'm really not sure what they do
    boolean xtraInjection=locationManager.sendExtraCommand(LocationManager.GPS_PROVIDER,
                                          "force_xtra_injection",bundle);
    boolean timeInjection=locationManager.sendExtraCommand(LocationManager.GPS_PROVIDER,
                                          "force_time_injection",bundle);
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0.0f, locator);
}catch(Exception e){}

Ответы [ 2 ]

0 голосов
/ 18 июня 2013

То же самое здесь с галактикой Gio GTS5660 (Android 2.3.6) и LG5 E610.На самом деле это экземпляр этой ошибки, которая, скорее всего, связана с аппаратными проблемами: http://code.google.com/p/android/issues/detail?id=20098

0 голосов
/ 13 августа 2011

Завершите здесь догадку, но попробуйте изменить эту строку:

criteria.setPowerRequirement(Criteria.NO_REQUIREMENT);

к этому:

criteria.setPowerRequirement(Criteria.POWER_HIGH);

Теория: не указывая требования к высокой мощности для GPS, вы позволяете ОС запускать GPS в режиме с меньшим энергопотреблением, что происходит при включении других энергоемких аксессуаров. Когда GPS работает в режиме низкого энергопотребления, это сделает его менее точным.

...