在多年以前,我做一款音乐播放器,要把很多.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. 一个简单的语义分析算法:单步算法——Python实现

    以前 曾经有一个人教会我一件事 要学会相信一些看似不可能的事  当你真的相信的时候  或许 没有什么事情是不可能的 ——<秦时明月•与子同归> 在编译原理的众多书籍中,陈述了很多生成语法树 ...

  2. [Python Study Notes]pynput实现对鼠标控制

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

  3. eclipse Oxygen 4.7 + pydev

    pydev 官网  安装手册 PyDev requires Java 8 and Eclipse 4.6 (Neon) in order to run and only supports Python ...

  4. 【原】Coursera—Andrew Ng机器学习—编程作业 Programming Exercise 4—反向传播神经网络

    课程笔记 Coursera—Andrew Ng机器学习—课程笔记 Lecture 9_Neural Networks learning 作业说明 Exercise 4,Week 5,实现反向传播 ba ...

  5. js是函数式的面向对象编程语言

    js是函数式的面向对象编程语言,而非类式的面向对象编程语言

  6. UV mapping

    [UV mapping] UV mapping is the 3D modeling process of making a 2D image representation of a 3D model ...

  7. 高性能Web服务器Nginx的配置与部署研究(13)应用模块之Memcached模块+Proxy_Cache双层缓存模式

    通过<高性能Web服务器Nginx的配置与部署研究——(11)应用模块之Memcached模块的两大应用场景>一文,我们知道Nginx从Memcached读取数据的方式,如果命中,那么效率 ...

  8. Hibernate一对多操作

    --------------------siwuxie095 Hibernate 一对多操作 以客户和联系人为例,客户是一,联系人是多 即 一个客户里面有多个联系人,一个联系人只能属于一个客户 注意: ...

  9. 10-stack

    c++ stl栈stack介绍 C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构. c++ stl栈stack的头文件 ...

  10. Mysql中自定义函数编程

    1.语法 1.1 新建函数 Create function function_name(参数列表) returns 返回值类型 函数体 (1)函数名,应该合法的标识符,并且不应该与已有的关键字冲突. ...