0

首先讓我先說這篇文章,說我不是一個普通的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上做一些這方面的其他方式。一個模型可能是時鐘應用程序中的鬧鐘。當警報熄滅時,整個屏幕將被警報接管。這可能有點沉重,但這是一種可能性。

關於我們應該做什麼以及如何去做的想法?

比爾

回答

0

我會通過顯示一個對話框處理這個(這樣你就不會阻止用戶完全查看,而是隻是需要立即處理的消息)理想的對話框應與相應的信息填充當前正在發生的警報。基本上,當定時器關閉時,發送消息給廣播接收器,然後顯示你的對話框。你的對話框應該有2個按鈕:

  1. 去你的主要活動,以顯示更多信息
  2. 貪睡/忽略/取消。

還要確保你有你的消息......設置你的廣播接收器在manfiest註冊並編程。

+0

Jox,謝謝你的想法。這基本上是我一直在試圖做的。如果我的應用程序處於前臺,警報對話框就會出現。但是,如果其他應用程序的活動正在運行。當我開始顯示對話框的簡單Activity時,我的應用爲什麼交換到視圖中。是否可以在當前活動上顯示對話框? – btschumy 2013-04-08 15:36:13

+0

你不應該開始一個活動來顯示你的對話框,只需從你的廣播接收器中顯示你的對話框。 – JoxTraex 2013-04-08 22:11:51

+0

您可以從BroadcastReceiver中顯示Toast,但我認爲您不能顯示對話框。 AlertDialog需要一個Context並且BroadcastReceiver不是一個Context。 – btschumy 2013-04-10 02:54:30

0

我會去通知系統,並使用文本到語音提醒用戶,有新的事件,他們可以從通知欄中獲得更多的細節。

0

我想你可以使用AlertDialog和上下文屬於一個控制你的廣播的服務。這也許在建築視圖中也很乾淨。