原始资源
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 ; } } |
博客内容主要用于日常学习记录,内容比较随意,如有问题,还需谅解!!!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步