原始资源就是Android没有为之提供专门支持的资源文件,可以放在如下两个位置
/res/raw Android SDK会在R清单类中为该目录下的资源生成一个索引项
/res/assets 需要通过AssetManager来管理该目录下的原始资源
下面写个Demo,往两个目录下各放一个mp3文件,一个叫one,一个叫two(都是黄小琥的音乐,可惜文件名不能是中文)
主界面main.xml代码如下
package WangLi.Resouce.RawResTest;
import java.io.IOException;
import android.app.Activity;
import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class RawResTest extends Activity {
/** Called when the activity is first created. */
MediaPlayer mediaPlayer1 = null;
MediaPlayer mediaPlayer2 = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//直接根据声音文件的ID来创建MediaPlayer
mediaPlayer1 = MediaPlayer.create(this,R.raw.two);
//获取该应用的AssetManager
AssetManager am = getAssets();
try
{
//获取指定文件对应的AssetFileDescriptor
AssetFileDescriptor afd = am.openFd("one.mp3");
mediaPlayer2 = new MediaPlayer();
//使用MediaPlayer加载指定的声音文件
mediaPlayer2.setDataSource(afd.getFileDescriptor());
mediaPlayer2.prepare();
}
catch(IOException e)
{
e.printStackTrace();
}
//获取第一个按钮,并为它绑定事件监听器
Button playRaw = (Button)findViewById(R.id.button1);
playRaw.setOnClickListener(new OnClickListener(){
public void onClick(View arg0)
{
//播放声音
mediaPlayer1.start();
}
});
//获取第二个按钮,并为它绑定事件监听器
Button playAsset = (Button)findViewById(R.id.button2);
playAsset.setOnClickListener(new OnClickListener(){
public void onClick(View arg0)
{
mediaPlayer2.start();
}
});
}
}
界面如下图,两个按钮,一个访问Asset下的文件,一个访问raw下的文件