사용자가 앱을 닫을 때 음악을 계속 재생하려면 Service
을 시작합니다. 나는 많은 검색을 해왔다. 그리고 내가 정말로 찾고있는 것은 사용자가 버튼을 누를 때 서비스와 음악을 시작할 수있는 간단한 예제이다. 사용자가 다른 지점에서 앱으로 돌아와 다른 버튼을 누르면 서비스에 바인딩하고 음악 재생을 중단하고 싶습니다. 나는 많은 검색을 해왔고 누군가가 나에게 이것이 어떻게 작동하는지 그리고 심지어 코드 예제가 어떻게되는지에 대한 명확한 설명을 줄 수 있기를 바랬다.Android MediaPlayer 서비스
0
A
답변
0
이 조각 코드를 사용하여 SD 카드에 노래를 재생 :이 음 ì의 cservcie 클래스를 구현 한
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();
}
}
서비스에서 안드로이드 MediaPlayer를 실행에 대한 더 많은 예제 코드, 당신은 할 수 있습니다 참조
0
this tutorial.에를하는 잘 작동
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. MediaPlayer Android
- 2. Android MediaPlayer
- 3. Android Mediaplayer
- 4. MediaPlayer 강제 종료 서비스
- 5. 백그라운드에서 자르기 Android MediaPlayer
- 6. Android MediaPlayer 질문
- 7. Android MediaPlayer 재사용
- 8. AndroId MediaPlayer prepareAsync 메서드
- 9. Android - Android4.0의 MediaPlayer 예외
- 10. Android MediaPlayer mp3 오류
- 11. Android MediaPlayer chaining
- 12. UI 스레드의 Android MediaPlayer
- 13. Android MediaPlayer 질문
- 14. android MediaPlayer - MediaPlayer의 illegalstateException
- 15. 음성 재생을위한 Android Mediaplayer
- 16. Android MediaPlayer 출시(); 오류
- 17. Android mediaPlayer 비동기식으로 반복합니다.
- 18. MediaPlayer 상단의 Android Webview
- 19. Android MediaPlayer SDK
- 20. Android MediaPlayer Stop
- 21. Android MediaPlayer 문제
- 22. Android MediaPlayer Prepare Fail
- 23. 서비스 요청시 전화 모으기 Activity and play MediaPlayer, Android
- 24. Android : MediaPlayer AUDIOFOCUS_LOSS & setOnErrorListener() 문제
- 25. android : mediaplayer 오류 (1, -17)
- 26. Soundcloud Stream Redirect가있는 Android MediaPlayer
- 27. Android - Looping Activity to MediaPlayer
- 28. Android Mediaplayer @ Samsung S i9000
- 29. Android Mediaplayer Play/Stop help
- 30. Android : MediaPlayer 비디오 종횡비 문제
나는 이것이 당신이 원하는 생각 : http://stackoverflow.com/questions/6668298/how-do-android-mediaplayers-continuing-playing-songs-whe n-app-is-closed –