我的音频没有播放......我已经被困在这里大约7个小时(所有的一天!),并且无法弄清楚问题。我想在用户点击静音时让音量静音,当用户再次点击静音时取消静音。
我希望能够让用户将应用取消静音到与用户最初相同的音量。 userVolumeOnStart.userVolume
是存储用户原始卷的位置。我在unMute中使用此值,将其卷设置为以前的值。
例如:
如果您的音量为7且您使用了我的静音按钮:
打开应用 - >静音(音量= 0) - >取消静音(音量= 7再次等)
这是静音按钮的监听器:
public void mute(View view) {
mutebutton = (ImageButton) findViewById(R.id.mutebutton);
if ((variableForMute.x % 2) != 0) { //If it's odd UNMUTE
Log.v(TAG, "Use this volume to unmute " +userVolumeOnStart.userVolume +"");
Toast.makeText(Main_Menu.this, "UNMUTED", Toast.LENGTH_SHORT).show();
mAudioManager.setStreamVolume(AudioManager.STREAM_RING, userVolumeOnStart.userVolume, 0);
variableForMute.x++;
} else { //If its even MUTE
userVolumeOnStart.userVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_RING);
Log.v(TAG, "Right Before Mute " +userVolumeOnStart.userVolume +"");
mAudioManager.setStreamVolume(AudioManager.STREAM_RING, 0, 0);
Toast.makeText(Main_Menu.this, "MUTED", Toast.LENGTH_SHORT).show();
variableForMute.x++;
}
}
userVolumeOnStart.userVolume是我在单独的类中定义的变量,用于全局使用它。这是音频实际运行的地方。我可以向你保证问题不在这里(因为我今天没有弄乱这个类中的代码),但我仍然会提供代码:
cdt = new CountDownTimer(20000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
Log.v(TAG, millisUntilFinished + "left");
millisUntilFinishedRounded = ((500 + millisUntilFinished) / 1000) * 1000;
if (millisUntilFinishedRounded == 10000) { //TEN SECONDS
ten = MediaPlayer.create(TwentySeconds.this, R.raw.tenmoreseconds);
ten.start();
}
if (millisUntilFinishedRounded == 3000) {
three = MediaPlayer.create(TwentySeconds.this, R.raw.threetwoone);
three.start();
}
}
这是一款在应用启动时在后台运行的服务。
在应用程序运行并按下静音按钮后,在我的手机上更改铃声音量后,这是我的日志。它表明userVolumeOnStart.userVolume正在做它应该做的事情:
我现在很绝望,所以我非常感谢任何反馈(消极或积极的!)
非常感谢,
{Rich}
顺便说一句,我的问题不是The audio volume is zero?的重复。我已经改变了自那个问题以来的音频流,并在那里找到了问题。在那里,AudioManager.STREAM_MUSIC
存在问题,其中userVolumeOnStart.userVolume
始终为0.我已将STRAM_MUSIC更改为STREAM_RING。现在这不是问题,因为userVolumeOnStart.userVolume
成功会根据用户量进行更改。问题现在是媒体播放器因某种未知原因无法正常工作。
答案 0 :(得分:0)
我在2天后找到了答案!
MediaPlayer mp = MediaPlayer.create(this, R.raw.MYAUDIO);
我不应该将其分解为声明和实例化:
Mp.create将调用静态方法,该方法是一个不会被存储的实例。当我调用start()时,我正在启动原始的MediaPlayer,而不是实例!所以基本上,我正在设置一些我从未存储过的东西,这就是音频没有播放的原因!