如何将ResId从MainActivity引用到Service

时间:2014-03-01 09:56:51

标签: java android service media-player

我不得不将我的MediaPlayer移到MainActivity之外并进入服务。

我的代码目前拥有MainActivity中托管的所有按钮,但是当按下按钮时,会为其分配ID(resId),以便我可以使用常规MediaPlayer代码播放按下的任何按钮。

例如:

public void onClick(View v) {
    int resId;
    switch (v.getId()) {
    case R.id.button_1:
        resId = R.raw.birdsong;
        break;
    case R.id.button_2:
        resId = R.raw.brown_noise;
        break;
    case R.id.button_3:
        resId = R.raw.car_journey;
        break;
    case R.id.button_4:
        resId = R.raw.crackling_fire;
        break;
    case R.id.button_5:
        resId = R.raw.electrifying_thunderstorms;
        break;
    case R.id.button_6:
        resId = R.raw.fan;
        break;
    case R.id.button_7:
        resId = R.raw.jungle_river;
        break;
    case R.id.button_8:
        resId = R.raw.pig_frogs;
        break;
    case R.id.button_9:
        resId = R.raw.pink_noise;
        break;
    case R.id.button_10:
        resId = R.raw.predawn;
        break;
    case R.id.button_11:
        resId = R.raw.rain;
        break;
    case R.id.button_12:
        resId = R.raw.shower;
        break;
    case R.id.button_13:
        resId = R.raw.snoring;
        break;
    case R.id.button_14:
        resId = R.raw.whale_song;
        break;
    case R.id.button_15:
        resId = R.raw.white_noise;
        break;
    default:
        resId = R.raw.birdsong;
        break;
    }
    // Release any resources from previous MediaPlayer
    if (mp != null) {
        mp.release();
    }
    // Create a new MediaPlayer to play this sound
    mp = MediaPlayer.create(this, resId);
    mp.setLooping(true);    
    mp.start();

我如何将代码移动到服务中,但仍然有MainActivity上的按钮?该服务无法识别与该按钮关联的resId,因为所有代码都将在MainActivity中,因此无法播放正确的声音。

1 个答案:

答案 0 :(得分:0)

您可以编写ContentProvider并将自己的自定义名称/标识符发送到服务,以便使用提供的名称通过ContentProvider访问活动应用程序的资源。请在此处阅读:http://developer.android.com/guide/topics/providers/content-providers.html