2

У меня проблема с точностью геообъектов, потому что местоположение пользователя в основном определяется мобильными сетями, которые полностью отсасываются.Как сделать геоформы точными?

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

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

Мой вопрос: есть ли способ сделать геофоны точными с радиусом 60 м, например? Или есть ли способ получить точные данные о местоположении пользователя?

Заранее спасибо

+1

Вы можете использовать данные GSM и GPS вместе, чтобы повысить ваше местоположение эффективность обнаружения. Хороший пример обнаружения местоположения с помощью GPS можно найти здесь, http://stackoverflow.com/questions/6181704/good-way-of-getting-the-users-location-in-android –

+0

Спасибо, но моему приложению нужны геообъекты для мгновенного запуска. Мне не нужно искать место каждые 30 минут или около того. – Dev

+0

'есть способ сделать геофоны точными до 60 мО'. Вопрос неверен, поскольку он зависит только от точности поставщика местоположения. Чипы Gps в смартфонах не так уж хороши. Но 60 метров - это плохо. Многие телефоны будут делать 15 м или меньше. – greenapps

ответ

2

Вы будете иметь лучшее представление о точности следуя эту тему:

How to make Geo Fencing alert more accurate in Android

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

Простой макияж сервис свистеть GPS:

public class GPSService extends Service implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener { 

GoogleApiClient mGoogleApiClient; 
LocationRequest locationRequest; 

public GPSService() { 
} 

@Override 
public IBinder onBind(Intent intent) { 
    // TODO: Return the communication channel to the service. 
    throw new UnsupportedOperationException("Not yet implemented"); 
} 

@Override 
public void onCreate() { 
    super.onCreate(); 


    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addApi(LocationServices.API) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .build(); 

    mGoogleApiClient.connect(); 


} 

@Override 
public void onLocationChanged(Location location) { 


    Utility.ReadAndWriteData(this, Utility.readFileName(this), "Still Geofence is not triggered!!!"); 

} 

@Override 
public void onConnected(Bundle bundle) { 

    locationRequest = LocationRequest.create(); 
    locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 
    locationRequest.setFastestInterval(1000); 
    locationRequest.setInterval(2000); 
    LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,locationRequest,this); 

} 

@Override 
public void onConnectionFailed(ConnectionResult connectionResult) { 

} 

@Override 
public void onConnectionSuspended(int i) { 

} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 

    if(mGoogleApiClient.isConnected()) { 

     LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this); 

    } 
} 
+0

Мое приложение всегда работает в фоновом режиме, поэтому я считаю, что опрос gps всегда влияет на время работы от батареи, как я описал выше ... Мне нужно знать, как правильно пинговать gps, должен ли я делать это с помощью диспетчера местоположений? Какое минимальное время и минимальное расстояние я должен установить? – Dev

+0

@ Dev: На самом деле вам нужно только настроить GPS-приемник только до тех пор, пока ваше текущее геозонность не начнет с перехода ENTER. Поэтому, когда вы будете писать код для создания геофорумы после его создания, вы начнете пинговать свой GPS. После того, как вы перейдете на переход ВВОД, вы должны остановить его. Вот и все. Как вы уже упоминали, радиус 60M очень мал в случае геозонности, поэтому, если вы можете увеличить его, по крайней мере, 500 М, значит, у вас будет лучший результат, потому что в меньшем радиусе он не смог отслеживать транситон. – Jai

+0

@Dev: Добавлен простой сервис вызов выше – Jai

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