Jelly Bean の振動設定を変更する方法を探しています。JB以前の振動設定はすべて廃止されていることがわかりましたが、新しいAudioManager.[振動設定を変更する]コードはどこにもありません。遊び方が知りたい「着信バイブ」の設定があります。
助けてくれてありがとう。
Jelly Bean の振動設定を変更する方法を探しています。JB以前の振動設定はすべて廃止されていることがわかりましたが、新しいAudioManager.[振動設定を変更する]コードはどこにもありません。遊び方が知りたい「着信バイブ」の設定があります。
助けてくれてありがとう。
android4.1では、これを使用して「バイブレーションと呼び出し音」を制御できます
Settings.System.putInt(mContentResolver, Settings.System.VIBRATE_WHEN_RINGING, enable ? 1 : 0);
ドキュメントから:
This method is deprecated.
Applications should maintain their own vibrate policy based on current ringer mode that can be queried via getRingerMode().
Googleは、バイブレーション設定をアプリごとにアプリごとに処理し、getRingerMode()をクエリして設定を調整することを望んでいるようです。
この問題は、数日間私を悩ませてきました。最後にそれが機能しました。適切な権限があることも確認してください。
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();
}
}
}
Settings.System.VIBRATE_WHEN_RINGING
@hide アノテーションで宣言されているため、Android Studio で使用すると問題が発生する可能性があります。Settings.System.VIBRATE_WHEN_RINGING
したがって、その値で置き換える必要があるかもしれません:"vibrate_when_ringing"
@hide アノテーションで宣言されているのは面倒です。これは、Google が外部開発者に使用してほしくないことを意味するためです...