android獲取音訊、視訊、圖片資訊
阿新 • • 發佈:2019-02-02
MediaStore提供了音訊、視訊、圖片資訊,我們可以通過ContentResolver進行讀取。
首先給出了Audio,Video和Image三個類,然後分別定義了三個Provider:AudioProvider,VideoProvider,ImageProvider,貌似用到了工廠方法模式:D,最後給出了一個示例類Provider。
package com.provider; public class Audio { private int id; private String title; private String album; private String artist; private String path; private String displayName; private String mimeType; private long duration; private long size; /** * */ public Audio() { super(); } /** * @param id * @param title * @param album * @param artist * @param path * @param displayName * @param mimeType * @param duration * @param size */ public Audio(int id, String title, String album, String artist, String path, String displayName, String mimeType, long duration, long size) { super(); this.id = id; this.title = title; this.album = album; this.artist = artist; this.path = path; this.displayName = displayName; this.mimeType = mimeType; this.duration = duration; this.size = size; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getAlbum() { return album; } public void setAlbum(String album) { this.album = album; } public String getArtist() { return artist; } public void setArtist(String artist) { this.artist = artist; } public String getPath() { return path; } public void setPath(String path) { this.path = path; } public String getDisplayName() { return displayName; } public void setDisplayName(String displayName) { this.displayName = displayName; } public String getMimeType() { return mimeType; } public void setMimeType(String mimeType) { this.mimeType = mimeType; } public long getDuration() { return duration; } public void setDuration(long duration) { this.duration = duration; } public long getSize() { return size; } public void setSize(long size) { this.size = size; } }
package com.provider; public class Video { private int id; private String title; private String album; private String artist; private String displayName; private String mimeType; private String path; private long size; private long duration; /** * */ public Video() { super(); } /** * @param id * @param title * @param album * @param artist * @param displayName * @param mimeType * @param data * @param size * @param duration */ public Video(int id, String title, String album, String artist, String displayName, String mimeType, String path, long size, long duration) { super(); this.id = id; this.title = title; this.album = album; this.artist = artist; this.displayName = displayName; this.mimeType = mimeType; this.path = path; this.size = size; this.duration = duration; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getAlbum() { return album; } public void setAlbum(String album) { this.album = album; } public String getArtist() { return artist; } public void setArtist(String artist) { this.artist = artist; } public String getDisplayName() { return displayName; } public void setDisplayName(String displayName) { this.displayName = displayName; } public String getMimeType() { return mimeType; } public void setMimeType(String mimeType) { this.mimeType = mimeType; } public String getPath() { return path; } public void setPath(String path) { this.path = path; } 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; } }
package com.provider; public class Image { private int id; private String title; private String displayName; private String mimeType; private String path; private long size; public Image() { super(); } /** * @param id * @param title * @param displayName * @param mimeType * @param path * @param size */ public Image(int id, String title, String displayName, String mimeType, String path, long size) { super(); this.id = id; this.title = title; this.displayName = displayName; this.mimeType = mimeType; this.path = path; this.size = size; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getDisplayName() { return displayName; } public void setDisplayName(String displayName) { this.displayName = displayName; } public String getMimeType() { return mimeType; } public void setMimeType(String mimeType) { this.mimeType = mimeType; } public String getPath() { return path; } public void setPath(String path) { this.path = path; } public long getSize() { return size; } public void setSize(long size) { this.size = size; } }
package com.provider;
import java.util.List;
public interface AbstructProvider {
public List<?> getList();
}
package com.provider;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.database.Cursor;
import android.provider.MediaStore;
public class AudioProvider implements AbstructProvider {
private Context context;
public AudioProvider(Context context) {
this.context = context;
}
@Override
public List<?> getList() {
List<Audio> list = null;
if (context != null) {
Cursor cursor = context.getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null,
null, null);
if (cursor != null) {
list = new ArrayList<Audio>();
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor
.getColumnIndexOrThrow(MediaStore.Audio.Media._ID));
String title = cursor
.getString(cursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));
String album = cursor
.getString(cursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM));
String artist = cursor
.getString(cursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));
String path = cursor
.getString(cursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));
String displayName = cursor
.getString(cursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME));
String mimeType = cursor
.getString(cursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.MIME_TYPE));
long duration = cursor
.getInt(cursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION));
long size = cursor
.getLong(cursor
.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE));
Audio audio = new Audio(id, title, album, artist, path,
displayName, mimeType, duration, size);
list.add(audio);
}
cursor.close();
}
}
return list;
}
}
package com.provider;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.database.Cursor;
import android.provider.MediaStore;
public class VideoProvider implements AbstructProvider {
private Context context;
public VideoProvider(Context context) {
this.context = context;
}
@Override
public List<?> getList() {
List<Video> list = null;
if (context != null) {
Cursor cursor = context.getContentResolver().query(
MediaStore.Video.Media.EXTERNAL_CONTENT_URI, null, null,
null, null);
if (cursor != null) {
list = new ArrayList<Video>();
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media._ID));
String title = cursor
.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.TITLE));
String album = cursor
.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.ALBUM));
String artist = cursor
.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.ARTIST));
String displayName = cursor
.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME));
String mimeType = cursor
.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.MIME_TYPE));
String path = cursor
.getString(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.DATA));
long duration = cursor
.getInt(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.DURATION));
long size = cursor
.getLong(cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE));
Video video = new Video(id, title, album, artist, displayName, mimeType, path, size, duration);
list.add(video);
}
cursor.close();
}
}
return list;
}
}
package com.provider;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.database.Cursor;
import android.provider.MediaStore;
public class ImageProvider implements AbstructProvider {
private Context context;
public ImageProvider(Context context) {
this.context = context;
}
@Override
public List<?> getList() {
List<Image> list = null;
if (context != null) {
Cursor cursor = context.getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null,
null, null);
if (cursor != null) {
list = new ArrayList<Image>();
while (cursor.moveToNext()) {
int id = cursor
.getInt(cursor
.getColumnIndexOrThrow(MediaStore.Images.Media._ID));
String title = cursor
.getString(cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.TITLE));
String path = cursor
.getString(cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));
String displayName = cursor
.getString(cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DISPLAY_NAME));
String mimeType = cursor
.getString(cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.MIME_TYPE));
long size = cursor
.getLong(cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.SIZE));
Image audio = new Image(id, title, displayName, mimeType,
path, size);
list.add(audio);
}
cursor.close();
}
}
return list;
}
}
package com.provider;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
public class Provider extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 音訊
AbstructProvider provider = new AudioProvider(this);
List<?> list = provider.getList();
// 視訊
// AbstructProvider provider = new VideoProvider(this);
// List<?> list = provider.getList();
// 圖片
// AbstructProvider provider = new ImageProvider(this);
// List<?> list = provider.getList();
}
}