原始资源
android中没有专门提供管理支持的类型文件,都被称为原始资源。例如:声音资源...
android原始资源存放位置:
1.res/raw,android SDK会处理该目录下的原始资源,会在R清单中生成唯一索引
2./assets/,该目录下的资源是更彻底的原始资源。android通过AssetManager来管理该目录下的原始资源
注意:原始资源通过SDK生成的唯一索引的使用方式同其他资源使用方式一致。EG:R.raw.filename/@raw.filename
AssetManager是一个专门管理/assets/目录下原始资源的管理器类,其提供了如下常用方法访问Assets资源:
1.InputStream open(String fileName):根据文件名来获取原始资源对应的输入流
2.AssetFileDescriptor openFd(String fileName):根据文件名获取原始资源对应的AssetFileDescriptor.AssetFileDescriptor代表了一项原始资源的描述,应用程序可通过其来获取原始资源。
实例:res/raw和/assets/的使用方式:
操作步骤:
1.分别在raw、assets目录放入不同的音频文件
2.通过代码处理启动....
布局文件==》
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="horizontal"
    tools:context=".MainActivity" >
    <Button
        android:id="@+id/btnRaw"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="raw" />
    <Button
        android:id="@+id/btnAssets"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="assets" />
    
     <Button
        android:id="@+id/btnStop"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="stop" />
</LinearLayout>
代码实现==》
package com.example.myoriginalresources;
import java.io.IOException;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity
{
	MediaPlayer mediaRaw = null;
	MediaPlayer mediaAssets = null;
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mediaRaw = MediaPlayer.create(this, R.raw.rawq);
		AssetManager am = getAssets();
		try
		{
			// 获取指定文件对应的AssetFileDescriptor
			AssetFileDescriptor afd = am.openFd("assets.mp3");
			mediaAssets = new MediaPlayer();
			// 使用MediaPlayer加载指定的mp3文件
			mediaAssets.setDataSource(afd.getFileDescriptor());
			mediaAssets.prepare();
		} catch (IOException e)
		{
			e.printStackTrace();
		}
		Button btnRaw = (Button) this.findViewById(R.id.btnRaw);
		Button btnAssets = (Button) this.findViewById(R.id.btnAssets);
		Button btnStop = (Button) this.findViewById(R.id.btnStop);
		
		btnRaw.setOnClickListener(new buttonClick());
		btnAssets.setOnClickListener(new buttonClick());
		btnStop.setOnClickListener(new buttonClick());
	}
	class buttonClick implements OnClickListener
	{
		@Override
		public void onClick(View v)
		{
			switch (v.getId())
			{
			case R.id.btnRaw:
				mediaRaw.start();
				break;
			case R.id.btnAssets:
				mediaAssets.start();
				break;
			case R.id.btnStop:
				mediaAssets.stop();
				mediaRaw.stop();
				finish();
				break;
			}
		}
	}
	@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;
	}
}
原文:http://www.cnblogs.com/YYkun/p/5867530.html