VolumeUtil.java 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package com.telpo.faceHengDian.utile;
  2. import android.app.Service;
  3. import android.content.Context;
  4. import android.media.AudioManager;
  5. /**
  6. * 音量控制
  7. */
  8. public class VolumeUtil {
  9. private AudioManager mAudioManager;
  10. public VolumeUtil(Context context){
  11. mAudioManager = (AudioManager) context.getSystemService(Service.AUDIO_SERVICE);
  12. }
  13. //获取最大多媒体音量
  14. public int getMediaMaxVolume(){
  15. return mAudioManager.getStreamMaxVolume( AudioManager.STREAM_MUSIC );
  16. }
  17. //获取当前多媒体音量
  18. public int getMediaVolume(){
  19. return mAudioManager.getStreamVolume( AudioManager.STREAM_MUSIC );
  20. }
  21. //获取最大通话音量
  22. public int getCallMaxVolume(){
  23. return mAudioManager.getStreamMaxVolume( AudioManager.STREAM_VOICE_CALL );
  24. }
  25. //获取当前通话音量
  26. public int getCallVolume(){
  27. return mAudioManager.getStreamVolume( AudioManager.STREAM_VOICE_CALL );
  28. }
  29. //获取最大系统音量
  30. public int getSystemMaxVolume(){
  31. return mAudioManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM );
  32. }
  33. //获取当前系统音量
  34. public int getSystemVolume(){
  35. return mAudioManager.getStreamVolume(AudioManager.STREAM_SYSTEM );
  36. }
  37. //获取最大提示音量
  38. public int getAlermMaxVolume(){
  39. return mAudioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM );
  40. }
  41. //获取当前提示音量
  42. public int getAlermVolume(){
  43. return mAudioManager.getStreamVolume(AudioManager.STREAM_ALARM );
  44. }
  45. // 设置多媒体音量
  46. /**
  47. * 第一个是streamType,streamType是需要调整音量的类型
  48. * 第二个direction,是音量调节的方向,可以取下面的几个值:
  49. * ADJUST_LOWER 降低音量
  50. * ADJUST_RAISE 升高音量
  51. * ADJUST_SAME 保持不变,使用这个值UI上会向用户展示当前的音量
  52. * 第三个flags,是附加参数,用于影响设置过程中的一些系统行为,两个常用的是:
  53. * FLAG_PLAY_SOUND 调整音量时播放声音
  54. * FLAG_SHOW_UI 调整时显示音量条,跟按按键调节音量时出现的音量条一致
  55. * 0 表示什么额外行为也没有,比如想自己绘制音量条时,可以使用这个值防止显示系统默认的音量条
  56. * @param volume
  57. */
  58. public void setMediaVolume(int volume){
  59. mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, //音量类型
  60. volume,
  61. AudioManager.FLAG_PLAY_SOUND|0);
  62. }
  63. //设置通话音量
  64. public void setCallVolume(int volume){
  65. mAudioManager.setStreamVolume( AudioManager.STREAM_VOICE_CALL,
  66. volume,
  67. AudioManager.FLAG_PLAY_SOUND
  68. | AudioManager.FLAG_SHOW_UI);
  69. }
  70. //设置提示音量
  71. public void setAlermVolume(int volume){
  72. mAudioManager.setStreamVolume( AudioManager.STREAM_ALARM,
  73. volume,AudioManager.FLAG_PLAY_SOUND
  74. |AudioManager.FLAG_SHOW_UI);
  75. }
  76. // 关闭/打开扬声器播放
  77. public void setSpeakerStatus(boolean on) {
  78. if (on) { //扬声器
  79. mAudioManager.setSpeakerphoneOn(true);
  80. mAudioManager.setMode(AudioManager.MODE_NORMAL);
  81. } else {
  82. // 设置最大音量
  83. int max = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL);
  84. mAudioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, max, AudioManager.STREAM_VOICE_CALL);
  85. // 设置成听筒模式
  86. mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
  87. mAudioManager.setSpeakerphoneOn(false);// 关闭扬声器
  88. mAudioManager.setRouting(AudioManager.MODE_NORMAL, AudioManager.ROUTE_EARPIECE, AudioManager.ROUTE_ALL);
  89. }
  90. }
  91. }