2017-11-23 3 views
0

TL; DR:メインアクティビティでFirebase Messaging Serviceで有効になっている振動を、どのようにオフにすることができますか?メインアクティビティからFirebase Messaging Serviceのメソッドを呼び出す

私はFirebaseからプッシュ通知を受け取るアプリを作成しています。これらのプッシュ通知は、ラズベリーパイに接続されたPIRモーションセンサーによって生成されます。

このアプリの目的は、PIRが動きを検出すると、自分の携帯電話でアラームが始まることです。 (今は私の電話の振動によって実現されたこのアラーム)。

これまでのところ私のFirebase Messaging Service内で行われていた振動アラームが開始され、アプリケーションのボタンをクリックしてアラームを終了できるようにしたいと考えています。

「クラシック」Javaプログラミングについて私は、主なアクティビティからFirebaseサービスで使用されるVibratorオブジェクトにアクセスする必要があります。しかし、私はこれをどのようにすることができますか?私はバインダーでそれをやろうとしましたが、FirebaseMessagingServiceのonBind()メソッドがfinalでオーバーライドできないために動作しませんでした。

私の現在のコードはここで見ることができ

public class FcmMessagingService extends FirebaseMessagingService { 
Vibrator alarmVibrator; 

@Override 
public void onCreate() { 
    super.onCreate(); 
    alarmVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 
} 

@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 
    if (remoteMessage.getData().get("Alarm").equals("1")){ 
     Log.d("alarm","on"); 
     alarmVibrator.vibrate(10000); 
    }else{ 
     Log.d("alarm","off"); 
     alarmVibrator.cancel(); 
    } 
} 

このコードは(何らかの理由でオフにする一部のdosen't作業のために、私は、後に見えるかもしれません、問題のthats)振動をオンにするために動作します

答えて

1

私は、基本ActivtiyでalarmVibratorを1回だけ定義すると、FcmMessagingServiceクラスでオンまたはオフにできると思います。

たとえば、あなたは以下の通りのAppControllerクラスでそれを定義することができます。

のpublic staticバイブレータalarmVibrator。

、あなたはこのように扱うことができる:

@Override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 
     if (remoteMessage.getData().get("Alarm").equals("1")){ 
     Log.d("alarm","on"); 
     AppController.alarmVibrator.vibrate(10000); 
     }else{ 
     Log.d("alarm","off"); 
     AppController.alarmVibrator.cancel(); 
     } 
    } 
1

アプリがフォアグラウンドであるかonMessageReceivedが解雇されることはありませんことを確認してください。

関連する問題