2011-09-11 72 views
1

如果我在res的原始文件夾中有一個名爲twelve_chimes.mp3的mp3文件,您可以告訴我使用什麼編碼將此從我的活動傳遞到服務以及如何接收傳遞的信息?如何將諸如R.raw.twelve_chimes之類的值從活動傳遞到服務?

目前我打電話這段代碼的服務:

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

在服務上,這是我如何播放媒體文件:

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

如果通過R.raw。 12_chimes是不可能的,它可以作爲一個字符串傳入並以某種方式使用該字符串在服務中播放?

謝謝。

誠然, 伊馬德

回答

3

如果服務是在同一個Android包的活動,則R.raw.twelve_chimes應該是提供給服務:你應該能夠只是把它作爲在Intent的整數:

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,但應該或多或少的工作。

+0

嗨Femi,它很好用!我不得不添加下面這行:startService(i);在這個活動和這個服務:player = MediaPlayer.create(this,intent.getIntExtra(「OPTION」,0));非常感謝。真的,Emad –

0

在這種情況下,您不應該將文件放在/ res文件夾中。把它放在你項目的/ assets文件夾中。然後你可以通過訪問AssetManager

/res/raw和/ assets文件夾之間的區別是,可以以二進制流的形式訪問/ assets中的文件。另一方面,可以將/ res文件夾下的文件本地化。

+0

嗨user375251,謝謝你的幫助。我需要更多地查看資產文件夾。真的,Emad –

相關問題