Android多媒体数据库详解 (android media数据库)

在现代社会中,多媒体技术被广泛应用,并大量地产生了各种各样的媒体文件,包括音频、图片、视频等。为了更加高效地管理这些多媒体文件,Android系统提供了一个多媒体数据库来帮助开发人员进行数据的处理和存储。该数据库可以被用于应用程序的开发,方便用户对自己的多媒体资源进行管理和浏览。

本文将详细介绍Android多媒体数据库的各个方面,包括数据库结构、使用方法以及扩展等方面。

一、Android多媒体数据库的结构

Android多媒体数据库用于存储和管理多媒体文件的相关信息,包括音频、图片、视频等。该数据库主要包含以下表:

1. MediaStore.Images:用于存储图片的相关信息,包括文件名、路径、大小、日期、拍摄时间等。该表的主要字段如下:

– _ID:图片ID

– _DATA:图片路径

– DATE_ADDED:添加时间

– DATE_MODIFIED:修改时间

– DISPLAY_NAME:显示名称

– WIDTH:宽度

– HEIGHT:高度

2. MediaStore.Audio:用于存储音频文件的相关信息,包括文件名、路径、大小、日期、播放时间等。该表的主要字段如下:

– _ID:音频ID

– _DATA:音频路径

– DATE_ADDED:添加时间

– DATE_MODIFIED:修改时间

– DISPLAY_NAME:显示名称

– DURATION:持续时间

– ARTIST:艺术家

– ALBUM:专辑名称

– TITLE:标题

3. MediaStore.Video:用于存储视频文件的相关信息,包括文件名、路径、大小、日期、播放时间等。该表的主要字段如下:

– _ID:视频ID

– _DATA:视频路径

– DATE_ADDED:添加时间

– DATE_MODIFIED:修改时间

– DISPLAY_NAME:显示名称

– DURATION:持续时间

– ARTIST:艺术家

– ALBUM:专辑名称

– TITLE:标题

二、使用Android多媒体数据库

在Android应用程序中,可以通过Content Provider来调用Android多媒体数据库。其中,Content Provider是Android中的一个安全机制,允许应用程序与其他应用程序共享数据。

使用多媒体数据库需要先获取Content Resolver对象,然后通过Content Resolver对象对多媒体库中的数据进行访问。例如,想查询多媒体库中的所有音频文件,可以使用以下代码:

“`

ContentResolver resolver = getContentResolver();

Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;

String[] projection = {

MediaStore.Audio.Media._ID,

MediaStore.Audio.Media.DISPLAY_NAME,

MediaStore.Audio.Media.TITLE,

MediaStore.Audio.Media.ARTIST,

MediaStore.Audio.Media.ALBUM,

MediaStore.Audio.Media.DURATION,

MediaStore.Audio.Media.SIZE,

MediaStore.Audio.Media.DATA

};

String sortOrder = MediaStore.Audio.Media.TITLE + ” ASC”;

Cursor cursor = resolver.query(uri, projection, null, null, sortOrder);

if (cursor != null && cursor.moveToFirst()) {

//处理查询结果

}

if (cursor != null) {

cursor.close();

}

“`

在上面的代码中,通过getContentResolver()方法获取Content Resolver对象,MediaStore.Audio.Media.EXTERNAL_CONTENT_URI指定了查询的URI,projection参数指定了查询结果需要返回的字段,sortOrder参数指定了排序规则。查询得到的结果存放在游标中,可以通过游标进行处理。

三、扩展Android多媒体库

在实际应用中,可能需要扩展Android多媒体库的功能,以满足自己的需求。这可以通过使用Content Provider来实现。

需要定义一个新的Content Provider来管理扩展的数据。然后,通过重载Content Provider的query()方法来实现查询功能。例如,想添加一个名为“mydata”的表来存储自定义数据,可以使用以下代码:

“`

public class MyContentProvider extends ContentProvider {

private static final String AUTHORITY = “com.example.myapp.mycontentprovider”;

private static final String BASE_PATH = “mydata”;

public static final Uri CONTENT_URI =

Uri.parse(“content://” + AUTHORITY + “/” + BASE_PATH);

@Override

public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {

SQLiteDatabase db = dbHelper.getWritableDatabase();

Cursor cursor = db.query(MySQLiteHelper.TABLE_MYDATA, projection, selection, selectionArgs, null, null, sortOrder);

cursor.setNotificationUri(getContext().getContentResolver(), uri);

return cursor;

}

}

“`

在上述代码中,重载了query()方法,并通过SQLiteDatabase对象查询自定义数据,在查询结果中设置了相应的通知URI。

然后,在应用程序中可以通过Content Resolver查询自定义数据,例如:

“`

Uri uri = MyContentProvider.CONTENT_URI;

String[] projection = {…};

String selection = “…”;

String[] selectionArgs = {…};

String sortOrder = “…”;

Cursor cursor = resolver.query(uri, projection, selection, selectionArgs, sortOrder);

“`

在这里,uri指定了查询的URI,projection指定了查询结果需要返回哪些字段,selection和selectionArgs可以指定查询的条件,sortOrder指定了排序规则,查询结果使用游标进行处理。

四、

