如何将R.raw.twelve_chimes等值从活动传递给服务?

时间:2011-09-11 20:40:16

标签: android service android-activity parameter-passing

如果我在res的原始文件夹中有一个名为twelve_chimes.mp3的mp3文件,你可以告诉我用什么编码将我的活动传递给服务以及如何接收传递的信息吗?

目前我正在使用此代码调用该服务:

startService(new Intent(this, MyService.class));

在服务中,这就是我播放媒体文件的方式:

player = MediaPlayer.create(this, R.raw.twelve_chimes);
player.setLooping(false);
player.start();

如果无法传递R.raw.twelve_chimes,可以将其作为传入的字符串完成,并以某种方式使用该字符串在服务中播放吗?

感谢。

诚然, 伊马德

2 个答案:

答案 0 :(得分:3)

如果服务与活动位于同一Android包中,则服务可以使用R.raw.twelve_chimes:您应该能够在意图中将其作为整数传递:

Intent i = new Intent(this, MyService.class);
i.putExtra("OPTION", R.raw.twelve_chimes);

并在服务的onStartCommand中:

player = MediaPlayer.create(this, intent.getIntExtra("OPTION"));
player.setLooping(false);
player.start();

可能需要进行一些更改才能处理您拨打player的位置,但这应该或多或少有效。

答案 1 :(得分:0)

在这种情况下,您不应将文件放在/ res文件夹中。将它放在项目的/ assets文件夹中。然后,您可以使用AssetManager

访问它

/ res / raw和/ assets文件夹之间的区别是,可以访问/ assets中的文件作为二进制Streams。另一方面,可以在/ res文件夹下本地化文件。