Domanda

Le funzioni del programma come questo: l'utente ha una lista di numeri di telefono, per il quale il cellulare potrebbe vibrare su di una chiamata in arrivo solo quando nessun altra applicazione a livello di sistema fornirebbe vibrazioni (come ad esempio in modalità mute). So che questo è in qualche modo contro le regole, per che un'applicazione deve rispettare le impostazioni degli utenti, ma l'applicazione è limitata ad alcuni determinati utenti con questo bisogno. Ho provato due modi, ma nessuno di loro è soddisfacente:

  1. Ascolta lo stato di telefonia e attivare direttamente il servizio di vibrazione con il mio proprio modello (con Vibrator.vibrate()). Questo metodo è efficace senza le chiamate in arrivo ancora in modo casuale efficace quando il telefono è in stato di CALL_STATE_RINGING e credo che sia a causa del conflitto con l'applicazione a livello di sistema che gestisce in realtà la vibrazione sulla chiamata in arrivo.

  2. Il giudice se il cellulare vibra su di una chiamata in arrivo (con AudioManager.shouldVibrate()), e decidere se cambiare le impostazioni di vibrazione (con AudioManager.setRingerMode() e AudioManager.setVibrateSetting()). Se le impostazioni vengono modificate vibrazione dalla mia applicazione, essi devono essere ripristinato una volta che il cellulare è tornato allo stato CALL_STATE_IDLE. Questo metodo, tuttavia, continua a non funzionare a volte, senza alcun segno della ragione.

Spero che qualcuno possa dare qualche consiglio su questo tema. Commenti su questi due modi o altri suggeriscono sono i benvenuti.

È stato utile?

Soluzione

Hai bisogno di giocare con due impostazioni in modo che il telefono vibri. La prima è la modalità audio che deve essere impostato utilizzando AufioManager:

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

La seconda parte non è adeguatamente documentata e credo che questa è la parte mancante del codice:

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

uso 1 per attivare la vibrazione e da 0 a girare vibrare fuori.

per comprendere appieno come si dovrebbe lavorare con le impostazioni di vibrazione e la modalità di dare un'occhiata al seguente link: http://hi-android.info/src/com/android /settings/SoundSettings.java.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top