我正在尋找開始Service
以保持用戶關閉它時從我的應用播放音樂。我已經做了大量的搜索工作,我真正想要的只是一個簡單的例子,當用戶按下按鈕時,我可以啓動服務和音樂。當用戶在其他位置回到應用程序並按下另一個按鈕時,我想綁定到服務並停止音樂播放。我進行了大量的搜索,我希望有人能夠給我一個清楚的解釋,說明這一切如何工作,甚至可能是一個代碼示例。Android MediaPlayer服務
0
A
回答
0
使用此代碼段SD卡播放歌曲:
public void playSong(int songIndex) {
// Play song
try {
mp.reset();
mp.setDataSource(songsListingSD.get(songIndex).get("songPath"));
mp.prepare();
mp.start();
// Displaying Song title
String songTitle = songsListingSD.get(songIndex).get("songTitle");
songTitleLabel.get().setText(songTitle);
// Changing Button Image to pause image
btnPlay.get().setImageResource(R.drawable.ic_media_pause);
// set Progress bar values
songProgressBar.get().setProgress(0);
songProgressBar.get().setMax(100);
// Updating progress bar
updateProgressBar();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
在服務機器人媒體播放器的運行更加的示例代碼,你可以參考this tutorial.
0
我已經實現了這個穆西cservcie類做工精緻
public class MusicSrvice extends Service implements MediaPlayer.OnErrorListener,MediaPlayer.OnCompletionListener, MediaPlayer.OnInfoListener{
public static final String ACTION_STOP="com.example.music4u.ACTION_STOP";
public static final String ACTION_PLAY="com.example.music4u.ACTION_PLAY";
public static final String ACTION_PAUSE="com.example.music4u.ACTION_PAUSE";
private final IBinder mBinder = new ServiceBinder();
MediaPlayer mPlayer;
String path="";
private int length = 0;
private boolean isPlaying = false;
private static final int NOTIFICATION_ID = 1;
public MusicSrvice() { }
public class ServiceBinder extends Binder {
MusicSrvice getService()
{
return MusicSrvice.this;
}
}
@Override
public IBinder onBind(Intent arg0){return mBinder;}
@Override
public void onCreate(){
super.onCreate();
AudioManager amanager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
int maxVolume = amanager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
amanager.setStreamVolume(AudioManager.STREAM_MUSIC, maxVolume, 0);
mPlayer=new MediaPlayer();
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
// mPlayer = MediaPlayer.create(this, R.raw.jingle);
mPlayer.setOnErrorListener(this);
if(mPlayer!= null)
{
mPlayer.setLooping(true);
//mPlayer.setVolume(100,100);
}
/* mPlayer.setOnErrorListener(new OnErrorListener() {
public boolean onError(MediaPlayer mp, int what, int
extra){
onError(mPlayer, what, extra);
return true;
}
});*/
}
@Override
public int onStartCommand (Intent intent, int flags, int startId)
{
if(intent.getExtras()!=null){
path =intent.getExtras().getString("path");
}
Context c = getApplicationContext();
if (intent != null) {
String action = intent.getAction();
if(action!=null){
// if (!TextUtils.isEmpty(action)) {
if (action.equals(ACTION_STOP)) {
pauseMusic(path);
}}
}
//}
/// path = intent.getStringExtra(EXTRA_FILENAME);
if (path == null) {
Log.w("logtag", "PlayService::onStart recording == null, returning");
//return;
}
Log.i("", "PlayService will play " + path);
try {
if(mPlayer!=null){
mPlayer.reset();
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.setDataSource(path);
mPlayer.setLooping(false);
mPlayer.prepare();
Log.d("logtag", "PlayService player.prepare() returned");
mPlayer.start();
CustomNotification();
isPlaying = true;
Log.i("logtag", "player.start() returned");}
else
{
Log.i("logtag", "mediaplayer null");
}
//updateNotification(true);
} catch (java.io.IOException e) {
Log.e("", "PlayService::onStart() IOException attempting player.prepare()\n");
Toast t = Toast.makeText(getApplicationContext(), "PlayService was unable to start playing recording: " + e, Toast.LENGTH_LONG);
t.show();
// return;
} catch (java.lang.Exception e) {
Toast t = Toast.makeText(getApplicationContext(), "MusicPlayer was unable to start playing recording: " + e, Toast.LENGTH_LONG);
t.show();
Log.e("", "PlayService::onStart caught unexpected exception", e);
}
return START_STICKY;
}
public void pauseMusic(String path)
{
if(mPlayer.isPlaying())
{
mPlayer.pause();
length=mPlayer.getCurrentPosition();
}
else{
mPlayer.reset();
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mPlayer.setDataSource(path);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mPlayer.setLooping(false);
try {
mPlayer.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.d("logtag", "PlayService player.prepare() returned");
mPlayer.start(); }
}
public void playNextSong(String path)
{
mPlayer.stop();
mPlayer.reset();
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mPlayer.setDataSource(path);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mPlayer.setLooping(false);
try {
mPlayer.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.d("logtag", "PlayService player.prepare() returned");
mPlayer.start();
}
public boolean isplaying(){
if(mPlayer!= null)
{
return mPlayer.isPlaying();}
return false;
}
public void seekto(int duration){
if(mPlayer!= null)
{
mPlayer.seekTo(duration);}
}
public int getCurrentPosition(){
if(mPlayer!= null)
{
return mPlayer.getCurrentPosition();}
return 0;
}
public int getDuration(){
if(mPlayer!= null)
{
return mPlayer.getDuration();}
return 0;
}
public void resumeMusic()
{
if(mPlayer.isPlaying()==false)
{
mPlayer.seekTo(length);
mPlayer.start();
}
}
public void stopMusic()
{
mPlayer.stop();
mPlayer.release();
mPlayer = null;
}
@Override
public void onDestroy()
{
super.onDestroy();
if(mPlayer != null)
{
try{
mPlayer.stop();
mPlayer.release();
}finally {
mPlayer = null;
}
}
}
@Override
public void onLowMemory() {
// TODO Auto-generated method stub
super.onLowMemory();
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
String message = "Sorry your system has low memory";
Notification notification = new Notification(android.R.drawable.ic_dialog_alert, message, System.currentTimeMillis());
notificationManager.notify(1, notification);
stopSelf();
}
public boolean onError(MediaPlayer mp, int what, int extra) {
Toast.makeText(this, "music player failed", Toast.LENGTH_SHORT).show();
if(mPlayer != null)
{
try{
mPlayer.stop();
mPlayer.release();
}finally {
mPlayer = null;
}
}
return false;
}
@Override
public boolean onInfo(MediaPlayer arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onCompletion(MediaPlayer arg0) {
// TODO Auto-generated method stub
}
public void release(){
mPlayer.release();
}
相關問題
- 1. Android MediaPlayer服務出錯
- 2. Android - 服務,MediaPlayer和setVolume
- 3. Android服務控制MediaPlayer
- 4. MediaPlayer使用服務
- 5. mediaplayer和服務類
- 6. MediaPlayer服務強制關閉
- 7. Android Mediaplayer
- 8. Android MediaPlayer
- 9. MediaPlayer Android
- 10. 在Android的MP3服務中更改URL MediaPlayer
- 11. Android的音頻流服務:MediaPlayer的錯誤-1004
- 12. 在MediaPlayer服務中播放本地mp3,Android
- 13. Android更新MediaPlayer SeekBar從服務類別的位置
- 14. 創建的MediaPlayer與Android的前景服務
- 15. android服務或MediaPlayer的自定義實現,哪個更好?
- 16. Android-列表視圖,服務mediaplayer和布爾標誌
- 17. 服務電話時叫醒電話活動和播放MediaPlayer,Android
- 18. Android MediaPlayer AudioStream AudioFlinger服務器死亡,致命信號11
- 19. Android,我應該爲MediaPlayer提供服務嗎?
- 20. 使用MediaPlayer服務播放下載的文件,Android
- 21. 使用服務與MediaPlayer和SoundPool
- 22. 在活動服務中暫停MediaPlayer
- 23. MediaPlayer的服務得到停止onBackPressed
- 24. 的MediaPlayer在Android
- 25. Stackoverflow MediaPlayer Android Seekbar
- 26. Android MediaPlayer暫停
- 27. Android MediaPlayer停止
- 28. MediaPlayer Service Android
- 29. Android MediaPlayer onPause()
- 30. Android MediaPlayer錯誤
我想這是你想要什麼:http://stackoverflow.com/questions/6668298/how-do-android-mediaplayers-continuing-playing-songs-whe正APP-被封閉 – 2014-09-23 17:50:16