我在下面编写了代码段。
我打算顺利提高音量。
我检查了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
希望得到这个帮助。