应网友要求,今天给大家讲android的多媒体数据库。MediaStore这个类是android系统提供的一个多媒体数据库,android中多媒体信息都可以从这里提取。这个MediaStore包括了多媒体数据库的所有信息,包括音频,视频和图像,android把所有的多媒体数据库接口进行了封装,所有的数据库不用自己进行创建,直接调用利用ContentResolver去掉用那些封装好的接口就可以进行数据库的操作了。今天我就介绍一些这些接口的用法。
首先,要得到一个ContentResolver实例,ContentResolver可以这样获取,利用一个Activity或者Service的Context即可。如下所示:
ContentResolver mResolver = ctx.getContentResolver();
上面的那个ctx的就是一个context,Activity.this就是那个Context,这个Context就相当于一个上下文环境。得到这个Context后就可以调用getContentResolver接口获取ContentResolver实例了。ContentResolver实例获得后,就可以进行各种查询,下面我就以音频数据库为例讲解增删改查的方法,视频和图像和音频非常类似。
在讲解各种查询之前,我给大家介绍下怎么看android都提供了哪些多媒体表。在adb shell中,找到/data/data/com.android.providers.media/databases/下,然后找到SD卡的数据库文件(一般是一个.db文件),然后输入命令sqlite3加上这个数据库的名字就可以查询android的多媒体数据库了。.table命令可以列出所有多媒体数据库的表,.scheme加上表名可以查询表中的所有列名。这里可以利用SQL语句来查看你想要的数据,记得最后一定要记住每条语句后面都加上分号。下面开始讲述怎么在这些表上进行增删改查。
查询,代码如下所示:
Cursor cursor = resolver.query(_uri, prjs, selections, selectArgs, order);
ContentResolver的query方法接受几个参数,参数意义如下:
Uri:这个Uri代表要查询的数据库名称加上表的名称。这个Uri一般都直接从MediaStore里取得,例如我要取所有歌的信息,就必须利用MediaStore.Audio.Media. EXTERNAL _CONTENT_URI这个Uri。专辑信息要利用MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI这个Uri来查询,其他查询也都类似。
Prjs:这个参数代表要从表中选择的列,用一个String数组来表示。
Selections:相当于SQL语句中的where子句,就是代表你的查询条件。
selectArgs:这个参数是说你的Selections里有?这个符号是,这里可以以实际值代替这个问号。如果Selections这个没有?的话,那么这个String数组可以为null。
Order:说明查询结果按什么来排序。
上面就是各个参数的意义,它返回的查询结果一个Cursor,这个Cursor就相当于数据库查询的中Result,用法和它差不多。
增加,代码如下所以:
ContentValues values = new ContentValues();
values.put(MediaStore.Audio.Playlists.Members.PLAY_ORDER,0);
resolver.insert(_uri, values);
这个insert传递的参数只有两个,一个是Uri(同查询那个Uri),另一个是ContentValues。这个ContentValuses对应于数据库的一行数据,只要用put方法把每个列的设置好之后,直接利用insert方法去插入就好了。
更新,代码如下:
ContentResolver resolver = ctx.getContentResolver();
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
ContentValues values = new ContentValues();
values.put(MediaStore.Audio.Media.DATE_MODIFIED, sid);
resolver.update(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI,values, where, selectionArgs);
上面update方法和查询还有增加里的参数都很类似,这里就不再重复叙述了,大家也可直接参考google的文档,那里也写的很清楚。
删除,代码如下:
ContentResolver resolver = ctx.getContentResolver();
resolver.delete(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI,where, selectionArgs);
delete和更新的方法很类似,大家对照更新的方法看下马上就会明白,希望大家也把自己的开发心得写出来多多交流。
分享到:
相关推荐
作为Android的开发者,大家应该对早年Android手机被人抱怨卡顿、手机存储空间被应用占用、文件被毒瘤应用监听篡改等诸多问题。很多Android开发者自己都不愿意使用Android手机(尊重个人爱好)。 现在生态
Android应用源码小米系列之小米录音机.zip
Android 分享单个(多个)文件到其他应用。适配Android 10.0分区存储。ContentResolver MediaStore 插入系统媒体库Uri等方法。 软件开发设计:PHP、QT、应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java...
1.5 使用Android SDK开发最终用户应用程序 1.5.1 Android模拟器 1.5.2 Android UI 1.5.3 Android基础组件 1.5.4 高级UI概念 1.5.5 Android Service组件 1.5.6 Android媒体和电话组件 1.5.7 ...
ModernStorage 是一组库,它们在 Android 上的存储上提供抽象层,以简化应用程序开发人员的交互。 现代存储是: 易于使用:ModernStorage 专注于 API 的简单性。 您只需调用一个,而不是使用 Android Framework API...
1.5 使用Android SDK开发最终用户应用程序 1.5.1 Android模拟器 1.5.2 Android UI 1.5.3 Android基础组件 1.5.4 高级UI概念 1.5.5 Android Service组件 1.5.6 Android媒体和电话组件 1.5.7 ...
在多媒体应用中,Image是最基础的功能模块,接下来我们将看看在Android中是如何获取和存储Image的。Android内嵌的Image获取和存储功能,可以让我们对于整个媒体框架有个比较全面的了解,同时为audio和video的学习...
对Android平台上的流媒体播放器的设计思路、方法等做了深入的说明。并且,对AndRoid内mediaplayer控件、mediastore数据库等的应用做了详细阐述。
介绍这是 Android Media Store 类的示例应用程序(现在是图像和视频,稍后会添加音频)。 它演示了如何从主 UI 线程有效地加载大位图、缓存位图(在内存和磁盘中)、管理位图内存以及在 UI 元素(如 GridView)中...
7.2.2 MediaStore.Image.Media的query函数分析 7.2.3 MediaProvider的启动及创建总结 7.3 SQLite创建数据库分析 7.3.1 SQLite及SQLiteDatabase家族 7.3.2 MediaProvider创建数据库分析 7.3.3 SQLiteDatabase...
在一个应用中更换用户的头像,一般有拍照和从图库中选择照片两种方法,现在网上也有很多开源的,但是很多都太复杂。而 Android-crop 这个库比较小,代码不复杂,比较适合,但是它没有拍照这个功能,需要我们自己整合...
Android中实现拍照有两种方法,一种是调用系统自带的相机,然后使用其返回的照片数据。 还有一种是自己用Camera类和其他相关类实现相机功能,这种方法定制度比较高,洗染也比较复杂,一般平常的应用只需使用第一种...
在进行Android开发的过程中,免不了,要开发TCP/UDP通讯的程序,下面这两段代码,分别介绍了TCP/UCP通过的一个实例: 代码一: private void tcpdata() { try { Socket s = new Socket("192.168.0.25", 65500); ...
Android 调用自带的录制音频程序 Android中有自带的音频录制程序,我们可以通过指定一个Action MediaStore.Audio.Media.RECORD_SOUND_ACTION的Intent来 启动它就可以了。然后在onActivityResult()方法中,获取...
图库和相机应用程序。 它涵盖: 使用RecyclerView和ViewPager可以实现图库和可滚动的详细图像界面之间的无缝交互。 使用片段控制内容。 使用AsyncTaskLoader而不是AsyncTask从特定文件夹加载本地图像。 用户...
在平常我们开发应用的过程中,会碰到有些型号的手机,比如说htc g12 不能通过 调用系统的拍照应用然后startActivityForResult()方法返回照片的地址。这个时候可以查询系统数据库,获取最后一次拍照的照片地址。代码...
屏幕框ScreenKap是适用于Android的简单屏幕记录器应用程序。 它使用或 API来访问文件,因此不需要存储许可。屏幕截图| | | |执照 Copyright (c) 2020 Indrit BashkimiLicensed under the Apache License, Version ...
Android访问相机演示创建一个文件来存储相机拍摄的图像createImageFile() 将此文件的uri发送到照相机应用程序,以通知应用程序将图像放入此路径无法将文件路径直接附加到意图直接使用FileProvider(内容提供者) ...
CoreMusicApp 这是为练习android开发而创建的应用,代码不干净(我很抱歉)。屏幕截图特征实际上,该应用程序会执行以下操作: 列出设备上的所有歌曲。 复制任何歌曲。 基本的音乐应用程序功能可用。 我的意思是上一...
画廊中所有图像的列表(MediaStore.Images) 好处: 适用于所有android版本和设备的通用代码 易于使用 使用RxPermissions库在库中设置的权限处理( ) 使用UCrop库可通过各种选项对图像进行裁剪( ) 选择文件...