我需要启动一个Activity
,以防我的 Android 应用程序
中发生设备震动。
此功能应该适用于我的整个应用
和所有 Activity 。
现在确定如何为其提供一个好的架构,因为检测震动和启动 Activity 需要上下文实例。
我不想在每次更改 activity
时将当前的 Activity 实例传递给我的 ShakeListener
。
你有什么建议?
谢谢。
最佳答案
您肯定必须保留一些监视传感器数据的东西,例如 background Service 。您的服务必须持续monitor sensor events ,将其通过噪声滤波器,检测震动并 send out a Broadcast .
另一方面,该 Activity 可以实现匹配的 BroadcastReciever .
如果您不想为 Activity 添加 BroadcastRecievers,那么您可以在库的 init()
代码中注册感兴趣的 Activity:
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()
代码的位置。
关于java - 检测 Android 设备震动事件的良好架构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16669876/