Служба Android + BroadcastReceiver, PhoneStateListener - PullRequest
0 голосов
/ 04 марта 2011

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

Эта служба будет отвечать за запись данных в локальную базу данных.Эти данные, как сообщается, будут иметь отношение к действиям пользователя, которые мне позволяет получить API-интерфейс Android.

Это может отличаться от того, когда пользователь принимает / отклоняет вызов, от того, кто, находился ли телефон в режиме без звука, местоположениепользователь и все в таком духе.

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

Меня интересуют не данные, которые они используют, а действия, которые они делают.

Я нашел пару соответствующих классов: BroadcastReceiver, а другой PhoneStateListener, но у меня нет 'Я не могу использовать их в моем сервисе.

У меня есть класс (RecordEvents), который расширяет BraodcastReceiver и реализует метод onReceive, проверяя различные поступающие действия (intent.getAction ()). Если это одиниз тех, кто мне интересен, я регистрирую его, используя Log.i ().

Теперь в моем сервисе (класс BackgroundService),что я могу подтвердить, что он работает успешно, я создаю экземпляр RecordEvents и в методе onCreate я вызываю registerReceiver (recordEvents, filter) recordEvents является экземпляром RecordEvents, а фильтр является IntentFilter со всеми интересующими меня действиями.

Теперь, если я выполняю какие-либо действия, которые меня интересуют, на эмуляторе / телефоне, сообщение журнала не отображается в журнале cat.

Я что-то делаю не так?

Является ли BroadcastReceiver подходящим классом для записи действий пользователя в базе данных в фоновом режиме?

Я также использую другой класс (PhoneEvents), который расширяет PhoneStateListener, переопределяя onCellLocationChanged, onDataActivity, onCallStateChanged, и этот класс создаетсяи используется TelephonyManager.listen (phoneEvents, PhoneStateListener.LISTEN_CELL_LOCATION |PhoneStateListener.LISTEN_DATA_ACTIVITY |PhoneStateListener.LISTEN_CALL_STATE);

вот так.

Тем не менее я не получаю журналы при установке приложения на устройстве.

Буду благодарен за ваши ответы.

Спасибо, Андреас

1 Ответ

0 голосов
/ 04 марта 2011

Я не уверен, но почему вы используете динамическую регистрацию вместо статической? Просто зарегистрируйте получателя в своем манифесте и привяжите к услуге в onReceive(). Может быть, это решит вашу проблему.

...