2011-03-04 79 views
0

我正在开发一个非常简单的GUI开发一个服务,在后台运行的电话应用程序的过程。Android服务+ BroadcastReceiver,PhoneStateListener

该服务将负责在本地数据库上记录数据。据报道,这些数据与Android API允许我获得的用户操作有关。

这与用户接受/拒绝来电时的不同之处在于,用户是否处于静音状态, 用户的位置等。

另一件事可能是当用户把他们的手机上充电,开机画面关闭,访问的应用程序,听音乐的时候,用相机等

我不感兴趣的数据他们正在使用而不是他们正在做的动作。

我发现了一些相关的类是BroadcastReceiver和另一个PhoneStateListener,但我无法在我的服务中使用它们。

我有一个类(RecordEvents),它扩展了BraodcastReceiver并通过检查不同的动作(intent.getAction())来实现onReceive方法。如果它是我感兴趣的其中一个,我使用Log记录它。一世()。我实例化了RecordEvents,并在onCreate方法中调用了registerReceiver(recordEvents,filter),recordEvents是RecordEvents的一个实例,Filter是一个IntentFilter,与所有的IntentFilter一起使用我感兴趣的意图操作。

现在,如果我在模拟器/手机上执行了任何我感兴趣的操作,则日志猫上不会显示任何打印消息。

我在做一些完全错误的事情吗?

BroadcastReceiver是一个正在研究的用于在后台数据库中记录用户操作的类吗?

我还使用另一个类(PhoneEvents)延伸PhoneStateListener覆盖onCellLocationChanged,onDataActivity,onCallStateChanged这个类实例化,并使用TelephonyManager.listen(phoneEvents,PhoneStateListener.LISTEN_CELL_LOCATION | PhoneStateListener.LISTEN_DATA_ACTIVITY | PhoneStateListener。 LISTEN_CALL_STATE);

那样。

当我在设备上安装应用程序时,仍然没有记录日志。

我很感谢您的回答。

感谢, 安德烈亚斯

回答

0

我不知道,但为什么您使用动态登记,而不是静态的?只需在清单中注册接收器并绑定到服务onReceive()。可能会解决你的问题。