我需要在我的Activity
设备震动时启动Android application
。
此功能应该适用于我的整个app
以及所有活动。
现在确定如何为它提供一个好的架构,因为检测抖动并启动一个Activity需要上下文实例。
每次更改ShakeListener
时,我都不想将当前的Activity实例传递给我的activity
。
你会建议什么?
感谢。
答案 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()
代码放在目标应用中的位置是您的选择。