当屏幕锁定时,Mp3已暂停

问题描述:

当屏幕锁定时,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

当屏幕被锁定您的的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