java - 检测 Android 设备震动事件的良好架构?

标签 java android oop android-activity shake

我需要启动一个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/

相关文章:

java - Spring MVC(无法按正确的顺序实例化我的对象)

Java 语音生物识别应用程序

java - 给物体补水是什么意思?

java - 通用接口(interface)的多种实现

java - java中通过中断读取文件

c# - 是否可以在 Android 上部署 Silverlight 应用程序?

java - 垃圾收集载入画面

android - 具有沉浸式全屏模式的工具栏

java - 在Java中按顺序存储各种对象类型

java.lang.RuntimeException : Unable to instantiate activity ComponentInfo: java. lang.NullPointerException 异常