我的应用程序出现问题。 它是一个媒体记录器播放器。 玩家正在工作,但问题是,当我播放歌曲或录音机 我关闭了应用程序(退出),音乐不停止播放。 你能帮我解决我的问题吗? 谢谢。如何在关闭应用程序时停止音乐
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_player);
albumart=(ImageView)findViewById(R.id.albumArt);
name=(TextView)findViewById(R.id.songName);
artist=(TextView)findViewById(R.id.artistName);
play=(ImageButton)findViewById(R.id.playButton);
prev=(ImageButton)findViewById(R.id.previousButton);
next=(ImageButton)findViewById(R.id.nextButton);
playlist=(ImageButton)findViewById(R.id.playlistButton);
sb=(SeekBar)findViewById(R.id.seekBar);
if(mPlayer!=null){
if(su!=null){
su.endthread();
su.interrupt();
su=null;
}
mPlayer.stop();
mPlayer.release();
}
fs=new FetchSongs();
if(fs.getfetchstatus()!=true){
mySongs = fs.findSongs(Environment.getExternalStorageDirectory());
}
else{
mySongs=fs.getsonglist();
mPlayer.release();
}
Intent intent=getIntent();
position=intent.getIntExtra("pos",0);
path=mySongs.get(position).toString();
u=Uri.parse(path);
setsongdata(path,position);
mPlayer=MediaPlayer.create(getApplicationContext(),u);
mPlayer.start();
mPlayer.setLooping(true);
play.setImageResource(R.drawable.icone);
sb.setMax(mPlayer.getDuration());
su=new seekUpdater(true);
su.start();
sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch (SeekBar seekBar) {
mPlayer.stop();
mPlayer.release();
}
});
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(mPlayer.isPlaying()){
mPlayer.pause();
play.setImageResource(R.drawable.icone);
}
else {
mPlayer.start();
play.setImageResource(R.drawable.icone);
}
}
});
next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(su!=null){
su.endthread();
su.interrupt();
su=null;
}
mPlayer.stop();
mPlayer.release();
position=(position+1)%mySongs.size();
path=mySongs.get(position).toString();
setsongdata(path,position);
u=Uri.parse(path);
mPlayer=MediaPlayer.create(getApplicationContext(),u);
mPlayer.start();
mPlayer.setLooping(true);
play.setImageResource(R.drawable.icone);
sb.setMax(mPlayer.getDuration());
sb.setProgress(mPlayer.getCurrentPosition());
su=new seekUpdater(true);
su.start();
}
});
prev.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(su!=null){
su.endthread();
su.interrupt();
su=null;
}
mPlayer.stop();
mPlayer.release();
position=(position-1<0)? mySongs.size()-1:position-1;
path=mySongs.get(position).toString();
setsongdata(path,position);
u=Uri.parse(path);
mPlayer=MediaPlayer.create(getApplicationContext(),u);
mPlayer.start();
mPlayer.setLooping(true);
play.setImageResource(R.drawable.icone);
sb.setMax(mPlayer.getDuration());
sb.setProgress(mPlayer.getCurrentPosition());
su=new seekUpdater(true);
su.start();
}
});
playlist.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(getApplicationContext(),MainActivity.class));
}
});
}
class seekUpdater extends Thread{
private boolean running;
seekUpdater(boolean status){
running=status;
}
public void endthread(){
running=false;
}
@Override
public void run() {
try {
while (running==true) {
int dur = mPlayer.getDuration();
int cur = mPlayer.getCurrentPosition();
while (cur < dur) {
sleep(500);
cur = mPlayer.getCurrentPosition();
sb.setProgress(cur);
}
}
}
catch (InterruptedException e){
e.printStackTrace();
running=false;
}
//super.run();
}
}
public void setsongdata(String songpath, int pos){
mmr=new MediaMetadataRetriever();
mmr.setDataSource(songpath);
try {
songName=mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
art = mmr.getEmbeddedPicture();
songArt = BitmapFactory.decodeByteArray(art, 0, art.length);
artistName = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
artist.setText(artistName);
name.setText(songName);
albumart.setImageBitmap(songArt);
}
catch (Exception e){
albumart.setImageResource(R.drawable.albumart);
artist.setText("Unknown Artist");
name.setText(mySongs.get(pos).getName().toString().replace(".3gp",""));
}
}
}
欢迎来到Stack Overflow!我会想象这95%的代码与你的问题无关。请创建一个[**最小**,完整且可验证的示例](http://stackoverflow.com/help/mcve),以说明您的问题。 –
对不起 我开始学习现在 我懂了 –