用于检测Android设备震动事件的良好架构?

时间:2013-05-21 12:20:46

标签: java android oop android-activity shake

我需要在我的Activity设备震动时启动Android application

此功能应该适用于我的整个app以及所有活动。

现在确定如何为它提供一个好的架构,因为检测抖动并启动一个Activity需要上下文实例。

每次更改ShakeListener时,我都不想将当前的Activity实例传递给我的activity

你会建议什么?

感谢。

1 个答案:

答案 0 :(得分:1)

当然必须保留监控传感器数据的内容,例如background Service。您必须持续monitor sensor events服务,通过噪音过滤器,检测摇动和send out a Broadcast

另一方面,活动可以实现匹配的BroadcastReciever

如果您不想为活动添加BroadcastRecievers,那么您只需在init()库代码中注册感兴趣的活动:

public void init(Context context){ 
    SensorTester st = new SensorTester(context);

    st.registerActivity(MainActivity.class);
    st.registerActivity(OtherActivity.class);
}

使用您在init()代码

中收到的上下文从库服务启动它们
for(Class c : registeredClasses){
     context.startActivity(new Intent(this,c));
}

您希望将init()代码放在目标应用中的位置是您的选择。