2013-04-27 76 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以服务进去服务媒体播放器实例。

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

谢谢?但我该怎么做?我试图通过MainActivity.getContext(),但它不起作用。 – geekkid 2013-04-27 11:14:04

+0

上下文context = MainActivity.this;然后将此上下文对象传递给服务类构造函数并在服务中使用。 – 2013-04-27 11:24:41

+0

你错了@ SharadMhaske.he可以做到这一点。请看我的答案。 – 2013-04-27 11:41:44

0

问题是你是如何开始的服务
更改此行startservice(新意图(mainactivity.this,clockservice));
这里是a link你可以参考。

+1

谢谢你的回答。我只是意识到我忘了在Manifest中宣布这项服务。宣布后,我的原始代码完美地工作。但是,再次感谢你。 – geekkid 2013-04-27 15:02:26