編輯:關於Android編程
2.其中用到了MediaMetadataRetriever類的一些常用方法:setDataSource(String path)或者其它參數的setDataSource()方法,以及返回字符串的extractMetadata(int keyCode)方法。
注:這裡的extractMetadata(int keyCode)方法中的keyCode參數可以由MediaMetadataRetriever類的常量來得到,例如MediaMetadataRetriever.METADATA_KEY_ALBUM。
3.其中用到了MediaMetadataRetriever類的常量,這裡我只附上一部分常量的圖:

剩余的常量大家可以自行查看API文檔,也可以通過 http://android.toolib.net/reference/android/media/MediaMetadataRetriever.html 這個鏈接來查看,上述常量都是用在setDataSource方法之後的,然後通過extractMetadata(int keyCode) 方法來返回一個字符串類型的媒體信息,其中KeyCode即為上述MediaMetadataRetriever類的常量。
二.接下來附上一個小例子,在編寫這個例子之前,要做下面三個步驟:
1.開啟Android模擬器。
2.打開File Explorer視圖。
3.將音樂文件放入到/storage/sdcard/Music底下,其中要注意如果你的SD卡存儲位置,Android2.x的為/mnt/sdcard或者/sdcard,Android4.x為/storage/sdcard,放置成功後如下圖所示:

三.最後,就可以編寫我們這個Android小例子了,項目名為android_mediaMetadataRetriever1:
1.首先,進行布局,打開activity_main.xml布局文件,其中用的是垂直的線性布局,添加了七個TextView控件和一個Button控件,代碼如下:
2.接著,開始編寫我們的MainActivity類,點擊上述布局的按鈕控件,把獲取到的媒體信息顯示在7個TextView控件,代碼如下:
package com.android_mediametadataretriever1;
import java.io.File;
import android.app.Activity;
import android.media.MediaMetadataRetriever;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView ablum;//聲明TextView對象ablum
private TextView artist;//聲明TextView對象ablum_artist
private TextView title;//聲明TextView對象title
private TextView mimetype;//聲明TextView對象mimetype
private TextView duration;//聲明TextView對象duration
private TextView bitrate;//聲明TextView對象bitrate
private TextView date;//聲明TextView對象date
private Button button;//聲明Button對象button
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*獲取布局管理器中的控件*/
ablum = (TextView) findViewById(R.id.ablum);
artist=(TextView)findViewById(R.id.artist);
title=(TextView)findViewById(R.id.title);
mimetype=(TextView)findViewById(R.id.mimetype);
duration=(TextView)findViewById(R.id.duration);
bitrate=(TextView)findViewById(R.id.bitrate);
date=(TextView)findViewById(R.id.date);
button = (Button) findViewById(R.id.button);
//添加按鈕點擊事件監聽器
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
MediaMetadataRetriever mmr=new MediaMetadataRetriever();//實例化MediaMetadataRetriever對象mmr
File file=new File(/storage/sdcard/Music/music1.mp3);//實例化File對象file,指定文件路徑為/storage/sdcard/Music/music1.mp3
mmr.setDataSource(file.getAbsolutePath());//設置mmr對象的數據源為上面file對象的絕對路徑
String ablumString=mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM);//獲得音樂專輯的標題
String artistString=mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);//獲取音樂的藝術家信息
String titleString=mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);//獲取音樂標題信息
String mimetypeString=mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_MIMETYPE);//獲取音樂mime類型
String durationString=mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);//獲取音樂持續時間
String bitrateString=mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE);//獲取音樂比特率,位率
String dateString=mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE);//獲取音樂的日期
/* 設置文本的內容 */
ablum.setText(專輯標題為:+ablumString);
artist.setText(藝術家名稱為:+artistString);
title.setText(音樂標題為:+titleString);
mimetype.setText(音樂的MIME類型為:+mimetypeString);
duration.setText(duration為:+durationString);
bitrate.setText(bitrate為:+bitrateString);
date.setText(date為:+dateString);
}
});
}
}
3.最後,因為我們是通過訪問文件sd卡的路徑來設置數據源的,所以,必須在AndroidManifest.xml聲明文件添加下面的許可,即權限:
注:其中必須注意的是使用MediaMetadataRetriever類要求android的minSdkVersion最小為14,所以如果你的AndroidManifest.xml文件中的android:minSDKVersion=8即最小的sdk版本小於14的話,將會報錯,解決辦法可以在AndroidManifest.xml文件中改最小sdk版本,也可以在MainActivity類中加上下面的代碼:
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)使得我們使用這個MediaMetadataRetriever類不會報錯。
四,部署此項目到Android模擬器上,運行效果如下:

點擊獲取音樂信息按鈕時,如下圖所示:

這樣媒體信息將獲取出來了,其中有些媒體信息沒有的,將為空。
圖解程序員畫流程圖、數據結構圖及各種復雜圖形的Graphviz工具入門
我們畫常規圖形時一般用word上面自帶的插件或visio畫圖。但是我在畫linux內核文件系統結構圖、內存分配以及學習數據結構樹、圖時,發現使用Graphviz非常的方便
安卓藍牙實現即時通訊功能
本demo是《Android智能穿戴設備開發指南》書中的一塊內容,實現了兩台手機基於藍牙進行即時通訊的功能。demo演示如下:結構圖主要代碼MainActivity:啟動
Android開發之ListView條目批量選擇刪除
ListView實現的列表,如果是可編輯,可刪除的,一般都要提供批量刪除功能,否則的話,一項一項的刪除體驗很不好,也給用戶帶來了很大的麻煩。 實現效果圖 具體實
Android 網絡開源庫之-retrofit的解析詳解
前言當前的網絡開源庫有許多,如volley,okhttp,retrofit等,這三個庫當前是比較火的,其中,okhttp和retrofit由square團隊開發。關於這三