如何强制关闭所有声音

时间:2015-06-18 16:31:17

标签: java android audio

我正在制作一个应用程序,当发生颗粒物时发出声音, 我做了一个其他布局,其中包含一个停止声音的按钮,但问题是每当我在模拟器上甚至在我的手机上说MediaPlayer.stop();应用程序时都说

  

应用程序已停止

MediaPlayer是从原始课程导入的,所以我正在考虑的是制作一个关闭所有声音的功能,无论是来自我的应用还是来自我的应用之外,任何建议都将受到赞赏;)

这是来自原始类(播放声音)的代码

public void alarm(){
    alarm = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
    alarm_player = MediaPlayer.create(this, alarm);
   if (Alarm_is_on == false){
        alarm_player.setLooping(true);
        alarm_player.start();
       startActivity(new Intent(MainActivity.this, Cancel_alarm.class));
       Alarm_is_on = true;

   }


}

这是该类的代码 //我停止/暂停声音的地方

public void onClick(View button){

    MainActivity access = new MainActivity();
    access.alarm_player.pause();

}

2 个答案:

答案 0 :(得分:1)

首先请删除新的MainActivity :)如果您想开始一个新的Activity,请使用Intents。 http://developer.android.com/training/basics/firstapp/starting-activity.html

其次,我会创建一个分离的服务(从一个新的thead开始),它负责音乐播放器。您可以使用Broadcast或绑定它与此服务(NOT IntentService)进行通信。在你的情况下,我认为广播是更好的方式。

以下是与类似项目的链接: Android background music service

很好的例子: http://www.androidhive.info/2012/03/android-building-audio-player-tutorial/

我想建议您阅读,非常有用,可以挽救您的生命: https://developer.android.com/training/run-background-service/create-service.html

答案 1 :(得分:1)

你要设置铃声和放大器媒体为零。所以你需要使用AudioManager

使用AudioManager可以控制媒体播放器的音量。

AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0);

也适用于MediaPlayer

public void  setVolume  (float leftVolume, float rightVolume)

了解更多详情 - http://developer.android.com/reference/android/media/AudioManager.html