web-dev-qa-db-ja.com

プッシュ通知でバイブレーション

まず最初に、これらすべてのリンクを確認しました。

しかし、プッシュ通知を受け取ったときに電話が振動するのを達成できません。これが私のコードです:

PushReceiver

public class PushReceiver extends FirebaseMessagingService {
    public PushReceiver() {
    }

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        if(remoteMessage.getData() != null){
            Map<String, String> data = remoteMessage.getData();
            sendNotification(data.get("message"));
        }
        else{
            if(remoteMessage.getNotification() != null) {
                sendNotification(remoteMessage.getNotification().getBody());
            }
        }
    }

    private void sendNotification(String messageBody) {
        Intent intent = new Intent(this, BaseActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
                PendingIntent.FLAG_ONE_SHOT);

        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                .setSmallIcon(R.drawable.ic_done_all_24dp)
                .setContentTitle(getString(R.string.str_notification_order_ready))
                .setContentText(messageBody)
                .setSound(defaultSoundUri)
                .setContentIntent(pendingIntent);

        notificationBuilder.setVibrate(new long[] { 1000, 1000, 1000, 1000, 1000 });

        NotificationManager notificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);


        notificationManager.notify(ConstantUtils.NOTIFICATION_ID_ORDER_READY, notificationBuilder.build());
    }
}

許可

<uses-permission Android:name="Android.permission.VIBRATE"/>

テスト

デバイス:Nexus 5

Androidバージョン:6.0.1

それを機能させるために私がしなければならないある種の未知の魔術がありますか?

7
guisantogui

setDefaults (int defaults)を_NotificationCompat.Builder_インスタンスに使用して、通知用のデフォルトのシステムサウンド、バイブレーション、ライトを提供することもできます。

値は、1つ以上の次のフィールドをビット単位で組み合わせる必要があります-または(|): DEFAULT_SOUNDDEFAULT_VIBRATEDEFAULT_LIGHTS

すべてのデフォルト値には、 DEFAULT_ALL を使用します。

コードに従って、デフォルトのサウンドを設定しているので、デフォルトのサウンドを設定してバイブレーションを行う場合は、次のようにします。

_notificationBuilder.setDefaults(DEFAULT_SOUND | DEFAULT_VIBRATE);
_

すべてのデフォルト設定が必要な場合は、notificationBuilder.setDefaults(-1)を設定することで実現できます。これは、DEFAULT_ALL値と見なされます。

setDefaultsについては、Android doc )を参照してください。

編集:

振動には1000ミリ秒の遅延があります。最初のものを0に設定すると、すぐにオフになります。 {遅延、バイブレーション、スリープ、バイブレーション、スリープ}パターンです

_ // Each element then alternates between delay, vibrate, sleep, vibrate, sleep
 notificationBuilder.setVibrate(new long[] { 1000, 1000, 1000, 1000, 1000}); 
_
14
pRaNaY

これは電話を振動させます:

Vibrator v = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE);
// Vibrate for 500 milliseconds
v.vibrate(500);

通知を呼び出すときは、これも呼び出します

0
John Sardinha