0

アプリケーションで継続的な通知を表示したい。

現在、4秒後に自動的に通知を発生させることができますが、特定の時間間隔後に継続的に発生させる必要があります。

以下は私のコードです。

私のxmlファイルは

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<Button android:id="@+id/notify"
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content" 
  android:layout_weight="1"
  android:text="Raise a notification"
  android:onClick="notifyMe"
  />
  <Button android:id="@+id/cancel"
  android:layout_width="fill_parent" 
  android:layout_height="wrap_content" 
  android:layout_weight="1"
  android:text="Clear the notification"
  android:onClick="clearNotification"
  />
 </LinearLayout>

これは私の活動ファイルです

package com.vimaltuts.android.notificationexample;

import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

      public class NotificationExampleActivity extends Activity {

  private static final int NOTIFY_ME_ID=1987;
  private int count=0;
  private NotificationManager mgr=null;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mgr=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);

    Timer timer = new Timer();
    timer.schedule(new TimerTask()
    {
       public void run()
       {
           View v = new View(getApplicationContext());
           notifyMe(v);
       }},4000);
    }

  @SuppressWarnings("deprecation")
  public void notifyMe(View v) 
  {
    @SuppressWarnings("deprecation")
    Notification note=new Notification(R.drawable.stat_notify_chat,"Status message!",System.currentTimeMillis());
    PendingIntent i=PendingIntent.getActivity(this,0,new Intent(this, NotificationMessage.class),0);
    note.setLatestEventInfo(this, "New Email","Unread Conversation", i);
    note.number=++count;
    note.vibrate=new long[] {500L, 200L, 200L, 500L};
    note.flags|=Notification.FLAG_AUTO_CANCEL;      
    mgr.notify(NOTIFY_ME_ID, note);
  }

  public void clearNotification(View v) {
    mgr.cancel(NOTIFY_ME_ID);
  }
}

追加のコードが必要な場合は、どこに必要なのか教えてください。

また、サービスで可能ですか..どうですか?


テスト目的のコードに従ってみましたが、うまくいきませんでした...どこが間違っているのか教えてもらえますか

以下は私の活動コードです

    Intent i= new Intent(NotificationExampleActivity.this,NotificationService.class);
    PendingIntent pi=PendingIntent.getService(NotificationExampleActivity.this, 0, i, 0);
    AlarmManager alarmMgr=(AlarmManager)getSystemService(ALARM_SERVICE);
    alarmMgr.cancel(pi);
    alarmMgr.setRepeating(alarmMgr.ELAPSED_REALTIME_WAKEUP, System.currentTimeMillis(),(10*1000), pi);
    Toast.makeText(this, "Alarm set", Toast.LENGTH_LONG).show();

そして、以下は私のブロードキャストレシーバーです

 Toast.makeText(context, "Repeating Alarm worked.", Toast.LENGTH_LONG).show();

しばらくしてからmsg="繰り返しアラームが作動しました" を表示したい

4

1 に答える 1

1

通知とともにAlarmManagerを使用してみてください。

で繰り返しアラームを設定できますActivity。次に、を拡張するクラスを作成しますBroadcastReceiveronReceive通知用のコードを記述できるメソッドをオーバーライドします。

これに関するチュートリアルは、ここで非常によく説明されています。

于 2012-10-15T14:14:40.987 に答える