2016-06-23 6 views
0

Я хочу захватить скорость на GPS в фоновом режиме в программе. У меня есть код для захвата скорости, но он не будет работать, если это не первое, что работает в программе. Должна ли она быть закодирована как трансляция, или услуга Intent для последующего уведомления?Захват скорости в фоновом режиме приложения

SpeedManagerService.java:

public class SpeedManagerService extends Service { 

private static final String TAG = "SpeedCheckerService"; 

private boolean isRunning = false; 

@Override 
public void onCreate() { 
    Log.i(TAG, "Service onCreate"); 

    isRunning = true; 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 

    Log.i(TAG, "Service onStartCommand"); 

    //Creating new thread for my service 

    new Thread(new Runnable() { 
     @Override 
     public void run() { 

      if (isRunning) { 
       Log.i(TAG, "Service running"); 
      } 
     } 

    }).start(); 

    return Service.START_STICKY; 
} 

@Nullable 
@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 
} 

А потом я добавил Intent для этой конкретной страницы под страницы Всплеск (для запуска под OnCreate метод, непосредственно перед началом страницы выплеска):

public class SplashActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.splash); 

Intent intent = new Intent(this, Checker.class); 
    startService(intent); 

Любая помощь будет принята с благодарностью. Благодарю.

+0

Я бы порекомендовал разместить часть кода для вашего захвата скорости или представление конфигурации вашего приложения; таким образом мы можем помочь. – Thomas

ответ

1

Из вашего описания кажется, что вы можете выполнять всю работу в Сервисе. Он будет работать постоянно: вы можете запускать отдельный поток для управления входящей обработкой данных, регистрации и отмена регистрации получателей во время выполнения и s0notify пользователя. По моему опыту, это хорошая идея для обработки потока значений в реассовом пути (rx) - вы получаете данные, передаете их цепочке операторов (фильтр по скорости) и обрабатываете в конце. IntentService лучше подходит для долгосрочного одноразового задания

+0

Спасибо, оба ответа помогут. Надеюсь, я могу разобраться и начать. Цените руководство! – Angel

+0

Итак, если я правильно понимаю это, я могу добавить класс с прикрепленным к нему IntentService, поэтому, когда приложение запустится, служба запустится в фоновом режиме и прочитает код, который должен прочитать скорость и захватить ее, и затем отправить уведомление вместе с ним? Я пошлю некоторые из кода. Если кто-то может мне помочь с сервисом, я бы тоже очень признателен. – Angel

+0

Услуга Intent запускается после завершения работы (см. Docs), используя обычный сервис, который будет выполняться неопределенно и сделать все procesding in it –

0

Вы должны внедрить Сервис и настроить свои условия внутри него. Для начала пройдите через это Guide. Вы можете вызвать функцию getSpeed ​​() в вашем приемнике местоположений.