2014-09-17 3 views
3

У меня есть некоторые проблемы с использованием службы определения местоположения для Android. Я начал использовать этот код и изменить его для моих потребностей: https://gist.github.com/blackcj/20efe2ac885c7297a676Запуск Справочная служба не работает

Вот модифицированные части для LocationLoggerServiceManager:

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

public class LocationLoggerServiceManager extends BroadcastReceiver { 

    private SharedPreferences mPrefs; 
    public static final String TAG = "LocationLoggerServiceManager"; 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     // Make sure we are getting the right intent 
     if("android.intent.action.BOOT_COMPLETED".equals(intent.getAction()) || "ftm.vem_game.services.LocationLoggerServiceManager".equals((intent.getAction()))) { 
      boolean mUpdatesRequested = false; 
      // Open the shared preferences 
      mPrefs = context.getSharedPreferences("ftm.vem_game.shared_preferences", 
        Context.MODE_PRIVATE); 
      /* 
      * Get any previous setting for location updates 
      * Gets "false" if an error occurs 
      */ 
      if (mPrefs.contains("KEY_UPDATES_ON")) { 
       mUpdatesRequested = mPrefs.getBoolean("KEY_UPDATES_ON", false); 
      } 
      if(mUpdatesRequested){ 
       //ComponentName comp = new ComponentName(context.getPackageName(), BackgroundLocationService.class.getName()); 
       //ComponentName service = context.startService(new Intent().setComponent(comp)); 

       Intent i = new Intent(context, BackgroundLocationService.class); 
       ComponentName service = context.startService(i); 

       if (null == service){ 
        // something really wrong here 
        Log.e(TAG, "Could not start service BackgroundLocationService"); 
       } 
      } 

     } else { 
      Log.e(TAG, "Received unexpected intent " + intent.toString()); 
     } 
    } 
} 

А вот та часть, где я посылаю Broadcast в моем классе MainActivity:

   public static final String BROADCAST = "ftm.vem_game.services.LocationLoggerServiceManager"; 
       SharedPreferences sharedPref = getSharedPreferences("ftm.vem_game.shared_preferences", Context.MODE_PRIVATE); 
       SharedPreferences.Editor editor = sharedPref.edit(); 
       editor.putBoolean("KEY_UPDATES_ON", true); 
       editor.commit(); 

       Intent intent = new Intent(BROADCAST); 
       Bundle extras = new Bundle(); 
       extras.putString("send_data", "test"); 
       intent.putExtras(extras); 
       sendBroadcast(intent); 

В классе обслуживания я не изменил ничего. Проблема заключается в том, что сервис никогда не запускается, в журнале он говорит: «Не удалось запустить службу BackgroundLocationService». И context.startService() возвращает everytime null.

Я не знаю, что я делаю неправильно, или, может быть, я пропущу что-то, что нужно сделать, прежде чем начинать службу.

+0

вы можете дать дополнительную информацию? как выглядит ваш AndroidManifest.xml? – user934801

ответ

1

Может быть, вы забыли определить службу в AndroidManifest.xml, если это так просто добавить что-то вроде следующего кода в манифесте:

<service 
     android:name="com.examples.yourApp.BackgroundLocationService" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/service_name"> 
    </service> 

и если вы хотите, чтобы запустить его постоянно в фоновом режиме есть посмотрите на следующую ссылку: http://uncorkedstudios.com/blog/background-location-updates-on-android

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