欢迎莅临 SUN WU GANG 的园子!!!

世上无难事,只畏有心人。有心之人,即立志之坚午也,志坚则不畏事之不成。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

原始资源

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.通过代码处理启动....

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
布局文件==》
<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;
    }
 
}

  

 

posted on   sunwugang  阅读(303)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示