2013-05-21 33 views
0

我需要在我的Android application中設備抖動的情況下啓動Activity檢測Android設備搖動事件的良好體系結構?

此功能應該在我的整個app和所有活動中工作。

現在肯定如何爲它提供一個好的體系結構,因爲檢測搖動和啓動Activity需要上下文實例。

我不希望每次更改activity時將我當前的Activity實例傳遞給我的ShakeListener

你會建議什麼?

謝謝。

回答

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()代碼在目標應用程序是你的選擇。

+0

基本上,我正在編寫一個將用於測試人員的Android庫。測試人員只需將該庫添加到Android應用程序並調用init代碼即可。我想使基本應用程序代碼中的更改最小化,因此創建廣播接收器將需要更改Manifest文件,我試圖避免這種更改。希望這是明確的。 –

+0

我可以捕獲搖動事件並在擴展它的Application類中啓動一個活動嗎? –

+0

@ narek.gevorgyan更新了答案。只有當至少有一個子組件(Activity,Service等)正在運行時,'Application'類纔會出現。 –