SoundPool で、ローカルのサウンド・ファイルを再生してみたよ。
やってることは、ほとんどリソース版とかわらない。(Android1.6 ベース)
public class mySound extends Activity { private SoundPool sp; int seID = -1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); String path = Environment.getExternalStorageDirectory().getPath()+"/" +"voice.ogg"; //リソースファイルからSE sp = new SoundPool( 5, AudioManager.STREAM_MUSIC, 0 ); seID[ch] = sp.load( path, 1 ); // Button01 Button but_PlaySE = (Button) this.findViewById( R.id.Button01 ); but_PlaySE.setText( "PlaySE 0" ); but_PlaySE.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { sp.play( seID, 1.0F, 1.0F, 0, 0, 1.0F); } }); //--------------- } @Override public void onDestroy(){ sp.stop( seID ); sp.unload( seID ); sp.release(); super.onDestroy(); // アクティビティの終了 finish(); } }
load method の指定を、ローカルのPath指定にするだけ。
ファイルがなかったでload できなくても、アプリが異常終了することはない…みたい。
ログにワーニングが出るけど。(^_^;