2010-02-19 8 views
2

내가 원하는 것은 단순히 내 앱에서 서비스를 통해 백그라운드 음악을 제어하여 시작하고 모든 활동을 중단 할 수 있기를 원합니다.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) { 
returnnull; 
} 

@Override  
publicvoid onCreate() { 
super.onCreate(); 
Toast.makeText(this, "Service Started", Toast.LENGTH_SHORT).show(); 
MediaPlayer player = MediaPlayer.create(MyService.this, R.raw.oceanwavestest); 
player.start(); 
player.setLooping(true); 

} 

    @Override  
    publicvoid onDestroy() { 
    super.onDestroy(); 
    player.stop(); 
    Toast.makeText(this, "Service Stopped", Toast.LENGTH_SHORT).show(); 
    } 
} 
+2

사용 DDMS에 도움이 ADB logcat', 또는 이클립스의 DDMS 관점이 충돌에 대한 Java 스택 추적을 검토 알려줘 어디서 일이 잘못 될지 판단해야합니다. – CommonsWare

답변

0

나는 당신의 위치에 있다면 내가 체크 아웃 할 내가 코드에서 볼 수있는 몇 가지가 있습니다.

    당신은 당신들의 OnDestroy의 구성원 MediaPlayer를 객체 "플레이어"에 전화를 "중지"하려고하는
  • , 그러나 당신에에서 onCreate 당신은 코드
  • 당신의 라인

"와 MediaPlayer를 객체"플레이어 "를 생성 MediaPlayer player = MediaPlayer.create (MyService.this, R.raw.oceanwavestest); "

내가 믿는 플레이어 개체는 당신이 함수의 범위를 벗어나 느낄 것이다.

코드의 1 개 라인 픽스는 "플레이어 = MediaPlayer.create (MyService.this, R.raw.oceanwavestest)를 「사용한다 멤버 변수는 로컬 변수 대신 사용하는 방법이

이것이 내 코드라면 m_player 또는 mPlayer와 같은 멤버 변수를 변경하여 코드의 멤버 변수라는 것을 알 수 있습니다.

  • (아마도 오타) "returnnull;" inBind는 "return null;"이어야합니다.

  • 당신은 또한) (

player.stop를 호출하려고 할 수 있습니다

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

당신이 super.onDestroy를 호출하기 전에()

이는`모든

관련 문제