首页 > 代码库 > android学习笔记39——使用原始资源

android学习笔记39——使用原始资源

原始资源

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;	}}

  

 

android学习笔记39——使用原始资源