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

}

  

时间: 2024-10-18 07:15:35

android学习笔记39——使用原始资源的相关文章

android学习笔记36——使用原始XML文件

XML文件 android中使用XML文件,需要开发者手动创建res/xml文件夹. 实例如下: book.xml==> <?xml version="1.0" encoding="utf-8"?> <books> <book publishDate="2016.05.05" price="88.6">android学习笔记</book> <book publishD

android学习笔记40——国际化和资源自适应

国际化——Internationalization,简称I18N. 本地化——Localization,检查L10N. java国际化资源的思路: java提供国际化资源的思路,是将程序中的标签.提示信息放在资源文件中,程序需要支持那些语音,就需要提供对应的资源文件. 资源文件是key-value类型,每个资源文件的key一致,value随不同语音而改变. java国际化主要通过如下三个类完成: 1.java.util.ResourceBundle——用于加载一个国家.语言资源包: 2.java

Android学习笔记(39):异步任务AsyncTask

异步任务是为了在新线程中修改UI组件而提供的,当然为了解决这个问题我们还可以用Handler实现线程之间的通信.但异步任务为我们提供了一种进一步简化的方式. 使用AsyncTask的步骤如下: 1.在UI线程中创建AsyncTask的子类(必须在UI线程中创建),指定三个泛型参数:不需要的可以指定为Void Params:启动任务执行的输入参数的类型. Progress:后台任务完成的进度值的类型. Result:后台任务完成后返回结果的类型. 2.实现AsyncTask的如下方法(这些方法都是

Android学习笔记(三九):资源resource(下)

在上一次学习笔记中,学习了XML文件的解析,实际上一些简单的activity属性,一些简单的信息,我们也可以放入xml文件中,可以直接放入res/vaules,由系统来进行解析,而无须使用XmlPullParser来自己分析. Dimension 用于字体大小,间距pading等等.常用的尺寸大小详细见Android 学习笔记(十四):Activity-AutoCompleteTextView,一般我们使用dip/dp和sp,因为和in(inch),mm,以及px(像素点)不同,它和物理屏幕尺寸

Pro Android学习笔记(三):了解Android资源(上)

在Android开发中,资源包括文件或者值,它们和执行应用捆绑,无需在源代码中写死,因此我们可以改变或替换他们,而无需对应用重新编译. 了解资源构成 参考阅读Android学习笔记(三八):资源resource(上).XML解析(XmlPullParser),Android学习笔记(三九):资源resource(下). Strings资源.位于res/values下,可以有一个或多个xml文件.其中最为常见的是strings.xml,对于demo这类小例子,为了方便常全部都放在strings.x

【转】Pro Android学习笔记(四):了解Android资源(下)

处理任意的XML文件 自定义的xml文件放置在res/xml/下,可以通过R.xml.file_name来获取一个XMLResourceParser对象.下面是xml文件的例子: <rootname="tom"><--也可以是<root>,本次采用带参数的方式作为实验-->    <leaf>Hello from an elementtest.</leaf>   <leaf>Hello World!</lea

【转】Pro Android学习笔记(三):了解Android资源(上)

在Android开发中,资源包括文件或者值,它们和执行应用捆绑,无需在源代码中写死,因此我们可以改变或替换他们,而无需对应用重新编译. 了解资源构成 参考阅读Android学习笔记(三八):资源resource(上).XML解析(XmlPullParser),Android学习笔记(三九):资源resource(下). Strings资源.位于res/values下,可以有一个或多个xml文件.其中最为常见的是strings.xml,对于demo这类小例子,为了方便常全部都放在strings.x

Android学习笔记二

17. 在ContentProvider中定义的getType()方法是定义URI的内容类型. 18. SQLiteDatabase类中的insert/delete/update/query方法其实也挺好用的,我在EquipmentProvider类中做了实现 19. Android专门有个单元测试项目(Android Test Project),在这个项目中,可以新建一个继承AndroidTestCase类的具体测试类来单元测试某个功能.我新建了一个AndroidTestProject项目,在

【转】 Pro Android学习笔记(二二):用户界面和控制(10):自定义Adapter

目录(?)[-] 设计Adapter的布局 代码部分 Activity的代码 MyAdapter的代码数据源和构造函数 MyAdapter的代码实现自定义的adapter MyAdapter的代码继续探讨BaseAdapter 我们可以同继承抽象类BaseAdapter来实现自己的Adapter,自己设置子View的UI,不同子View可以由不同的布局,并自己进行数据和子view中数据的对应关系.图是例子的呈现结果,我们有很多图标,对这些图标按一定大小进行缩放,然后布局在GridView中.这个