Android讀取音視頻有兩種方法:
遍歷sd卡根據(jù)文件后綴名讀取(太耗時優(yōu)先級低)
利用內(nèi)容提供器來提取音視頻(優(yōu)先級高)
1.第一步,建立mediaitem的bean基類
package com.example.ztest.bean;
import java.io.Serializable;
public class MediaItem implements Serializable {
private String name;
private long size;
private long duration;
private String data;
private String artist;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getSize() {
return size;
}
public void setSize(long size) {
this.size = size;
}
public long getDuration() {
return duration;
}
public void setDuration(long duration) {
this.duration = duration;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public String getArtist() {
return artist;
}
public void setArtist(String artist) {
this.artist = artist;
}
@Override
public String toString() {
return "MediaItem [name=" + name + ", size=" + size + ", duration="
+ duration + ", data=" + data + ", artist=" + artist + "]";
}
}
2.第二步就是寫個方法去讀取了(我只貼個方法了哦)
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (items != null && items.size() > 0) {
//進行相關(guān)操作
} else {
Toast.makeText(TestAty.this, "沒有找到視頻", Toast.LENGTH_SHORT);
}
}
};
private void GetDataFormLocal() {
items = new ArrayList
new Thread() {
@Override
public void run() {
super.run();
ContentResolver resolver = TestAty.this.getContentResolver();// 獲取內(nèi)容提供者
Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;// 獲取外部存儲的uri
String[] objs = { MediaStore.Video.Media.DISPLAY_NAME,// 視頻文件的名字
MediaStore.Video.Media.SIZE,// 視頻文件的大小
MediaStore.Video.Media.DURATION,// 視頻文件的總時長
MediaStore.Video.Media.DATA,// 視頻文件的絕對地址
MediaStore.Video.Media.ARTIST,// 音頻文件的作者
};
Cursor cursor = resolver.query(uri, objs, null, null, null);
if (cursor != null) {
while (cursor.moveToNext()) {
MediaItem item = new MediaItem();
String name = cursor.getString(0);
long size = cursor.getLong(1);
long duration = cursor.getLong(2);
String data = cursor.getString(3);
String artist = cursor.getString(4);
item.setName(name);
item.setSize(size);
item.setDuration(duration);
item.setData(data);
item.setArtist(artist);
items.add(item);
}
cursor.close();
}
handler.sendEmptyMessage(0);
}
}.start();
}
相信大家應(yīng)該都看得懂吧(有相關(guān)注釋),下面cursor讀取就是根據(jù)我們查詢的數(shù)組順序相對應(yīng)的,然后獲取完畢我么就利用一個handler發(fā)送一個消息,再對其進行處理。這樣就完成了視頻的讀取,音頻也一樣的,只要將相關(guān)的MediaStore.Video.Media改成MediaStore.Audio.Media就行了這樣獲取的就是音頻文件的相關(guān)屬性。
熱點新聞
課程問答