我正在制作一个应用程序,当发生颗粒物时发出声音,
我做了一个其他布局,其中包含一个停止声音的按钮,但问题是每当我在模拟器上甚至在我的手机上说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();
}
答案 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