2016-11-19 1 views
4

In meiner Anwendung möchte ich die Vibration ausschalten, wenn Benachrichtigung kommt. Ich kann den Signalton stummschalten, aber die Vibration nicht stoppen.Reduzieren Benachrichtigung Vibrationsstärke auf Null in android programmatisch

den Klang der Benachrichtigung stumm zu schalten, ich folgenden Code verwendet haben:

if (audioManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION) != value) { 
     audioManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, value, 0); 
     Utils.log("Volume Changed to " + value); 
    } 

Bitte vorschlagen, wie die Benachrichtigung Vibrationsintensität auf Null ändern oder eine andere Art und Weise vorschlagen Vibration aufzuheben, wenn Meldung eintrifft.

audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, 
     AudioManager.VIBRATE_SETTING_OFF); 

setVibrateSetting funktioniert nicht und ist veraltet

I Vibrationsintensität der Mitteilung in Samsung-Geräten ändern, indem Sie manuell:

  1. Zum Einstellen
  2. Gehe auf My Registerkarte Gerät
  3. Tippen Sie auf Ton und öffnen Sie "Vibrationsintensität"
  4. Wählen Sie das Vib Rationsintensität für eingehenden Anruf, Benachrichtigung und haptische Rückmeldung

Aber wie kann ich es programmatisch tun? bitte hilfe.

+0

Standardmäßig denke ich, sollte nicht vibrieren. Verwenden Sie NotificationCompat? Eine schnelle Lösung könnte sein, die android.permission zu entfernen.VIBRIEREN Sie aus Ihrem Manifest. – Alex

+0

Nein, ich verwende NotificationCompat nicht. Standardmäßig ist die Vibration aktiviert. –

+0

Im Standard Android gibt es keine Option "Vibrationsintensität". Was Sie sehen, wurde von Ihrem Gerätehersteller für Ihr Gerät hinzugefügt. – CommonsWare

Antwort

0

Die einzige Lösung für dieses Problem besteht darin, den Ruhemodus beizubehalten. In den neuesten Versionen von Android können wir die Standardschwingung nicht ausschalten.

2

Normalerweise in Handys und ähnlichen Geräten Vibrationsgeräte von small dis-balanced motor, die causes the vibration when its powered on. Dieser Motor hat normalerweise keine Kontrolle außer on/off, so dass Sie die Vibrationsdauer steuern können, nicht das Niveau.

In diesem Fall Sie Pulse-width modulation (PWM) Ansatz (wie auf Abb.) Können Vibrationsintensität steuern: einige Zeit T (zum Beispiel 1 Sekunde) und zum ersten Mal 900 ms davon (tv1) gesetzt Vibrieren zu auf und 100 ms (ts1) - vibrieren Sie nicht. Als 800 ms (tv2) davon Vibrieren auf auf und 200 ms (ts2) - halten Vibrieren aus usw., bis die Zeit von Vibrieren auf geworden 0.

PWM vibration control

On Kontrolle Android Vibrator in Vibrator Klasse implementiert .

Wie @Rohit J vorgeschlagen, können Sie Vibrieren Muster verwenden (beschrieben here) dafür, wie:

long[] pattern = { 
     0,  // start vibrate immediately 
     900, // vibrate 1 900 ms 
     100, // silence 1 100 ms 
     800, // vibrate 2 800 ms 
     200, // silence 2 200 ms 
     700, 
     300, 
     600, 
     400, 
     500, 
     500, 
     400, 
     600, 
     300, 
     700, 
     200, 
     800, 
     100, 
     900, 
}; 

und fügen Sie Notification:

Notification.Builder builder = new Notification.Builder(context); 
builder.setContentIntent(contentIntent) 
     ... 
     .setVibrate(pattern) 
     ...; 

NB! Sie können auch (komplexere oder programmgesteuerte) komplexere Muster für die Vibrationskontrolle für eine geglättete Intensitätsänderung erstellen (erzeugen Sie zum Beispiel keinen langen soliden Vibrationsimpuls, aber viele kurze und verringern nicht die Vibrationsdauer, sondern die Menge dieser Pulse, etwa Pulse-density modulation) .

+0

Aber ich baue keine Benachrichtigung. Ich möchte die Benachrichtigung für Apps wie Hangout, E-Mail, WhatsApp über meine App schweigen. –

+0

bitte sagen, wie Intensität drehen offvibration: Einstellungen  Sounds - Benachrichtigungen - Vibrationsintensität Ich möchte die Schwingungsintensität der Benachrichtigung auszuschalten programmatisch –

+0

an [diese] einen Blick (http://stackoverflow.com/q/14087322/6950238) Frage, und es sind Antworten. –

Verwandte Themen