2

Vibration プラグイン (org.apache.cordova.vibration 0.3.11) を使用しているときに、Android Phonegap アプリケーションがミュート オーディオ設定を尊重するようにするソリューションを探しました。

https://github.com/apache/cordova-plugin-vibration

しかし、Android端末のミュート状態での振動を避ける方法はないようです。または、誰かが今設定していますか?

そこで、次のパッチを適用しました。これは私にとってはうまくいくようです。

Vibration.java ファイルを編集し、振動をトリガーする前に AudioManager.RINGER_MODE_SILENT を確認します。

import android.media.AudioManager; // new

public void vibrate(long time) {
    // Start the vibration, 0 defaults to half a second.
    if (time == 0) {
        time = 500;
    }
    // OLD Vibrator vibrator = (Vibrator) this.cordova.getActivity().getSystemService(Context.VIBRATOR_SERVICE);
    // OLD vibrator.vibrate(time);

    AudioManager manager = (AudioManager) this.cordova.getActivity().getSystemService(Context.AUDIO_SERVICE); 
    // respect silent rintone mode
    if (manager.getRingerMode() != AudioManager.RINGER_MODE_SILENT) {
      Vibrator vibrator = (Vibrator) this.cordova.getActivity().getSystemService(Context.VIBRATOR_SERVICE);
      vibrator.vibrate(time);
    }
}

public void vibrateWithPattern(long[] pattern, int repeat) {
    // OLD Vibrator vibrator = (Vibrator) this.cordova.getActivity().getSystemService(Context.VIBRATOR_SERVICE);
    // OLD vibrator.vibrate(pattern, repeat);

    AudioManager manager = (AudioManager) this.cordova.getActivity().getSystemService(Context.AUDIO_SERVICE); 
    // respect silent rintone mode
    if (manager.getRingerMode() != AudioManager.RINGER_MODE_SILENT) {
      Vibrator vibrator = (Vibrator) this.cordova.getActivity().getSystemService(Context.VIBRATOR_SERVICE);
      vibrator.vibrate(pattern, repeat);  
    }
}    

パッチなしでよりスマートなソリューションを知っている人はいますか?

4

0 に答える 0