Android多媒体数据库是Android系统的一个重要组成部分,能够方便地管理各种多媒体文件。使用Android多媒体数据库需要获取Content Resolver对象,并通过该对象访问多媒体库中的数据。如果需要扩展Android多媒体库,可以通过Content Provider来实现。通过Content Provider可以方便地管理自定义数据。Android多媒体数据库为开发人员提供了一种方便、快捷的方式来管理多媒体文件,同时也为用户提供了更加优秀的多媒体管理功能。

相关问题拓展阅读:

android 如何获取保存的图片的地址 并存到数据库中

数据库是什么玩意,浏览器可以复制图片地址啊,复制好了随便你黏贴在哪里

安卓中如何获取保存的图片uri 并保存到sqlite数据库中

有如下两种方法,仅供参考

方法一:Java代码

public void saveIcon(Bitmap icon) {

if (icon == null) {

return;

}

// 最终图标要保存到浏览器的内部数据库中,系统程序均保存为SQLite格式,Browser也不例外,因为图片是二进制的所以使用字节数组存储数据库的

// BLOB类型

final ByteArrayOutputStream os = new ByteArrayOutputStream();

// 将Bitmap压缩成PNG编码,质量为100%存储

icon.compress(Bitmap.CompressFormat.PNG, 100, os);

// 构造SQLite的Content对象,这里也可以使用

raw ContentValues values = new ContentValues();

// 写入数据库的

Browser.BookmarkColumns.TOUCH_ICON字段 values.put(Browser.BookmarkColumns.TOUCH_ICON, os.toByteArray());

DBUtil.update(….);

//调用更新或者插入到数据库的方法

}

}

方法二:如果数据表入口时一个content:URIJava代码

import android.provider.MediaStore.Images.Media;

import android.content.ContentValues;

import java.io.OutputStream;

// Save the name and description of an image in a ContentValues map.

ContentValues values = new ContentValues(3);

values.put(Media.DISPLAY_NAME, “road_trip_1”);

values.put(Media.DESCRIPTION, “Day 1, trip to Los Angeles”);

values.put(Media.MIME_TYPE, “image/jpeg”);

// Add a new record without the bitmap, but with the values just set.

// insert() returns the URI of the new record.

Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);

// Now get a handle to the file for that record, and save the data into it.

// Here, sourceBitmap is a Bitmap object representing the file to save to the database.

try {

OutputStream outStream = getContentResolver().openOutputStream(uri);

sourceBitmap.compress(Bitmap.CompressFormat.JPEG, 50, outStream);

outStream.close();

} catch (Exception e) {

Log.e(TAG, “exception while writing image”, e);

}

原文请看

用这两个方法应该可以满足你的要求。

方法一:Java代码 public void saveIcon(Bitmap icon) { if (icon == null) { return; } // 最终图标要保存到浏览器的内部数据库中,系统程序均保存为SQLite格式,Browser也不例外,因为图片是二进制的所以使用字节数组存储数据库的 // BLOB类型 final ByteArrayOutputStream os = new ByteArrayOutputStream(); // 将Bitmap压缩成PNG编码,质量为100%存储 icon.compress(Bitmap.CompressFormat.PNG, 100, os); // 构造SQLite的Content对象,这里也可以使用raw ContentValues values = new ContentValues(); // 写入数据库的Browser.BookmarkColumns.TOUCH_ICON字段 values.put(Browser.BookmarkColumns.TOUCH_ICON, os.toByteArray()); DBUtil.update(….);//调用更新或者插入到数据库的方法 } 方法二:如果数据表入口时一个content:URIJava代码 import android.provider.MediaStore.Images.Media; import android.content.ContentValues; import java.io.OutputStream; // Save the name and description of an image in a ContentValues map. ContentValues values = new ContentValues(3); values.put(Media.DISPLAY_NAME, “road_trip_1”); values.put(Media.DESCRIPTION, “Day 1, trip to Los Angeles”); values.put(Media.MIME_TYPE, “image/jpeg”); // Add a new record without the bitmap, but with the values just set. // insert() returns the URI of the new record. Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values); // Now get a handle to the file for that record, and save the data into it. // Here, sourceBitmap is a Bitmap object representing the file to save to the database. try { OutputStream outStream = getContentResolver().openOutputStream(uri); sourceBitmap.compress(Bitmap.CompressFormat.JPEG, 50, outStream); outStream.close(); } catch (Exception e) { Log.e(TAG, “exception while writing image”, e); }

系统运行库Android主要包含哪些库

* Bionic系统 C 库:C语言标准库,系统更底层的库,C库通过Linux系统来调用。

* 多媒体库(MediaFramework):Android系统多媒体库,基于 PacketVideo OpenCORE,该库支持多种常见格式的音频、视频的回放和录制,以及图片,比如MPEG4、MP3、AAC、AMR、JPG、PNG等。

* SGL:2D图形引擎库。

* SSL:位于TCP/

IP协议

与各种应用层协议之间,为数据通信提供支持。

* OpenGL ES 1.0:3D效果的支持。

* SQLite:

关系数据库

* Webkit:Web浏览器引擎。

* FreeType:位图(bitmap)及矢量(vector)。

android media数据库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于android media数据库,Android多媒体数据库详解,android 如何获取保存的图片的地址 并存到数据库中,系统运行库Android主要包含哪些库的信息别忘了在本站进行查找喔。


数据运维技术 » Android多媒体数据库详解 (android media数据库)