7

Pracuję nad przypomnieniem o wydarzeniach kalendarza. W Androidzie nie ma natywnych przypomnień o wydarzeniach kalendarza, więc użytkownik instaluje różne aplikacje kalendarza.Pokaż okno przy użyciu PendingIntent

Teraz te aplikacje mogą się różnić w przypominaniu o wydarzeniach, takich jak powiadomienia o przypomnieniach mogą być wyświetlane. Teraz chcę, aby programowo zaprogramowałem wydarzenie w tych aplikacjach kalendarza wydarzeń i na czas nie osiągnęło żadnego powiadomienia, a wiadomość o wyskakującym okienku pojawi się z alarmem takim jak dźwięk. W tym używam kodu z tej strony. Działa, ale pokazuje przypomnienia w formie powiadomień.

Oto kod:

OnReceive

void doReminderWork(Intent intent) { 
    Long rowId = intent.getExtras().getLong(RemindersDbAdapter.KEY_ROWID); 

    NotificationManager mgr = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); 

    Intent notificationIntent = new Intent(this, ReminderEditActivity.class); 
    notificationIntent.putExtra(RemindersDbAdapter.KEY_ROWID, rowId); 

    PendingIntent pi = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_ONE_SHOT); 

    Notification note=new Notification(android.R.drawable.stat_sys_warning, getString(R.string.notify_new_task_message), System.currentTimeMillis()); 
    note.setLatestEventInfo(this, getString(R.string.notify_new_task_title), getString(R.string.notify_new_task_message), pi); 
    note.defaults |= Notification.DEFAULT_SOUND; 
    note.flags |= Notification.FLAG_AUTO_CANCEL; 


    int id = (int)((long)rowId); 
    mgr.notify(id, note); 
} 

Teraz chcę pokazać okno dialogowe, zamiast zgłoszenia tak jak to może być możliwe z użyciem tych linii kodu, że w oczekiwaniu na zamiar powinny być stosowane w oknie dialogowym.

Intent notificationIntent = new Intent(this, ReminderEditActivity.class); 
notificationIntent.putExtra(RemindersDbAdapter.KEY_ROWID, rowId); 

PendingIntent pi = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_ONE_SHOT); 

Odpowiedz

15

W swojej klasy odbiornik, tylko kod, aby wyświetlić okno dialogowe zamiast powiadomienia.

klasy, który wyświetla okno dialogowe:

public class AlarmDialogPopUp extends Activity 
{ 

    private int m_alarmId; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     // Get the alarm ID from the intent extra data 
     Intent intent = getIntent(); 
     Bundle extras = intent.getExtras(); 

     if (extras != null) { 
      m_alarmId = extras.getInt("AlarmID", -1); 
     } else { 
      m_alarmId = -1; 
     } 

     // Show the popup dialog 
     showDialog(0); 
    } 

    @Override 
    protected Dialog onCreateDialog(int id) 
    { 
     super.onCreateDialog(id); 

     // Build the dialog 
     AlertDialog.Builder alert = new AlertDialog.Builder(this); 

     alert.setTitle("ALARM REMINDER"); 
     alert.setMessage("Its time for the alarm "); 
     alert.setCancelable(false); 

     alert.setPositiveButton("Dismiss", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       AlarmDialogPopUp.this.finish(); 
      } 
     }); 

     // Create and return the dialog 
     AlertDialog dlg = alert.create(); 

     return dlg; 
    } 
} 

W swojej onReceive aby wyświetlić okno dialogowe:

public void onReceive(Context context, Intent intent) 
    { 
      // Launch the alarm popup dialog 
      Intent alarmIntent = new Intent("android.intent.action.MAIN"); 

      alarmIntent.setClass(context, AlarmDialogPopUp .class); 
      alarmIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

      // Pass on the alarm ID as extra data 
      alarmIntent.putExtra("AlarmID", intent.getIntExtra("AlarmID", -1)); 

      // Start the popup activity 
      context.startActivity(alarmIntent); 

    } 

EDIT oparciu o komentarz:

Aby odtwarzać dźwięk, musisz skorzystać ze Mnie diaPlayer jak poniżej.

Dodaj tę linię w klasie aktywności onCreate() z AlarmDialogPopUp, aby odtworzyć dźwięk.

MediaPlayer mediaPlayer; //global variable. 

    mediaPlayer = MediaPlayer.create(this,R.raw.alarmsound); 

Dodaj poniższe linie w onClick() części okna, aby zatrzymać dźwięk:

mediaPlayer.stop(); 
mediaPlayer.release(); 

nadzieję, że to pomaga.

+0

dzięki za pomoc. Jeśli chcę wyświetlać dźwięki po wyświetleniu okna dialogowego – User42590

+0

Edytowałem moją odpowiedź. – Kanth

+0

Zasługujesz na więcej niż +1 ... Dzięki. –