在多年以前,我做一款音乐播放器,要把很多.mp3文件,放置在自己新建的文件夹里面,然后去读取这个新建的文件夹里面的音乐列表,现在想想是多么的无知;

因为只要往手机里面放入.mp3文件,系统会自动检测,并把检测到的结果(.mp3的详细信息)存入数据库,并内容提供者应用,对外暴露音乐相关的所有信息

MediaProvider多媒体内容提供者应用:

MediaProvider内容提供者应用的目录在:

MediaProvider对外暴露的领域:

  1.对外暴漏【(内部存储的:手机自身存储控件的),(外部存储的:sdcard)】的音频相关(.mp3音乐)

  2.对外暴漏【(内部存储的:手机自身存储控件的),(外部存储的:sdcard)】的视频相关

  3.对外暴漏【(内部存储的:手机自身存储控件的),(外部存储的:sdcard)】的图片相关

MediaProvider对外暴露的内容提供者应用 在Android文件系统的目录:

/data/data/com.android.providers.media


阅读MediaProvider内容提供者应用 /data/data/com.android.providers.media 的数据库:

把external.db 导出去,然后打开,audio_meta是所有音频表的详细信息

把external.db 导出去,然后打开,video是所有视频表的详细信息

把external.db 导出去,然后打开,images是所有图片表的详细信息


MediaProvider对外暴露(音频,视频,图片)相关信息:

上一篇博客,Android-读取操作系统通话记录并/拨打电话/发送短信/复制号码到拨号盘,中讲解到通话记录通常是有常量的,真实开发中,必须要用常量,才靠谱,万一字段变来怎么办!

所以要通过ContentProvider去访问MediaProvider的音频/视频/图片/等 的时候,必须全部用常量来操作:

Android API 已经区分来,音频,视频,图片相关的处理:

通过 Media.常量获取外置存储的Uri,播放第一首音乐

Android-ContentProvider理解操作系统的多媒体的更多相关文章

  1. Android ContentProvider 启动分析

    对于 ContentProvider 还不是很熟悉的同学,可以阅读上一篇 Android ContentProvider 基本原理和使用详解.本文主要是对 contentProvider 的源码进行分 ...

  2. Android基础 : Android ContentProvider

    Android 应用程序通过ContentProvider实现方式统一的数据共享功能. 外界的程序通过ContentResolver接口可以访问ContentProvider提供的数据,在Activi ...

  3. [译]:Xamarin.Android开发入门——Hello,Android深入理解

    返回索引目录 原文链接:Hello, Android_DeepDive. 译文链接:Xamarin.Android开发入门--Hello,Android深入理解 本部分介绍利用Xamarin开发And ...

  4. Android ContentProvider完整案例

    ContentData类,提供数据常量: /** * 提供ContentProvider对外的各种常量,当外部数据需要访问的时候,就可以参考这些常量操作数据. * @author HB * */ pu ...

  5. Android Gradle 理解

    /********************************************************************************* * Android Gradle ...

  6. Android深入理解Context(二)Activity和Service的Context创建过程

    前言 上一篇文章我们学习了Context关联类和Application Context的创建过程,这一篇我们接着来学习Activity和Service的Context创建过程.需要注意的是,本篇的知识 ...

  7. Android ContentProvider基本用法

    转自:https://www.jianshu.com/p/601086916c8f 一.基本概念 ContentProvider是Android系统中提供的专门用户不同应用间进行数据共享的组件,提供了 ...

  8. Android深入理解JNI(二)类型转换、方法签名和JNIEnv

    相关文章 Android深入理解JNI系列 前言 上一篇文章介绍了JNI的基本原理和注册,这一篇接着带领大家来学习JNI的数据类型转换.方法签名和JNIEnv. 1.数据类型的转换 首先给出上一篇文章 ...

  9. Android ContentProvider和getContentResolver

    安卓系统中的数据库SqlLite操作和java中mysql的数据库操作很不一样,造成这样的原因是因为在安卓中数据库是属于进程的不存在数据库客户端,也不存在数据库服务器. 关于SqlLite数据库的文章 ...

随机推荐

  1. git submodule一些操作

    checkout指定tag cd /path/to/yoursubmodule git checkout yourTag cd .. git add yoursubmodule git commit ...

  2. [z]【Bash命令行处理】[详解]

    (转自:http://www.linuxsir.org/bbs/thread99465.html) 我看很多兄弟写脚本或命令时出现错误的主要原因,是因为不了解bash的命令行处理.我在这里总结了一下, ...

  3. Netty简单的重连机制

    其实重连机制并不是多么多高深的技术,其实就是一个在客户端做一个简单的判断,如果连接断了,那么就重新调用连接服务端的代码 当然,我们重连的动作肯定是发生在断连之后发生的,我们可以在上篇的心跳机制的基础上 ...

  4. Dreamweaver 中文乱码

     定义当前页面的编码属性      Ctrl+j 标题/编码 将编码改成UTF8即可     PhpStorm    FILE->Setting->File Encoding->将U ...

  5. hadoop学习记录1 初始hadoop

    起因 因为工作需要用到,所以需要学习hadoop,所以记录这篇文章,主要分享自己快速搭建hadoop环境与运行一个demo 搭建环境 网上搭建hadoop环境的例子我看蛮多的.但是我看都比较复杂,要求 ...

  6. UNITY 模型与动画优化选项

    1,RIG: Optimze Game Objects,[默认是没勾选的] 效果:将骨骼层级从模型中移除,放到动画控制器中,这样性能提高明显.实测中发现原来瞬间加载5个场景角色有点延迟,采用此选项后流 ...

  7. AOP的MethodBeforeAdvice

    使用Spring自动生成代理类,spring利用的是动态代理机制 接口 Java代码 public interface UserDao { void addUser(); void deleteUse ...

  8. golang之strings

    针对golang中的字符串的介绍,提供了一些常用的函数和方法 package main import ( "fmt" "strings" ) func main ...

  9. lucene3.0范围查找

    在lucene3.0以上版本中,范围查询也有很大的变化,RangeQuery已经不推荐使用,使用TermRangeQuery和NumericRangeQuery两个替代.TermRangeQuery: ...

  10. Java Socket编程之TCP

    基于TCP的Socket通信: 服务器端: 创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口 调用accept()方法开始监听,等待客户端的连接 连接建立后,通过 ...