Android SD卡讀取資訊(StatFs、MediaPlayer)
這次練習的項目主要是取得SD卡的資訊
並利用MediaPlayer讀取在SD上的文件並撥放。
主要在學習操作StatFs這個類別,用途在取得系統中的磁碟資訊
跟C#中的這一篇用途滿相像的
說明:
1.按第一個鍵,取得目前SD卡的資訊
2.按第二個鍵開始撥放,再按一次會停止
參考:
URI與URL的區別
Android MediaPlayer的生命周期
程式碼:
並利用MediaPlayer讀取在SD上的文件並撥放。
主要在學習操作StatFs這個類別,用途在取得系統中的磁碟資訊
跟C#中的這一篇用途滿相像的
說明:
1.按第一個鍵,取得目前SD卡的資訊
2.按第二個鍵開始撥放,再按一次會停止
參考:
URI與URL的區別
Android MediaPlayer的生命周期
程式碼:
public static class PlaceholderFragment extends Fragment {
Button btn,play;
TextView tv;
MediaPlayer mp;
boolean musicFlag = true;
Uri uri = Uri.fromFile(new File("storage/sdcard/guitar.mp3"));
//取得音樂檔的Uri
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container,
false);
btn = (Button) rootView.findViewById(R.id.button1);
play = (Button) rootView.findViewById(R.id.button2);
tv = (TextView) rootView.findViewById(R.id.textView1);
//mp = new MediaPlayer();
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(Environment.getExternalStorageState()
.equals(Environment.MEDIA_MOUNTED)){
//判斷是否有插入sd
File filePath = Environment.getExternalStorageDirectory();
//取得路徑
StatFs stat = new StatFs(filePath.getPath());
//取得statFs物件
long blockSize = stat.getBlockSizeLong();
//取得每個Block的Size
float totalBlock = stat.getBlockCountLong();
//總共有幾個Block
int sizeInMb =(int) (blockSize*totalBlock)/1024/1024;
//相乘後換算成Mb大小
long availableBlocks =stat.getAvailableBlocksLong();
//目前可用的Block
float percent = availableBlocks/totalBlock;
percent = (int)(percent*1000);
//將小數點往前位移
StringBuilder sb = new StringBuilder();
sb.append("SD Card使用情況:\n")
.append("總容量:").append(sizeInMb+"MB\n")
.append("已 用:").append((1000-percent)/10.0f+"%\n")
//將percent換算
.append("可 用:").append(percent/10.f+"%\n")
//以下顯示真實數據
.append("blockSize:" + blockSize+"\n")
.append("totalBlock:" + totalBlock+"\n")
.append("availableBlocks:" + availableBlocks+"\n")
.append("percent:" + percent+"\n");
tv.setText(sb.toString());
}else{
Toast.makeText(getActivity(), "未插入SD卡", Toast.LENGTH_SHORT).show();
}
}
});
play.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if(musicFlag){
try {
mp = MediaPlayer.create(getActivity(), uri);
mp.start();
tv.setText("正在撥放音樂");
play.setText("Stop");
musicFlag = false;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
mp.stop();
mp.release();
play.setText("play");
musicFlag =true;
}
}
});
return rootView;
}
}



留言
張貼留言