简体   繁体   English

重复通知声音

[英]Repeating notification sound

Is it possible (and if yes how) to make push notification sound repeat until it's read? 是否有可能(如果是的话如何)使推送通知声音重复,直到它被读取? I am creating app that notifies user about new event in app, but user needs to read notification as soon as possible. 我正在创建应用程序,通知用户有关应用程序中的新事件,但用户需要尽快阅读通知。 When user "reads" notification it should stop ringing. 当用户“读取”通知时,它应该停止响铃。 Here's code: 这是代码:

public class GCMIntentService extends IntentService {
String mes;
HelperGlobals glob;

public GCMIntentService() {
    super("GcmIntentService");
}


@SuppressLint("SimpleDateFormat")
protected void onHandleIntent(Intent intent) {
    Bundle extras = intent.getExtras();

    glob = (HelperGlobals) getApplicationContext();

    GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
    String messageType = gcm.getMessageType(intent);

    // .... Doing work here

    GcmBroadcastReceiver.completeWakefulIntent(intent);

}


public void createPush(String title, String msg, Intent intent) {

    Uri soundUri = Uri.parse("android.resource://example.project.com/" + R.raw.notification);

    Context context = getApplicationContext();
    Intent notificationIntent = new Intent(context, DoNothing.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
            | Intent.FLAG_ACTIVITY_SINGLE_TOP
            | Intent.FLAG_ACTIVITY_NEW_TASK);
    PendingIntent pIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
    Notification n  = new Notification.Builder(this)
            .setContentTitle(title)
            .setContentText(msg)
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentIntent(pIntent)
            .setAutoCancel(true).build(); 
    n.defaults |= Notification.DEFAULT_VIBRATE;
    //n.defaults |= Notification.DEFAULT_SOUND; 
    n.sound = soundUri;

    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    notificationManager.notify(0, n); 
}

}

And BroadcastReceiver: 和BroadcastReceiver:

public class GcmBroadcastReceiver extends WakefulBroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    Log.d("BukuLog", "Receiver");
    // Explicitly specify that GcmMessageHandler will handle the intent.
    ComponentName comp = new ComponentName(context.getPackageName(),
            GCMIntentService.class.getName());

    // Start the service, keeping the device awake while it is launching.
    startWakefulService(context, (intent.setComponent(comp)));

    setResultCode(Activity.RESULT_OK);
}
}

like this: 像这样:

        Notification note = mBuilder.build();
        //here
        note.flags = Notification.FLAG_INSISTENT;

        mNotificationManager.notify(1, note);

int FLAG_INSISTENT : Bit to be bitwise-ored into the flags field that if set, the audio will be repeated until the notification is cancelled or the notification window is opened. int FLAG_INSISTENT要按位进入flags字段的位,如果设置,将重复音频,直到取消通知或打开通知窗口。

follow android developer 关注android开发者

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM