android中的数据(音频,视频,图片),这是大家经常打交道的东西,正好,我碰到了视频数据读写的内容,就把这三个方面的内容,总结一下。特别声明,参考了下面网站的代码,觉得非常的赞,非常的膜拜。
(1)音频内容
音频内容db数据的位置:(data.data.com.android.providers.media.databases.external.db----audio)
音频内容URL: MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
(2)视频内容
视频内容db数据的位置:data.data.com.android.providers.media.databases.external.db-----video
视频内容URL: MediaStore.Video.Media.EXTERNAL_CONTENT_URI
(3)图片内容
图片内容db数据的位置:data.data.com.android.providers.media.databases.external.db-----images
图片内容URL: MediaStore.Images.Media.EXTERNAL_CONTENT_URI
一个综合的样例(非常棒):
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(); } }
参考资料:
1.http://www.cnblogs.com/pen-ink/archive/2011/06/02/2068410.html
android获取音频、视频、图片信息