2

Jelly Bean の振動設定を変更する方法を探しています。JB以前の振動設定はすべて廃止されていることがわかりましたが、新しいAudioManager.[振動設定を変更する]コードはどこにもありません。遊び方が知りたい「着信バイブ」の設定があります。

助けてくれてありがとう。

4

4 に答える 4

6

android4.1では、これを使用して「バイブレーションと呼び出し音」を制御できます

Settings.System.putInt(mContentResolver, Settings.System.VIBRATE_WHEN_RINGING, enable ? 1 : 0);
于 2012-07-30T07:33:36.143 に答える
2

ドキュメントから:

This method is deprecated.
Applications should maintain their own vibrate policy based on current ringer mode that can be queried via getRingerMode().

Googleは、バイブレーション設定をアプリごとにアプリごとに処理し、getRingerMode()をクエリして設定を調整することを望んでいるようです。

于 2012-07-01T22:46:14.743 に答える
0

この問題は、数日間私を悩ませてきました。最後にそれが機能しました。適切な権限があることも確認してください。

uses-permission android:name="android.permission.WRITE_SETTINGS"/

protected void onCreate(Bundle savedInstanceState) {
    audioManager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);

}

次に、オンクリックリスナーで次を利用しました。

                lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                    if (vibrate == 1) {
                        try {
                            Settings.System.putInt(getContentResolver(), "vibrate_when_ringing", 1);
                            audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_ON); //Set it to never vibrate on ring:
                            audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_ON); //Set it to never vibrate on notify

                            boolean vibrateWhenRinging;
                            vibrateWhenRinging = (Settings.System.getInt(getContentResolver(), "vibrate_when_ringing") == 1);
                            Toast.makeText(MainActivity.this, Boolean.toString(vibrateWhenRinging), Toast.LENGTH_LONG).show();
                        } catch (Exception e) {
                            Toast.makeText(MainActivity.this, "System vibrate error", Toast.LENGTH_LONG).show();
                        }
                    } else {
                        try {
                            Settings.System.putInt(getContentResolver(), "vibrate_when_ringing", 0);
                            audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF); //Set it to never vibrate on ring:
                            audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_OFF); //Set it to never vibrate on notify

                            boolean vibrateWhenRinging;
                            vibrateWhenRinging = (Settings.System.getInt(getContentResolver(), "vibrate_when_ringing") == 1);
                            Toast.makeText(MainActivity.this, Boolean.toString(vibrateWhenRinging), Toast.LENGTH_LONG).show();
                        } catch (Exception e) {
                            Toast.makeText(MainActivity.this, "System vibrate error in else statement", Toast.LENGTH_LONG).show();
                        }
                    }
                }
于 2015-07-14T14:16:41.880 に答える
0

Settings.System.VIBRATE_WHEN_RINGING@hide アノテーションで宣言されているため、Android Studio で使用すると問題が発生する可能性があります。Settings.System.VIBRATE_WHEN_RINGINGしたがって、その値で置き換える必要があるかもしれません:"vibrate_when_ringing"

@hide アノテーションで宣言されているのは面倒です。これは、Google が外部開発者に使用してほしくないことを意味するためです...

于 2015-02-19T10:46:55.980 に答える