有的说要把mPlayer.setVolume(am.getStreamVolume(AudioManager.STREAM_SYSTEM), am.getStreamVolume(AudioManager.STREAM_SYSTEM));放在后面,可是试了还是没用

解决方案 »

  1.   

    Audio类型设置为AudioManager.STREAM_MUSIC,用STREAM_SYSTEM会改变系统音量的。
      

  2.   

    http://developer.android.com/reference/android/media/MediaPlayer.html#setVolume(float, float)
    上一个说错了,楼主的代码不会修改系统音量。
    楼主可以debug看看am.getStreamVolume(AudioManager.STREAM_SYSTEM)返回的音量值是多少,不行就设置一个固定音量值试试,如果是STREAM_MUSIC是15级音量(0-15,0表示静音)。STREAM_SYSTEM具体是几级音量记不清楚了。
      

  3.   

    改成Music也达不到目的,我是想这只是程序自己的音量,不改变其他地方的音量,也不收其他音量大小的影响,即使系统或者MUSIC音量为0这里也会有声音
      

  4.   

    在我们想播放音效或音乐之前,需要确定音量按钮控制了正确的音频流。为此,我们使用Context接口的另一个方法:context.setVolumeControlStream(AudioManager.STREAM_MUSIC);一如既往,Context的实现仍然由我们的活动来负责。调用该方法之后,音量按钮就控制了该音乐流,后面我们就可使用它来输出我们的音效和音乐。在活动的生命周期内我们只需要调用该方法一次,最好是在Activity.onCreate()方法中调用它。
    http://blog.csdn.net/wangdong20/article/details/8567557
      

  5.   

    因为我就是要在Service中启动一个提醒的声音,但在Service中没有这个方法,然后我并不是想去控制音量,我只是想不管系统各音乐流怎么样,在我的这个程序中提示音的音量大小由我自己固定,并且不受外面影响也不影响系统(不改变系统各种音量)
      

  6.   

    先不要用Uri.parse(settings.getString("ringtone", defaultNotice)
    自己通过MediaPlayer的setDataSource方法设置一个sd卡里面的mp3文件试试能不能播放。
      

  7.   

    刚想起来,原因不在audio及音量设置,是因为楼主没有走对MediaPlayer流程,start之前还需要执行prepare函数,prepare完成后才能执行start播放。
      

  8.   

    嗯,找到原因,搞定了,Android太奇怪了,一定要用setDataSource方法才能用setVolume设置,谢谢了
      

  9.   


    mPlayer.setAudioStreamType(AudioManager.STREAM_SYSTEM);
    换成
    mPlayer.setAudioStreamType(AudioManager.STREAM_ALARM); 
    或者
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);//听筒模式就可以了