Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何引用resId';从主要活动到服务_Java_Android_Service_Media Player - Fatal编程技术网

Java 如何引用resId';从主要活动到服务

Java 如何引用resId';从主要活动到服务,java,android,service,media-player,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.birdson

我必须将我的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中,因此不会播放正确的声音。

您可以编写一个ContentProvider,并向服务发送您自己的自定义名称/标识符,以便它使用提供的代码通过ContentProvider访问活动应用程序的资源名称请在此阅读: