Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 简单的静音问题?_Java_Android_Multithreading_User Interface_Audio - Fatal编程技术网

Java 简单的静音问题?

Java 简单的静音问题?,java,android,multithreading,user-interface,audio,Java,Android,Multithreading,User Interface,Audio,我正在制作一个具有静音和取消静音功能的应用程序。问题是,当我按下静音键时,振铃器成功静音,但来自MediaPlayer的音频仍在播放。顺便说一句:音频正在b后台的服务中播放,我正在从不同的活动中禁用设备,以停止播放该音频。我尝试过多次更改流,但它仍然无法静音。我还尝试在清单中添加许多权限以使其正常工作,但没有成功 下面是代码,不要担心我的全局变量x,它只是一个计数器,控制是否调用mute/unmute: public void mute(View view) { mutebutton =

我正在制作一个具有静音和取消静音功能的应用程序。问题是,当我按下静音键时,振铃器成功静音,但来自
MediaPlayer
的音频仍在播放。顺便说一句:音频正在b后台的服务中播放,我正在从不同的活动中禁用设备,以停止播放该音频。我尝试过多次更改流,但它仍然无法静音。我还尝试在清单中添加许多权限以使其正常工作,但没有成功

下面是代码,不要担心我的全局变量x,它只是一个计数器,控制是否调用mute/unmute:

public void mute(View view) {
    mutebutton = (ImageButton) findViewById(R.id.mutebutton);

    if ((variableForMute.x % 2) != 0) { //If it's odd UNMUTE
        Toast.makeText(Main_Menu.this, "UNMUTED", Toast.LENGTH_SHORT).show();
        mAudioManager.setStreamVolume(AudioManager.STREAM_RING, userVolumeOnStart.userVolume, 0);
        variableForMute.x++;
        Log.v(TAG, variableForMute.x + "UNMUTED");


    } else { //If its even MUTE
        userVolumeOnStart.userVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_RING);
        mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
       // mAudioManager.setRingerMode(0);
        Toast.makeText(Main_Menu.this, "MUTED", Toast.LENGTH_SHORT).show();
        variableForMute.x++;
        Log.v(TAG, variableForMute.x + "MUTED");
    }
}
以下是清单的屏幕截图:

非常感谢你帮我解决这个有趣的问题。这很有趣,因为在尝试了这么多不同的方法之后,这个问题仍然存在。例如,使用官方的静音方法(
audioManager.RINGER\u MODE\u SILENT
),手动将音量设置为零(
audioManager.STREAM\u RING,0,0
),在清单中添加权限,等等。您会注意到我的代码中有很多注释,这是我在解决这个问题时做的一些其他尝试(很多!)

注意: 当我使用静音按钮降低音量并将其静音时,音频会成功静音,但我的手机顶部的通知栏上没有小的静音图标。否则,使用“静音”按钮,我将获得静音图标,并且它无法成功静音


谢谢,如果你还需要什么,请告诉我,我希望我已经提供了足够的信息

MediaPlayer mp=MediaPlayer.create(context,R.raw.sound\u file\u 1); mp.start()

哑巴

mp.设定体积(0,0)

&取消静音或完全音量


mp.设定体积(1,1)

STREAM\u music
上播放音乐时,为什么要静音
STREAM\u RING
?我无法解析方法setVolume(int,int)。我怎样才能解决这个问题?谢谢API级别1中添加的public void setVolume(float leftVolume,float rightVolume)设置此播放器上的音量。建议使用此API来平衡应用程序中音频流的输出。除非您编写应用程序来控制用户设置,否则此API应优先于设置特定类型的所有流的卷的setStreamVolume(int,int,int)。请注意,传递的体积值是0.0到1.0范围内的原始标量。UI控件应按对数缩放。