9
votes

Activer / désactiver le son du clavier et la vibration par programme

J'essaie de trouver un moyen de désactiver et d'activer le son du clavier et la vibration lorsque vous appuyez sur les touches. J'ai cherché sur dépassement de pile et autres Android Forums mais je n'ai trouvé aucun résultat.

J'ai essayé Audiomanager Pour activer le mode vibrateur, mais je souhaite activer le mode vibrateur et le son sur le clavier. xxx

est là comment changer android.provider.Settings pour le son du clavier et la vibration?


9 commentaires

Je suppose que cela dépend vraiment de la mise en œuvre du clavier. Il y a peut-être des claviers là-bas qui jouent un film chaque fois qu'une clé est taraudée. Je ne pense pas que vous puissiez y parvenir. De toute façon bonne chance.


Merci @Sherifelkhatib pour votre réponse, mais dans les paramètres, nous avons la possibilité d'activer / désactiver la touche TAP Son et de la touche Tap Tap Vibromator, ma question est la suivante: y a-t-il un moyen de le faire de manière programmatique, comme nous pouvons le faire avec wifi < / Code> via wifimanager et luminosité , volume via audiomanager .. etc.


En réalité, les options dont vous parlez sont le son de la clé (pour le clavier de cadran) et le son touch (pour chaque fois que l'utilisateur touche l'écran)


Non, dans les paramètres du clavier, il existe des options pour le clavier pour activer la vibration sur le robinet de clé et le son aussi.


Mettre le téléphone en mode silencieux aide? Cela dépend en grande partie du type d'application que vous avez. Mais vous pouvez simplement faire: Audiomanager audio_mngr = (Audiomanager) getbasecontext (). GetSystemservice (context.audio_service); alors audio_mngr .SetRerserMode (Audiomanager.ringer_mode_silent); .


Non, cela n'aide pas @ali, j'ai déjà essayé cela, je veux que le volume de la bague et du média soit normal, et ne désactivez-vous que de désactiver ou d'activer le son du clavier et la vibration.


Parlez-vous d'un clavier spécifique? Ou voulez-vous contrôler un clavier arbitraire installé sur un périphérique utilisateur?


Je parle du clavier par défaut dans Android, je veux avoir la possibilité de désactiver / activer le son du clavier et la vibration lorsque l'utilisateur appuyez sur une touche de clavier (comme dans les paramètres du clavier),


Ce semble prometteur, mais ce n'est pas travaille pour moi. Peut-être que je manque quelque chose


3 Réponses :


10
votes

regarder Comment Pour désactiver les effets sonores par défaut pour toutes mes applications ou activité pour désactiver les sons de tapis.

Pour désactiver les commentaires haptiques et appuyer sur des sons de manière programmatique, consultez http://developer.android.com/reference/andrroid/view/view.html#sethapticfeedBackenabled (Boolean) http://developer.android.com/reference/andrroid /view/view.html#setsoundEffectsEnabled(Boolcan)

Plus facile est effectué est en définissant les éléments suivants dans vos styles.xml xxx

et dans votre manifeste.xml xxx


4 commentaires

Ce n'est pas pour les clés du clavier,


Pourriez-vous expliquer les "clés du clavier"? Voulez-vous dire que le clavier logiciel (qui est affiché à l'écran) ou le clavier dur (par exemple attaché à un coussinet de transformateur ASUS). Vous souhaitez donc éteindre les commentaires et les sons haptiques, lorsque l'utilisateur utilise le clavier?


Je parle de clavier souple, comme à Samsung Galaxy S2, HTC One ... etc


Ensuite, vous aurez peut-être besoin d'un hack sale (disponible uniquement pour les périphériques enracinés), comme décrit dans Stackoverflow.com/questions/7392067/... .



4
votes

Selon vos commentaires:

Je parle du clavier par défaut dans Android, je veux avoir la possibilité de désactiver / activer le son du clavier et la vibration lorsque l'utilisateur appuyez sur une touche de clavier, (comme dans les paramètres du clavier)

&

Je parle de clavier souple, comme à Samsung Galaxy S2, HTC One ... etc

AFAIK, vous ne pouvez pas accomplir cela car chaque méthode d'entrée conserve ses valeurs de préférence son / vibration en interne. Voir par exemple Android (AOSP) Ime (à partir de ces lignes d'écriture 30 ~ 39): xxx

Comme vous pouvez le voir stocker les valeurs de vibration / son dans sa préférence partagée. Qui s'applique à la plupart des IMI sur le marché. Par conséquent, vous ne pouvez pas contrôler l'effet de vibration / sonore pour toutes les IMI d'un point unique.


7 commentaires

Pouvez-vous expliquer cela? Je ne peux pas comprendre où et comment implémenter cela. @ toozbek


@Upendrashah, développez-vous un IMI?


En fait, je veux gérer Vibrate_on_Kepress et Sound_on_KeyPress à partir de ma candidature, je souhaite donc activer ou désactiver ces problèmes de manière pragmatique.


@Upendrashah: Comme mentionné dans la réponse, cela n'est pas possible en ce moment.


Est possible si j'obtiens un accès root à l'appareil ?? @ toozbek


@Upendrashah: Même avec l'accès root, ce n'est pas ce que vous voulez. Vous aurez démonter les APK (s) IME, localiser où ils définissent ces valeurs, les modifient à votre goût, réduisant ainsi l'IME APK (s), signer le ou les emballages de manière appropriée, appuyez sur les APK (S) à la cible. dispositif.


Je les ai faites avec accès root. Vous pouvez vérifier cela en réponse ci-dessous @Ozbek



0
votes

Oui, vous pouvez le faire si vous avez un accès root. C'est un long processus mais vous pouvez le faire:

Étape: 1 Créer un fichier XML nommé com.android.inputmethod.latin_preferences.xml code> et enregistrer dans les actifs. P>

com.android.inputmetmethod.latin_preferences.xml code> P>

public static void copyToSystem(final String sourceFilePath, final String destPath) {
        Thread background = new Thread(new Runnable() {

            @Override
            public void run() {
                try {
                    Process process = Runtime.getRuntime().exec("su");
                    DataOutputStream os = new DataOutputStream(process.getOutputStream());
//                    
                    os.writeBytes("cp -f " + sourceFilePath + " " + destPath + "\n");
                    os.flush();
                    os.writeBytes("exit\n");
                    os.flush();
                    process.waitFor();
                    process.waitFor();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                    Log.e(TAG, e.toString());
                } catch (IOException e) {
                    e.printStackTrace();
                    Log.e(TAG, e.toString());
                }
            }
        });
        background.start();
    }


0 commentaires