setVolume使用MediaPlayer API不起作用

时间:2017-02-12 09:34:38

标签: java android

我不想使用AudioManager ...使用MediaPlayer API,我的应用程序 无法将音量设置为所需级别。 因为它在音量上升和音量调低键设置的前一音量水平上播放。

public class MainActivity extends AppCompatActivity {

    protected static MediaPlayer mp;

    @Override

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final Button next=(Button) findViewById(R.id.button);
        mp=MediaPlayer.create(this,R.raw.m1);
        mp.setVolume(0.02f,0.02f);
        mp.start();
        mp.setLooping(true);

        next.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this,Main2Activity.class);
                startActivity(intent);
            }
        });

1 个答案:

答案 0 :(得分:2)

如文档中所述:

"建议使用此API来平衡应用程序中音频流的输出。除非您正在编写用于控制用户设置的应用程序,否则应优先使用此API,以设置特定类型的所有流的卷的setStreamVolume(int, int, int)。 "

https://developer.android.com/reference/android/media/MediaPlayer.html#setVolume(float,%20float)

  

但是,您可以将流设置为您的媒体播放器,然后播放   应该是音乐/通知或闹钟等所需的流   足以满足要求。

mp.setAudioStreamType(AudioManager.STREAM_MUSIC);

否则,如果你想播放一定级别的声音,你必须使用AudioManager API来设置某个流&设置流的音量并播放音频。这是一种常见的做法。