0

你好!

我有一项服务应该在从活动启动时播放音频文件(通过单击按钮)。问题是,当我在我的活动中单击所需的按钮时,服务不会启动。

服务类(省略了导入和其他一些方法):

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));
            }
        });
    }
}

我已经挣扎了一个小时,我看不出有什么问题。

4

2 回答 2

0

问题是你如何启动服务
将此行更改为 startservice(new intent(mainactivity.this, clockservice));
这是您可以参考的链接。

于 2013-04-27T11:40:33.863 回答
0

你在下面的代码行有问题。你不能this在里面使用上下文。你service需要传递context of mainactivity给服务来获取服务内部的媒体播放器实例。

 myMediaPlayer = MediaPlayer.create(this, R.raw.audio);//wrong one
于 2013-04-27T11:03:46.463 回答