標籤:
原始資源
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;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mediaRaw = MediaPlayer.create(this, R.raw.rawq);AssetManager am = getAssets();try{// 擷取指定檔案對應的AssetFileDescriptorAssetFileDescriptor 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{@Overridepublic 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;}}}@Overridepublic 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——使用原始資源