0

Android 4.2.1 より前では、次のコードは正常に機能しました。

notification.audioStreamType = AudioManager.STREAM_RING;
notification.flags = notification.flags | Notification.FLAG_INSISTENT
        | Notification.FLAG_ONGOING_EVENT;
notificationManager.notify(ID_NOTIFICATION_SOUND, notification);

プリファレンス設定の状態に応じて、振動は個別に行われます。

vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(vibr_pattern1, 0);

Android 4.2.1 以降では、携帯電話がサイレント (バイブレーションなし) に設定されていてバイブレーション モードに設定されていても、バイブレーションのアプリ設定がオフに設定されていても、常にバイブレーションが発生します。興味深いことに、電話が通常モードの場合、振動はありません。

前述のとおり、4.2.1 より前ではすべて正常に機能していました。

誰か助けてくれませんか?グーグルはここで何を変更しましたか?このバグレポートに関連していますか?

よろしく、
アンドレアス

4

2 に答える 2

1

私は次のように修正しました:

//vibration workaround for android 4.2.1+
notification.vibrate = new long[]{0,0};
//end workaround

手動で「振動なし」を追加し、ユーザーが振動を選択すると、Vibratorオブジェクトで完了します。そうでない場合、上記のコードはすべてを静かに保ちます。前述のように、これは 4.2.1 以降では必要ありませんでした。

于 2013-03-07T16:22:13.703 に答える
0

私はこれが古いことを知っています。しかし、答えを探している人にとっては。これを試すことができます。

AudioManager audio = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
     Vibrator v = (Vibrator) this.getSystemService(Context.VIBRATOR_SERVICE);
    switch( audio.getRingerMode() ){
    case AudioManager.RINGER_MODE_NORMAL:
        try {
            Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
            Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);
            r.play();
            v.vibrate(500);
        } catch (Exception e) {
            e.printStackTrace();
        }
       break;
    case AudioManager.RINGER_MODE_SILENT:
       break;
    case AudioManager.RINGER_MODE_VIBRATE:
         v.vibrate(500);
       break;
    }
于 2014-04-24T18:14:55.237 に答える