2013-12-09 52 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);