У меня есть некоторые проблемы с использованием службы определения местоположения для 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.
Я не знаю, что я делаю неправильно, или, может быть, я пропущу что-то, что нужно сделать, прежде чем начинать службу.
вы можете дать дополнительную информацию? как выглядит ваш AndroidManifest.xml? – user934801