2010-02-19 5 views
6

내가 원하는 것은 서비스를 통해 앱에서 배경 음악을 제어하기 만하면되므로 시작하고 모든 활동을 중단 할 수 있습니다.MediaPlayer를 제어하는 ​​Android 서비스

서비스가 시작되고 파괴 될 때 서비스에 대해 말할 때 나는 모든 것을 완벽하게 설정해야합니다. 그러나 미디어를 재생 시키 자마자 음악이 재생되기 시작합니다. 버튼을 눌러 서비스를 중지합니다. 오류가 발생하고 강제 종료됩니다.

제발 누군가 내가 내가 뭘 잘못하고 있는지 알 수있게 도와 줘요. 나는 안드로이드 개발에 상당히 익숙 해요. 뭔가 쉽게 될 것 같아요.

import android.app.Service; 

import android.content.Intent; 

import android.media.MediaPlayer; 

import android.os.IBinder; 

import android.widget.Toast; 

public class MyService extends Service { 

    private MediaPlayer player; 

    @Override 
    public IBinder onBind(Intent intent) { 

     return null; 

    } 

    @Override 
    public void onCreate() { 

     super.onCreate(); 

     Toast.makeText(this, "Service Started", Toast.LENGTH_SHORT).show(); 

     MediaPlayer player = MediaPlayer.create(MyService.this, R.raw.my_music); 

     player.start(); 

     player.setLooping(true); 

    } 

    @Override 
    public void onDestroy() { 

     super.onDestroy(); 

     player.stop(); 

     Toast.makeText(this, "Service Stopped", Toast.LENGTH_SHORT).show(); 

    } 

} 
+0

오류를 게시 할 수 있습니까? 그것은 당신이 서비스를 잘못 닫고있는 것처럼 보일 것입니다 :) 그러나 오류는 정확히 무엇을 말해 줄 것입니다. – Steve

+0

중복 게시물 http://stackoverflow.com/questions/2298817/problem-with-my-android-service-please-help에 대한 내 답변을 확인하고 이것이 도움이되는지 확인하십시오. – snctln

답변

0

onBind 방법은 그것이 "로컬 서비스"인 경우에만 null을 반환 :

여기 내 코드입니다. 올바르게 이해하면 원격 서비스를 만들고 싶습니다. 이 라인은 당신에게 nullPointerException을 제공해야 -----

this reference site.

5

player.stop();에서 원격 서비스 섹션을 보여줍니다.

private MediaPlayer player; 여기서는 참조 만 생성합니다. 그러나 onCreate()에 생성하는 개체는 로컬 범위 만 있습니다. 클래스 수준 범위를 갖는 객체를 생성하면 작동합니다.

0

당신은 로컬 선언을 제거, 플레이어 오브젝트가 한 OnCreate 절차 로컬 선언이, 아래 참조 :

//MediaPlayer player = MediaPlayer.create(MyService.this, R.raw.my_music); 
player = MediaPlayer.create(MyService.this, R.raw.my_music); 
0

처럼 쓴 ** 문제가 MediaPlayer를 당신이 선수 선언 한 선언 ** 릭 D 이전에 넣은 것 :

player = MediaPlayer.create(ForegroundService.this, R.raw.my_music);