Java 听起来不行吗?(仍需回答)

Java 听起来不行吗?(仍需回答),java,android,multithreading,audio,service,Java,Android,Multithreading,Audio,Service,我的音频没有播放…我已经被困在这个问题上大约7个小时了(一整天!),一直无法找出问题所在。我尝试在用户单击静音时使音量静音,在用户再次单击时取消静音 我希望能够让用户将应用程序取消静音到用户原来所在的卷userVolumeOnStart.userVolume是用户原始卷存储的位置。我在取消静音中使用此值,将其音量设置为以前的音量 例如: 如果您的音量为7,并且您使用了我的静音按钮: 打开应用程序->静音(音量=0)->取消静音(再次音量=7)等。 以下是静音按钮的侦听器: public voi

我的音频没有播放…我已经被困在这个问题上大约7个小时了(一整天!),一直无法找出问题所在。我尝试在用户单击静音时使音量静音,在用户再次单击时取消静音

我希望能够让用户将应用程序取消静音到用户原来所在的卷
userVolumeOnStart.userVolume
是用户原始卷存储的位置。我在取消静音中使用此值,将其音量设置为以前的音量

例如:

如果您的音量为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}

顺便说一句,我的问题不是重复的。我已经更改了这个问题之后的音频流,并且已经解决了那里的问题。在这里,
AudioManager.STREAM_MUSIC
出现问题,其中
userVolumeOnStart.userVolume
始终为0。我已将STRAM_音乐更改为STREAM_RING。这不是现在的问题,因为
userVolumeOnStart.userVolume
成功地根据用户卷进行更改。现在的问题是媒体播放器由于未知原因无法有效工作

两天后我找到了答案

MediaPlayer mp = MediaPlayer.create(this, R.raw.MYAUDIO);
我不应该将其分解为声明和实例化:


create将调用静态方法,该方法是一个不会被存储的实例。调用start()时,我启动的是原始MediaPlayer,而不是实例!所以基本上,我正在播放一些我从未存储过的东西,这就是为什么音频没有播放

“我的音频没有播放…”-你根本听不到声音吗?@MikeM。是啊,这太奇怪了!你知道我如何解决它吗?你可能是新手,但请停止发布同样的问题,如果人们能帮助你,他们会的。另外,不要在问题的底部加上签名,因为签名会被删掉,你也帮不了自己。坚持这个问题,发布一次,给人们时间来帮助你。@adelphus顺便说一句,我的问题不是重复的。我已经改变了音频流,因为这个问题,并已解决了那里的问题。在这里,
AudioManager.STREAM_MUSIC
出现问题,其中
userVolumeOnStart.userVolume
始终为0。我已将STRAM_音乐更改为STREAM_RING。这不是现在的问题,因为
userVolumeOnStart.userVolume
成功地根据用户卷进行更改。“现在的问题是媒体播放器由于未知的原因不能有效地工作。”@MikeM。另外,我知道userVolumeOnStart.userVolume是一个工作int。出于某种原因,当我将userVolumeOnStart.userVolume插回取消静音选项时,音频不会播放。。。?