我不得不将我的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中,因此无法播放正确的声音。
答案 0 :(得分:0)
您可以编写ContentProvider并将自己的自定义名称/标识符发送到服务,以便使用提供的名称通过ContentProvider访问活动应用程序的资源。请在此处阅读:http://developer.android.com/guide/topics/providers/content-providers.html