7

私はCalender Eventsリマインダを作成中です。 AndroidにはネイティブのCalenderイベントリマインダーはありませんので、ユーザーは異なるカレンダーアプリをインストールします。PendingIntentを使用してダイアログを表示

これらのアプリは、リマインダ通知などのリマインダーイベントで表示される可能性があります。今私はこれらのイベントのカレンダーアプリケーションでプログラムでイベントを設定し、時間がたつと通知が表示されず、ポップアップメッセージがサウンドのようなアラームで表示されるようにしたいと考えています。私はそのサイトのコードを使用しています。それは働いていますが、通知の形でリマインダを表示しています。

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); 
} 

それは、この保留中の意図を使用する必要があることをこれらのコード行を使用してから可能とすることができますので、どのように今、私は代わりに、通知のダイアログボックスを表示したい:ここ

はコードがありますダイアログボックス。あなたのレシーバクラス、通知の代わりに表示するダイアログを取得するためのコードだけで

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

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

答えて

15

。ダイアログが表示され

クラス:、

は、サウンドを再生するには、次のコメントをもとに

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:あなたのonReceive

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; 
    } 
} 

は、ダイアログを表示しますあなたは私を利用する必要があります以下のようにします。

アクティビティクラスAlarmDialogPopUponCreate()にこの行を追加すると、サウンドが再生されます。

MediaPlayer mediaPlayer; //global variable. 

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

音を停止するには、ダイアログのonClick()で以下の行を追加します。

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

は、この情報がお役に立てば幸いです。

+0

ありがとうございました。ダイアログが表示されているときにサウンドを表示したい場合は – User42590

+0

私の答えを編集しました。 – Kanth

+0

あなたは+1以上の価値があります...ありがとう。 –

関連する問題