Frage

Die Programmfunktionen wie folgt: Der Benutzer verfügt über eine Liste von Telefonnummern, für die das Handy nur dann vibrieren kann, wenn keine andere systemweite Anwendung Vibrationen liefern (z. B. im stummen Modus). Ich weiß, dass dies irgendwie gegen die Regeln ist, da eine Anwendung die Einstellungen der Benutzer respektieren sollte, aber die Anwendung ist auf bestimmte Benutzer mit diesem Bedarf beschränkt. Ich habe zwei Möglichkeiten ausprobiert, aber keiner von ihnen ist befriedigend:

  1. Hören Sie sich den Telefoniezustand an und lösen Sie den Vibrationsdienst direkt mit meinem eigenen Muster aus (mit Vibrator.vibrate()). Diese Methode ist effektiv, ohne dass eingehende Anrufe dennoch zufällig wirksam sind, wenn sich das Telefon in der Handy befindet CALL_STATE_RINGING Staat und ich denke, es liegt an dem Konflikt mit der systemweiten Anwendung, die die Schwingung beim Eintreffen tatsächlich umgeht.

  2. Beurteilen Sie, ob das Handy bei einem eingehenden Anruf vibriert (mit AudioManager.shouldVibrate()) und entscheiden, ob die Vibrateinstellungen geändert werden sollen (mit AudioManager.setRingerMode() und AudioManager.setVibrateSetting()). Wenn die Vibrateinstellungen durch meine Anwendung geändert werden, müssen sie wiederhergestellt werden, sobald das Handy zurück ist CALL_STATE_IDLE Zustand. Diese Methode funktioniert jedoch manchmal immer noch nicht ohne Anzeichen des Grundes.

Ich hoffe, dass jemand zu diesem Thema Ratschläge geben könnte. Kommentare zu diesen beiden oder anderen Möglichkeiten schlagen vor, willkommen zu sein.

War es hilfreich?

Lösung

Sie müssen mit zwei Einstellungen spielen, damit Ihr Telefon vibrieren kann. Der erste ist der Klangmodus, der mithilfe von Aufiomanager festgelegt werden muss:

AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
audioManager.setRingerMode(targetSoundMode);

Der zweite Teil ist nicht ordnungsgemäß dokumentiert und ich glaube, dies ist der fehlende Teil Ihres Codes:

String VIBRATE_IN_SILENT_SETTING_NAME = "vibrate_in_silent";
Settings.System.putInt(getContentResolver(), VIBRATE_IN_SILENT_SETTING_NAME, 1);

Verwenden Sie 1, um vibrieren Sie ein und 0, um vibrieren.

Um vollständig zu verstehen, wie Sie mit vibrierenden Einstellungen und Modus arbeiten sollten, sehen Sie sich den folgenden Link an:http://hi-android.info/src/com/android/setings/soundsetings.java.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top