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

      

  • 相关阅读:
    codeforces-1144 (div3)
    codeforces-1142 (div1)
    codeforces-1131 (div2)
    codeforces-1132 (div2)
    [HAOI2006]均分数据
    Ellipsoid
    [JSOI2004]平衡点 / 吊打XXX
    CF208E Blood Cousins
    CF570D Tree Requests
    CF600E Lomsat gelral
  • 原文地址:https://www.cnblogs.com/YYkun/p/5867530.html
Copyright © 2020-2023  润新知