Java 在android中,每次启动活动时都会播放多次音频文件?
我正在尝试创建一个带有背景音乐的应用程序。我的应用程序使用两个活动和一个服务(在后台播放音乐)。现在,我一回到原来的活动就被卡住了,整个过程都在重复,两个歌曲实例一起播放。这个问题进一步加剧。请帮忙。安卓系统的新手:P 主要活动的源代码:Java 在android中,每次启动活动时都会播放多次音频文件?,java,android,Java,Android,我正在尝试创建一个带有背景音乐的应用程序。我的应用程序使用两个活动和一个服务(在后台播放音乐)。现在,我一回到原来的活动就被卡住了,整个过程都在重复,两个歌曲实例一起播放。这个问题进一步加剧。请帮忙。安卓系统的新手:P 主要活动的源代码: package com.example.app; import android.app.Activity; import android.content.Intent; import android.media.MediaPlayer; import and
package com.example.app;
import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends Activity {
MediaPlayer mediaPlayer;
public final static String EXTRA_MESSAGE="com.example.app.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//the service just plays the a.mp3 in res/raw
startService(new Intent(getBaseContext(), Music.class));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void sendMessage(View view){
//this activity just displays the entered text
Intent intent=new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message=editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
}
服务代码:
package com.example.app
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
public class Music extends Service {
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
MediaPlayer mediaPlayer=MediaPlayer.create(this,R.raw.a);
if(!mediaPlayer.isPlaying())
{
mediaPlayer.start();
}
return START_STICKY;
}
}
在您的主要活动中添加这种代码的和平,希望对您有所帮助
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// this line let's the service start only once.
if(savedInstanceState==null)
{
startService(new Intent(getBaseContext(), Music.class));
}
}
在Music.class中,通过isplay()显示您的服务代码来检查音乐是否正在播放。@Sam it dit help:/在sendMessage()方法中,当您启动新活动(DisplayMessageActivity)时,当前活动(MainActivity)尚未完成。因为您没有调用finish();方法。在这种情况下,上述答案应该有效。我自己试过了。