Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android之使用MediaMetadataRetriever類獲取媒體信息

Android之使用MediaMetadataRetriever類獲取媒體信息

編輯:關於Android編程

一.昨天,介紹了使用MediaMetadataRetriever類來獲取視頻第一幀:http://blog.csdn.net/u012561176/article/details/47858099,今天,來介紹一下使用MediaMetadataRetriever類獲取媒體信息。 ??1.其中用到了MediaMetadataRetriever類的無參構造函數:MediaMetadataRetriever()

2.其中用到了MediaMetadataRetriever類的一些常用方法:setDataSource(String path)或者其它參數的setDataSource()方法,以及返回字符串的extractMetadata(int keyCode)方法。

注:這裡的extractMetadata(int keyCode)方法中的keyCode參數可以由MediaMetadataRetriever類的常量來得到,例如MediaMetadataRetriever.METADATA_KEY_ALBUM。

3.其中用到了MediaMetadataRetriever類的常量,這裡我只附上一部分常量的圖:

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022314075473.png

剩余的常量大家可以自行查看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,放置成功後如下圖所示:

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022314075575.png

 

 

三.最後,就可以編寫我們這個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模擬器上,運行效果如下:

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022314075573.png

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

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022314075524.png

這樣媒體信息將獲取出來了,其中有些媒體信息沒有的,將為空。

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved