2013-12-09 115 views
2

我正在嘗試使用聲音管理器應用程序爲「RING,NOTIFICATION,MEDIA,SYSTEM」創建不同的聲音配置文件。Android振動API

按照設定音量,我用它使用

AudioManager setStreamVolume(AudioManager.STREAM_RING, <value>); 

挑戰帶有振動設置成功。

目前的API調用:

AudioManager setVibrateSetting(vibrateType, vibrateSetting); 

已被棄用API等級16,不希望使用它..

的其他選擇是使用

AudioManager setRingerMode(AudioManager.RINGER_MODE_NORMAL); 

但我正準備關閉並打開振動

  • RINGER
  • NOTIFICATIONS

從我的自定義應用程序。或隨時打開其中一個。

您可以認爲我正在做類似於OS設置選項中聲音設置中啓用和禁用振動的操作。

任何幫助?

回答

-1

的關注,首先你需要在清單文件來定義這樣

<uses-permission android:name="android.permission.VIBRATE" /> 

而在你的類文件中使用這樣的。不知道你需要把這個放在哪裏。

// You need to define some sort of pattern for this 
    Vibrator vb = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 
    long[] pattern = {0, 1000, 0}; 
    //long[] pattern = {startTime, TotalTimeDuration, not vibrating for 0ms}; .. Example for above stuff 
    vb.vibrate(pattern, 0); 

例如:

button.setOnTouchListener(new OnTouchListener() { 
    Vibrator vb = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       long[] pattern = {0, 1000, 0}; 
       vb.vibrate(pattern, 0); 
       break; 
      case MotionEvent.ACTION_UP: 
       vb.cancel(); 
       break; 
     } 
     return false; 
    } 
}); 
+0

這只是在玩的振動。我需要的是打開並打開我的應用程序的系統振動。振動()正在播放,取消()正在停止正在播放的振動。它對系統的振動設置沒有影響。 –

0

試試這個:

audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT); 
audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, AudioManager.VIBRATE_SETTING_OFF); 
audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION, AudioManager.VIBRATE_SETTING_OFF);