2013-02-23 91 views
0

當屏幕鎖定時,mp3暫停。這裏是我的主要Java代碼...我搜索了一些信息,但沒有任何幫助我。並順便點擊播放後,然後停止,然後返回發揮,應用程序的力量崩潰,有時需要更多的點擊,有時更少..可以有人幫助我請..謝謝!當屏幕鎖定時,Mp3已暫停

import android.app.Activity; 
import android.media.MediaPlayer; 
import android.media.MediaPlayer.OnBufferingUpdateListener; 
import android.media.MediaPlayer.OnPreparedListener; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.ProgressBar; 

public class Main extends Activity implements OnClickListener { 

private ProgressBar playSeekBar; 

private Button buttonPlay; 

private Button buttonStopPlay; 

private MediaPlayer player; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    initializeUIElements(); 

    initializeMediaPlayer(); 
} 
private void initializeUIElements() { 

    playSeekBar = (ProgressBar) findViewById(R.id.progressBar1); 
    playSeekBar.setMax(100); 
    playSeekBar.setVisibility(View.INVISIBLE); 

    buttonPlay = (Button) findViewById(R.id.buttonPlay); 
    buttonPlay.setOnClickListener(this); 

    buttonStopPlay = (Button) findViewById(R.id.buttonStopPlay); 
    buttonStopPlay.setEnabled(false); 
    buttonStopPlay.setOnClickListener(this); 

} 
public void onClick(View v) { 
    if (v == buttonPlay) { 
     startPlaying(); 
    } else if (v == buttonStopPlay) { 
     stopPlaying(); 
    } 
} 
private void startPlaying() { 
    buttonStopPlay.setEnabled(true); 
    buttonPlay.setEnabled(false); 

    playSeekBar.setVisibility(View.VISIBLE); 

    player.prepareAsync(); 

    player.setOnPreparedListener(new OnPreparedListener() { 

     public void onPrepared(MediaPlayer mp) { 
      player.start(); 
     } 
    }); 

} 

private void stopPlaying() { 
    if (player.isPlaying()) { 
     player.stop(); 
     player.release(); 
     initializeMediaPlayer(); 
    } 

    buttonPlay.setEnabled(true); 
    buttonStopPlay.setEnabled(false); 
    playSeekBar.setVisibility(View.INVISIBLE); 
} 

private void initializeMediaPlayer() { 
    player = new MediaPlayer(); 
    try { 
     player.setDataSource("http://users1.jabry.com/mine/inna.mp3"); 
    } catch (IllegalArgumentException e) { 
     e.printStackTrace(); 
    } catch (IllegalStateException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    player.setOnBufferingUpdateListener(new OnBufferingUpdateListener() { 

     public void onBufferingUpdate(MediaPlayer mp, int percent) { 
      playSeekBar.setSecondaryProgress(percent); 
      Log.i("Buffering", "" + percent); 
     } 
    }); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    if (player.isPlaying()) { 
     player.stop(); 
    } 
} 
} 
+0

您應該調試該項目並自己查找異常。 – 2013-02-23 02:42:05

+0

@LaiVung如果我可以肯定我會做的:(但沒有發現它有關陷阱? – Mursid 2013-02-23 02:47:13

回答

1

當屏幕被鎖定您的的onPause被調用,您明確停止播放器存在。

+0

所以我怎麼能解決它:/ – Mursid 2013-02-23 04:53:25

+0

如果你想有東西在後臺運行,即使當屏幕被鎖定,你可能會考慮使用[Service](http://developer.android.com/reference/android/app/Service.html)。 – 2013-02-23 05:45:32

+0

謝謝@JasonSankey – Mursid 2013-02-23 06:27:01