2013-04-27 2 views
0

Привет!Служба не запускается в android

У меня есть служба, которая должна воспроизводить звуковой файл, когда он запускается из активности (щелчком по кнопке). Однако проблема заключается в том, что служба не запускается, когда я нажимаю нужную кнопку в своей деятельности.

Класс обслуживания (с импортом и некоторые другие методы опущены):

public class ClockService extends Service { 

    MediaPlayer myMediaPlayer; 

    @Override 
    public IBinder onBind(Intent arg0) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     myMediaPlayer = MediaPlayer.create(this, R.raw.audio); 
     myMediaPlayer.setLooping(true); 
    } 

    @Override 
    public void onStart(Intent intent, int startid) { 
     myMediaPlayer.start(); 
    } 
} 

Активность она вызывается из:

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button startButton = (Button) findViewById(R.id.startButton); 
     startButton.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       startService(new Intent(getBaseContext(), ClockService.class)); 
      } 
     }); 
    } 
} 

Я боролся с ним в течение часа уже, и я не вижу, что случилось.

ответ

0

у меня проблемы на код ниже line.u не может использовать this для контекста внутри service .u необходимо пройти context of mainactivity для обслуживания, чтобы получить MediaPlayer экземпляра внутри службы.

myMediaPlayer = MediaPlayer.create(this, R.raw.audio);//wrong one 
+0

Спасибо? Но как мне это сделать? Я попытался передать MainActivity.getContext(), но он не работает. – geekkid

+0

Контекстный контекст = MainActivity.this; затем передать этот контекстный объект в конструктор класса обслуживания и использовать его в сервисе. –

+0

Вы ошибаетесь @ SharadMhaske.he можете сделать это.Пожалуйста, см. Мой ответ. –

0

Проблема заключается в том, как вы запуска службы
Измените эту строку StartService (новое намерение (mainactivity.this, clockservice));
здесь a link вы можете обратиться.

+1

Спасибо за ваш ответ. Я просто понял, что забыл объявить службу в манифесте. Заявив об этом, мой оригинальный код работает отлично. Но опять же, спасибо вам все же. – geekkid

Смежные вопросы