0

やあ!

アクティビティから(ボタンをクリックして)開始されたときにオーディオファイルを再生する必要があるサービスがあります。問題は、アクティビティで必要なボタンをクリックしてもサービスが開始されないことです。

Service クラス (インポートと他のいくつかのメソッドを省略):

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

すでに 1 時間も格闘していますが、何が問題なのかわかりません。

4

2 に答える 2

0

以下のコード行で問題が発生しました。this内部のコンテキストに使用できません。サービス内のメディアプレーヤー インスタンスを取得するには、サービスにservice渡す必要があります。context of mainactivity

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