Android 使用原始资源

概念:Android 除了图片,XML资源外还有大量其他资源,比如声音资源。只要Android没有为其提供专门的支持就称为原始资源。

存放位置:/res/raw Android sdk会在R资源清单中生成索引项。

/assets 需要通过AssetsManager来管理。

程序示例:分别播放/res/raw和/assets下的声音文件sayloveyou.mp3。

public class MainActivity extends Activity {

MediaPlayer mediaPlayer1 = null;
MediaPlayer mediaPlayer2 = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Button playRaw = (Button) findViewById(R.id.button1);
Button playAsset = (Button) findViewById(R.id.button2);

mediaPlayer1 = MediaPlayer.create(this, R.raw.sayloveyou);

// 获取该应用的AssetManager
AssetManager am = getAssets();
try {
// 获取指定文件的描述符
AssetFileDescriptor fd = am.openFd("sayloveyou");
mediaPlayer2 = new MediaPlayer();
// 用MediaPlayer加载指定的声音文件
mediaPlayer2.setDataSource(fd.getFileDescriptor());
mediaPlayer2.prepare();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

playRaw.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mediaPlayer1.start();
}
});

playAsset.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mediaPlayer2.start();
}
});

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}