声音不起作用? (仍然需要回答)

时间:2015-11-08 02:04:39

标签: java android multithreading audio service

我的音频没有播放......我已经被困在这里大约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正在做它应该做的事情:

enter image description here

我现在很绝望,所以我非常感谢任何反馈(消极或积极的!)

非常感谢,

{Rich}

顺便说一句,我的问题不是The audio volume is zero?的重复。我已经改变了自那个问题以来的音频流,并在那里找到了问题。在那里,AudioManager.STREAM_MUSIC存在问题,其中userVolumeOnStart.userVolume始终为0.我已将STRAM_MUSIC更改为STREAM_RING。现在这不是问题,因为userVolumeOnStart.userVolume 成功会根据用户量进行更改。问题现在是媒体播放器因某种未知原因无法正常工作。

1 个答案:

答案 0 :(得分:0)

我在2天后找到了答案!

MediaPlayer mp = MediaPlayer.create(this, R.raw.MYAUDIO);

我不应该将其分解为声明和实例化:

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