2011-04-21 52 views
4

在Android通知中實施暫停功能的最佳方式是什麼? (即我通知用戶X [出於參數的緣故,我們可以使用短信的示例],而現在他不想受到它的困擾,但同時他想確保他不會忘記。所以他確實希望它再次發揮噪音,但在例如5分鐘後)在Android通知中實施暫停功能

我看到了安卓鬧鐘的方式,但對我來說似乎凌亂(通常不好)彈出一個浮動的意圖,而用戶可能會做一些重要的事情。

另一方面,似乎不可能將按鈕放在通知區域內。或者我錯了?

你會建議什麼?

+0

我覺得之前您實際上可以將按鈕添加到通知中在狀態欄內。看到這裏的例子:http://www.anddev.org/show_notification_in_statusbar-t1019.html – theomega 2011-04-21 16:02:03

+0

@theomega它沒有說任何關於通知中的按鈕。你能把我指向你看到的那個地方嗎? – yydl 2011-04-21 16:14:48

+0

當然它的確如下:看看屏幕截圖,他們正在實施兩個動作:一個是單擊右側的圖標,另一個是通知的其餘部分。該佈局還包含一個按鈕。 – theomega 2011-04-21 17:06:43

回答

5

一個簡單的策略可能是如下:「1個新信息點擊這裏在5分鐘再次通知」

  • 通知文本即可。
  • 如果用戶清除通知,則不會發生任何事情並且清除通知。
  • 如果用戶點擊通知,則清除通知並設置計時器並在5分鐘後發佈新通知。

或者,如果用戶沒有其他輸入(例如,點擊「解除」按鈕),則單擊該通知可以將活動帶到前臺,以設置定時器。

另一種相反的方法是在發送通知時設置一個計時器,並且在打盹時間之後,將其移除並添加一個新的計時器,並添加相應的噪音,並且可能會添加一段文字說明已經過了多少時間自最初的通知。這可以遞歸地完成,直到用戶清除通知或點擊通知。

最好的策略將取決於應用程序的功能以及用戶能夠執行的定製級別。我不會實現用戶無法輕易阻止的snozze行爲(如果沒有,可能會非常煩人)。

6
  1. 添加打盹按鈕:

    Button snooze = (Button) findViewById(R.id.snooze); 
        snooze.setOnTouchListener(new OnTouchListener() { 
         public boolean onTouch(View arg0, MotionEvent arg1) { 
          mMediaPlayer.stop(); 
          finish(); 
          return true; 
         } 
    }; 
    
  2. 然後,你打電話報警,更新時間

    Intent intent = new Intent(this, this.getClass()); 
    PendingIntent pendingIntent = 
        PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
    
    long currentTimeMillis = System.currentTimeMillis(); 
    long nextUpdateTimeMillis = currentTimeMillis + 5 * DateUtils.MINUTE_IN_MILLIS; 
    Time nextUpdateTime = new Time(); 
    nextUpdateTime.set(nextUpdateTimeMillis); 
    
    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
    alarmManager.set(AlarmManager.RTC, nextUpdateTimeMillis, pendingIntent); 
    
  3. 撥打了報警