首先讓我先說這篇文章,說我不是一個普通的Android用戶。我們的產品適用於iOS和Android,我在iOS方面擁有更多的經驗。我正在尋找關於什麼是適當的「Android體驗」以及如何實現它的建議。提醒用戶注意時間敏感事件
我們有一個應用程序向用戶展示一系列「事件」,這些事件將在一天中發生。用戶可以要求在發生一個或多個事件之前幾分鐘通知他們。我需要建議如何將這些通知呈現給用戶。
我想我知道如何使用AlertManager通知Activity或BroadcastReceiver何時發生事件。問題是接下來會發生什麼。
然後,我們可以使用Android的通知系統(使用NotificationCompat.Builder)向系統中輸入通知。這個問題是我認爲這太微妙了。這些是時間敏感的事件,用戶需要在發生這種情況時將注意力吸引到設備上。
另一種可能性是當事件即將發生時向用戶顯示警報對話框(可能還有聲音)。當我們的應用程序在前臺時,我有這個工作。但是,當應用程序處於後臺(或可能已停止)時,我最好將警報置於任何現有活動處於活動狀態。這似乎不能正常工作。相反,我的應用程序的主要活動似乎被帶到了前面,然後警報活動顯示在此之上,但具有黑色背景(儘管事實上我對警報活動使用了透明主題)。
這裏是這樣的代碼:
private void createAlarm()
{
Intent intent = new Intent(getApplicationContext(), AlarmDisplayer.class);
PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 3333, intent, 0);
//getting current time and add 5 seconds in it
Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, 10);
//registering our pending intent with alarmmanager
AlarmManager alarmMgr = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmMgr.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);
}
public class AlarmDisplayer extends Activity implements OnClickListener
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Alert received xxx");
builder.setNeutralButton("OK", this);
AlertDialog dialog = builder.create();
dialog.show();
}
public void onClick(DialogInterface dialog, int which)
{
this.finish();
}
}
從清單:
<activity
android:name="com.southernstars.skysafari.AlarmDisplayer"
android:theme="@style/Theme.Transparent"
android:configChanges="orientation"
android:label="" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
或者,也許還有我們應該在Android上做一些這方面的其他方式。一個模型可能是時鐘應用程序中的鬧鐘。當警報熄滅時,整個屏幕將被警報接管。這可能有點沉重,但這是一種可能性。
關於我們應該做什麼以及如何去做的想法?
比爾
Jox,謝謝你的想法。這基本上是我一直在試圖做的。如果我的應用程序處於前臺,警報對話框就會出現。但是,如果其他應用程序的活動正在運行。當我開始顯示對話框的簡單Activity時,我的應用爲什麼交換到視圖中。是否可以在當前活動上顯示對話框? – btschumy 2013-04-08 15:36:13
你不應該開始一個活動來顯示你的對話框,只需從你的廣播接收器中顯示你的對話框。 – JoxTraex 2013-04-08 22:11:51
您可以從BroadcastReceiver中顯示Toast,但我認爲您不能顯示對話框。 AlertDialog需要一個Context並且BroadcastReceiver不是一個Context。 – btschumy 2013-04-10 02:54:30