Android Media Player setVolume方法似乎没有任何效果

时间:2013-11-21 15:18:12

标签: media-player

我在下面编写了代码段。

我打算顺利提高音量。

我检查了newValue浮点变量,它确实将其值从0改为1,差不多以0.1步为单位。

intCurrentVolue变量来自AudioManager,通过getStreamVolume方法。

private void increaseVolume(int intCurrentVolume){
        if (mpLoop !=null){
            float i=0;
            float newValue=0;
            while (i < intCurrentVolume){
            newValue=i/intCurrentVolume;
            try{
                mpLoop.setVolume(newValue,newValue);
            } catch (Exception e) {
            //Here Toast to show Exception
            }
                i++;

                }//while
        }//if

    }//increase

无论 newValue 值,音量水平始终相同。

我遇到过 newValue = 0 ,但没有任何反应。

谢谢。

=============================找到解决方案=============== ==========

我找到了解决这个问题的方向。 Here

我写了一些代码以便更好地接近:

1 - 创建一个类:

package x.x.x.x.x;//your package here

import android.app.Activity; 
import android.content.Context; 
import android.media.AudioManager; 
import android.media.MediaPlayer; 


public abstract class Musica extends Activity { 
        static MediaPlayer mp; 
        public static void play(Context context, int resource){ 
        stop(context); 
        mp=MediaPlayer.create(context,resource); 
        mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 
        mp.setLooping(true); 
        mp.start(); 
        }//play 

        public static void stop(Context context){ 
        if (mp != null){ 
        mp.stop(); 
        mp.release(); 
        mp = null; 
        }//if 
        }//stop 
}//class

2 - 创建MainActivity的变量字段:

MediaPlayer mp, mpLoop;
AudioManager am;

3 - 创建一种更好的组织方法:

private void prepareFadeOut(){ 
                //----------------
        int targetVol = 0; 
        int STEP_DOWN=1; 
        int currentVol = am.getStreamVolume(AudioManager.STREAM_MUSIC); 
        int orgVol=currentVol; 
        // fade music gently 
        while(currentVol > targetVol) { 
        try { 
        Thread.sleep(200); 
        }catch (InterruptedException e) { 
         e.printStackTrace(); 
        } 
        am.setStreamVolume(AudioManager.STREAM_MUSIC, currentVol - STEP_DOWN,0); 
        currentVol =am.getStreamVolume(AudioManager.STREAM_MUSIC); 
        } 
        Musica.stop(MainActivity.this); 
        am.setStreamVolume(AudioManager.STREAM_MUSIC, orgVol, 0);
}//prepare

3 - 在活动上点击我的MainActivity上的按钮(myBt):

myBt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//Context here is MainActivity
//Second parameter is int of my music on raw folder
prepareFadeOut();
Musica.play(MainActivity.this,globalIntMyResourceLoop);
}//onClick
});//setOn

希望得到这个帮助。

0 个答案:

没有答案