Android多媒体访问
Android的多媒体文件主要存储在/data/data/com.android.providers.media/databases目录下,该目录下有两个db文件,一个是内部存储数据库文件(internal.db),一个是存储卡数据库(external-XXXX.db)。
媒体文件的操作主要是围绕着这两个数据库来进行。这两个数据库的结构是完全一模一样的。
Android提供了MediaStore类,该类是一个ContentProvider,管理着设备上自带的和外部的多媒体文件,同时包含着每一个多媒体文件的数据信息。
通过Uri我们可以获取到媒体信息的完整路径,类型等信息,同样,我们也可以通过文件路径创建Uri
由文件路径得到URI
Uri mUri = Uri.parse("content://media/external/images/media");
Uri mImageUri = null;
Cursor cursor = mContext.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null,
null, MediaStore.Images.Media.DEFAULT_SORT_ORDER);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
String data = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA));
if (picPath.equals(data)) {
int ringtoneID = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns._ID));
mImageUri = Uri.withAppendedPath(mUri, ""+ ringtoneID);
break;
}
cursor.moveToNext();
}
由Uri获取文件路径
string myImageUrl = "content://media/external/images/media/***";
Uri uri = Uri.parse(myImageUrl); String[] proj = { MediaStore.Images.Media.DATA };
Cursor actualimagecursor = mContext.getContentResolver().query(uri,proj,null,null,null);
int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
actualimagecursor.moveToFirst(); String img_path = actualimagecursor.getString(actual_image_column_index);
File file = new File(img_path);
Uri fileUri = Uri.fromFile(file);
获取本地媒体数据库中的video相关信息
private void testScanVideoUri(){
Log.w(TAG,"testScanVideoUri come in=="+MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
Cursor cursor = mContext.getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
null, null,null, null);
int totalCount =cursor.getCount();
Log.w(TAG,"totalCount = "+totalCount);
cursor.moveToFirst();
for( int i = 0;i < totalCount;i++){
String data = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA));
String data1 = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DATA));
String title = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.TITLE));
String type = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.MIME_TYPE));
int id = cursor.getInt(cursor.getColumnIndex(MediaStore.Video.Media._ID));
Log.i(TAG,"data="+data);
Log.i(TAG,"data1="+data1);
Log.i(TAG,"title="+title);
Log.i(TAG,"type="+type);
Log.i(TAG,"id="+id);
cursor.moveToNext();
}
Log.w(TAG,"testScanVideoUri come out");
}
参考:
Android媒体的一些使用总结
http://blog.csdn.net/xingtian713/article/details/6458150
Android媒体的一些使用总结(2)
http://blog.csdn.net/xingtian713/article/details/6525411
Android多媒体学习一:Android中Image的简单实例。
http://blog.csdn.net/chenjie19891104/article/details/6320323
Android开发之旅: Intents和Intent Filters(理论部分)
http://www.cnblogs.com/skynet/archive/2010/07/20/1781644.html
Android学习笔记——文件路径(/mnt/sdcard/...)、Uri(content://media/external/...)学习 (比较透彻)
http://www.cnblogs.com/lingyun1120/archive/2012/04/18/2455212.html
Android 4.4从图库选择图片,获取图片路径并裁剪
http://blog.csdn.net/tempersitu/article/details/20557383
Android多媒体访问的更多相关文章
- Android多媒体框架图
Android多媒体整体架构图 MediaPlayer框架图 Camera框架图 SoundRecorder框架图 VideoCamera框架图 OpenCore与Skia ALSA Audio框架图 ...
- Android Permission 访问权限大全(转)
程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求, 完整列表如下: android.permission.ACCESS_CHECKIN_PROPERTIES允 ...
- Android 多媒体视频播放一( 多媒体理解与经验分享)
前言 说到android的多媒体,一把辛酸一把泪,当初听说会多媒体的比较牛掰,公司也有需求,于是乎我也积极的加入研究android多媒体的行列,记得以前刚接触的时候,最开始还是比较头大的,主要是但是很 ...
- 基于 VLC 的 Android 多媒体解决方案
前段时间项目中需要在 Android 中播放视频.流媒体.查看监控,就研究了一下 Android 多媒体解决方案. 查找了一下,大致有如下几种: Android MediaPlayer FFmpeg ...
- Android存储访问及目录
Android存储访问及目录 Android的外部存储 Android支持外部存储(case-insensitive filesystem with immutable POSIX permissio ...
- Android WebView访问SSL证书网页(onReceivedSslError)
Android WebView访问https SSL证书网页,如淘宝,需要在onReceivedSslError添加SSL支持 webview.setWebViewClient(new WebView ...
- android数据访问模式:档、SharedPreferences
android数据访问模式:档.SharedPreferences.SQLite 数据库.Content provider 文件流: 使用java IO流对文件进行读写操作,文件权限默认. 指定文件权 ...
- Android虚拟设备访问WebSocket问题
Android虚拟设备访问WebSocket问题 最近写erlang的WebSocket网站,需要运行在RHEL6上,用Android设备访问. 可惜AVD无法访问主机 Win7上的虚拟机(RHEL6 ...
- Android无法访问本地服务器(localhost/127.0.0.1)的解决方案
[Android无法访问本地服务器(localhost/127.0.0.1)的解决方案] 在Android开发中通过localhost或127.0.0.1访问本地服务器时,会报Java.NET.Con ...
随机推荐
- HTML5新增的音频标签、视频标签
我们所说的H5就是我们所说的HTML5中新增的语言标准 一.音频标签 在HTML5当中有一个叫做audio的标签,可以直接引入一段音频资源放到我们的网页当中 格式: <audio autopla ...
- JAVA并发编程:相关概念及VOLATILE关键字解析
一.内存模型的相关概念 由于计算机在执行程序时都是在CPU中运行,临时数据存在主存即物理内存,数据的读取和写入都要和内存交互,CPU的运行速度远远快于内存,会大大降低程序执行的速度,于是就有了高速缓存 ...
- 剑指offer18 树的子结构
另一种写法 class Solution { public: bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) { bool result = f ...
- ReactiveCocoa入门-part2
ReactiveCocoa是一个框架,它能让你在iOS应用中使用函数响应式编程(FRP)技术.在本系列教程的第一部分中,你学到了如何将标准的动作与事件处理逻辑替换为发送事件流的信号.你还学到了如何转换 ...
- Check for Palindromes-freecodecamp算法题目
Check for Palindromes(检查回文字符串) 要求 给定的字符串是回文,返回true,反之,返回false.(如果一个字符串忽略标点符号.大小写和空格,正着读和反着读一模一样,那么这个 ...
- 【转】PCA for opencv
对于PCA,一直都是有个概念,没有实际使用过,今天终于实际使用了一把,发现PCA还是挺神奇的. 在OPENCV中使用PCA非常简单,只要几条语句就可以了. 1.初始化数据 //每一行表示一个样本 Cv ...
- C/C++ 数组与指针
#include <iostream>using namespace std;int main(){ char *a[]={"ab","ccs",& ...
- 【Python学习之五】高级特性5(切片、迭代、列表生成器、生成器、迭代器)
5.迭代器 由之前的生成器可知,for循环用于可迭代对象:Iterable.包括集合数据类型: list.tuple.dict.set.str 等,以及两种生成器.判断迭代器,使用 isinstanc ...
- C++图书馆管理系统项目中部分功能代码实现(书籍推荐)
bool UserServiceImpl::Compare1(Book b1,Book b2)//按照借阅次数比较{ if(b1.GetCnt() > b2.GetCnt()) { return ...
- DeepFaceLab小白入门(3):软件使用!
换脸程序执行步骤,大部分程序都是类似.DeepFaceLab 虽然没有可视化界面,但是将整个过程分成了8个步骤,每个步骤只需点击BAT文件即可执行.只要看着序号,一个个点过去就可以了,这样的操作应该不 ...