2013年4月6日土曜日

動的に内部リソースファイルを読み取るサンプル

Rクラスを使用した内部リソースの読み取りはハードコードのようなもので使い回しができません。
そこでファイル名を引数に方法を色々と考えました。

以下のサンプルではAssetフォルダ内のMP3ファイルを読み取ります。

private void XXX(String ファイル名){

   try {
AssetFileDescriptor afd = getAssets().openFd(ファイル名+".mp3");
mMediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mMediaPlayer.prepare();

} catch (IllegalArgumentException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (IOException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}

RAWフォルダも動的に読み取ることが可能ですが推奨されていません。

AssetやRawフォルダでなく、SRC内のリソースを読み取る事もできます。

画像の場合は
SRC/パッケージ/リソースフォルダXに画像ファイルが有る場合

bmp= BitmapFactory.decodeStream(getClass().getResourceAsStream(リソースフォルダX/ファイル名".qng"));

AssetやRawを使用する場合はファイル名に日本語を使用できません。※SRC下なら可能


0 件のコメント:

コメントを投稿