2017-04-21 3 views
2

Ich habe ein Problem in meiner Anwendung. ist es ein Media Recorder Player. die Spieler funktionieren, aber das Problem ist, wenn ich ein Lied oder einen Recorder spielen ich die app (Exit) und die Musik nicht schließen aufhören zu spielen. können Sie mir helfen, mein Problem zu lösen? danke.Wie stoppe ich die Musik beim Schließen der App

@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","")); 
     } 
    } 


} 
+2

Willkommen bei Stack Overflow! Ich könnte mir vorstellen, dass 95% dieses Codes für Ihre Frage nicht relevant ist. Bitte erstellen Sie ein [** minimales **, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve), das Ihr Problem veranschaulicht. –

+0

leid ich beginne studing jetzt habe ich es –

Antwort

1

Keine Ahnung, was du tust, aber das sollte funktionieren

diese

mPlayer.stop(); 

Wie

@Override 
public void onPause() { 
    super.onPause(); 
    mPlayer.stop();   
} 

onPause in Ihrer hinzufügen heißt, jedes Mal Ihre Aktivität verliert Fokus .

+0

wo ich onPause verwenden sollte? danke für die antwort –

+0

onPause ist ein teil des aktivitätslebenszyklus. Sie müssen es überschreiben –

+0

Ich werde die Antwort bearbeiten –

Verwandte Themen