重复通知声音

M V*_*M V 4 java android push-notification

是否有可能(如果是的话如何)使推送通知声音重复,直到它被读取?我正在创建应用程序,通知用户有关应用程序中的新事件,但用户需要尽快阅读通知.当用户"读取"通知时,它应该停止响铃.这是代码:

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

}
Run Code Online (Sandbox Code Playgroud)

和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);
}
}
Run Code Online (Sandbox Code Playgroud)

kem*_*mdo 9

int FLAG_INSISTENT:要按位进入flags字段的位,如果设置,将重复音频,直到取消通知或打开通知窗口.

关注android开发者

  • FLAG_INSISTENT 不适用于上面的 Oreo。您能提出一些建议吗? (2认同)

小智 9

像这样:

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

        mNotificationManager.notify(1, note);
Run Code Online (Sandbox Code Playgroud)

  • 欢迎来到StackOverflow!简短是可以接受的,但更充分的解释会更好。 (2认同)