Android 5.0中的AudioManager.setRingerMode()替代方案(API 21)

我使用AudioManager.setRingerMode()来处理我的应用程序中的设备卷:

  • AudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT)关闭振动和声音。
  • AudioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE)关闭声音并打开振动。
  • AudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL)打开声音并打开振动。

换句话说,我能够控制设备音量并达到所有“模式”。

但是,仅使用AudioManager.setRingerMode无法在Android 5.0中处理所有设备音量模式。

根据文件 :

将设备设置为RINGER_MODE_SILENT会导致设备进入新的优先级模式。 如果将设置设置为RINGER_MODE_NORMAL或RINGER_MODE_VIBRATE,设备将保留优先模式。

如何处理Android 5.0中的所有模式(无,优先级振动,优先级声音,所有振动,所有声音)设备音量?

使用新的5.0 API,有许多方法可用于设置振铃/振动。

 setVibrate (long[] pattern) 

该方法控制设备的振动。 需要很长时间,其中第一个值表示在打开vibrator之前要等待的milliseconds数。 更多细节:

http://developer.android.com/reference/android/os/Vibrator.html#vibrate(long [] ,int)

http://developer.android.com/reference/android/app/Notification.Builder.html#setVibrate(长%5B%5D)

 setDefaults (int defaults) 

这个设置通知属性, VIBRATE SOUNDVIBRATEALL等。

来自文档:

该值应该是以下一个或多个字段与按位 – 或:DEFAULT_SOUND,DEFAULT_VIBRATE,DEFAULT_LIGHTS结合使用。

http://developer.android.com/reference/android/app/Notification.Builder.html#setDefaults(int defaults)

希望这可以帮助。