import java.io.IOException;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.media.ExifInterface;
import android.os.Bundle;
import android.provider.MediaStore;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//测试1
//getVideosInfo();
//测试2
//getPhotosInfo();
//测试3
getAudiosInfo();
} //获取设备上所有的视频信息
private void getVideosInfo() {
ContentResolver contentResolver=getContentResolver();
String [] videoColumns=new String[]{
MediaStore.Video.Media._ID,
MediaStore.Video.Media.DATA,
MediaStore.Video.Media.TITLE,
MediaStore.Video.Media.MIME_TYPE
};
// 两种方法均可
// Cursor cursor=
// this.managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, mediaColumns, null, null, null);
Cursor cursor=contentResolver.query
(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, videoColumns, null, null, null);
while (cursor.moveToNext()) {
String _id=
cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID));
String filePath=
cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA));
String title=
cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.TITLE));
String mime_type=
cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.MIME_TYPE));
System.out.println("_id="+_id);
System.out.println("title="+title);
System.out.println("filePath="+filePath);
System.out.println("mime_type="+mime_type);
}
} //获取设备上所有的照片信息
private void getPhotosInfo() {
ContentResolver contentResolver=getContentResolver();
String [] photoColumns=new String[]{
MediaStore.Images.Media._ID,
MediaStore.Images.Media.DATA,
MediaStore.Images.Media.TITLE,
MediaStore.Images.Media.MIME_TYPE,
MediaStore.Images.Media.SIZE,
MediaStore.Images.Media.ORIENTATION
};
// 两种方法均可
// Cursor cursor=
// this.managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, mediaColumns, null, null, null);
Cursor cursor=contentResolver.query
(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, photoColumns, null, null, null);
while (cursor.moveToNext()) {
String _id=
cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID));
String filePath=
cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));
String title=
cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.TITLE));
String mime_type=
cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.MIME_TYPE));
String size=
cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.SIZE));
//得到照片旋转角度方法一
String orientation0=cursor.getString
(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.ORIENTATION));
System.out.println("_id="+_id);
System.out.println("size="+size);
System.out.println("title="+title);
System.out.println("filePath="+filePath);
System.out.println("mime_type="+mime_type);
System.out.println("第一处 orientation0="+orientation0);
try {
ExifInterface exifInterface=new ExifInterface(filePath);
String image_length=
exifInterface.getAttribute(ExifInterface.TAG_IMAGE_LENGTH);
String image_width=
exifInterface.getAttribute(ExifInterface.TAG_IMAGE_WIDTH);
String orientation1=
exifInterface.getAttribute(ExifInterface.TAG_ORIENTATION);
String dateTime=
exifInterface.getAttribute(ExifInterface.TAG_DATETIME);
System.out.println("image_length="+image_length);
System.out.println("image_width="+image_width);
System.out.println("dateTime="+dateTime);
//得到照片旋转角度方法二
//应该结合ExifInterface源码分析.
//此处有待于进一步分析和验证
switch (Integer.valueOf(orientation1)) {
case 1:
System.out.println("第二处旋转角度="+0);
break;
case 2:
//matrix.invert(matrix);
break;
case 3:
//matrix.setRotate(180);
System.out.println("第二处旋转角度="+180);
break;
case 4:
//matrix.invert(matrix);
//matrix.setRotate(180);
System.out.println("第二处旋转角度="+180);
break;
case 5:
//matrix.setRotate(90);
//matrix.invert(matrix);
System.out.println("第二处旋转角度="+90);
break;
case 6:
//matrix.setRotate(90);
System.out.println("第二处旋转角度="+90);
break;
case 7:
//matrix.invert(matrix);
//matrix.setRotate(90);
System.out.println("第二处旋转角度="+90);
break;
case 8:
//matrix.setRotate(270);
System.out.println("第二处旋转角度="+270);
break;
default:
break;
}
System.out.println("XXXXXXXXXXXXXXXXXXX");
} catch (IOException e) {
e.printStackTrace();
} } } //获取设备上所有的音频信息
private void getAudiosInfo() {
ContentResolver contentResolver=getContentResolver();
String [] audioColumns=new String[]{
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.MIME_TYPE
};
// 两种方法均可
// Cursor cursor=
// this.managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, mediaColumns, null, null, null);
Cursor cursor=contentResolver.query
(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, audioColumns, null, null, null);
while (cursor.moveToNext()) {
String _id=
cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID));
String filePath=
cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));
String title=
cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));
String mime_type=
cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.MIME_TYPE));
System.out.println("_id="+_id);
System.out.println("title="+title);
System.out.println("filePath="+filePath);
System.out.println("mime_type="+mime_type); } } }

移动开发:Android中MediaStore使用示例

												

Android 流媒体系列(二)的更多相关文章

  1. ANDROID Porting系列二、配置一个新产品

    ANDROID Porting系列二.配置一个新产品 详细说明 下面的步骤描述了如何配置新的移动设备和产品的makefile运行android. 1.         目录//vendor/创建一个公 ...

  2. Android画图系列(二)——自己定义View绘制基本图形

    这个系列主要是介绍下Android自己定义View和Android画图机制.自己能力有限.假设在介绍过程中有什么错误.欢迎指正 前言 在上一篇Android画图系列(一)--自己定义View基础中我们 ...

  3. Android学习系列(二)布局管理器之线性布局的3种实现方式

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39643669 LinearLayout是Android控件中的线性布局控件,它包括的子控件 ...

  4. Android 流媒体系列(一)

    Android   设置铃声分析 代码其实没有几行,这里简单记录下学习的过程. Android系统启动时会扫描系统与SD卡中的对媒体文件,分别存入数据库sqlite中,以contentProvider ...

  5. Android自定义控件系列(二)—icon+文字的多种效果实现

    转载请注明出处:http://www.cnblogs.com/landptf/p/6290810.html 今天给大家带来一个很简单但是很常用的控件ButtonExtendM,在开发中我们经常会用到图 ...

  6. Android Studio系列教程二--基本设置与运行

    Android Studio系列教程二--基本设置与运行 2014 年 11 月 28 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处! 上面一篇博客,介绍了Studio的 ...

  7. Android Camera系列开发 (二)通过Intent录制视频

    Android Camera系列开发 (二)通过Intent录制视频 作者:雨水  2013-8-18 CSDN博客:http://blog.csdn.net/gobitan/ 概述 使用Camera ...

  8. Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能

    Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSD ...

  9. Android流媒体开发之路二:NDK开发Android端RTMP直播推流程序

    NDK开发Android端RTMP直播推流程序 经过一番折腾,成功把RTMP直播推流代码,通过NDK交叉编译的方式,移植到了Android下,从而实现了Android端采集摄像头和麦克缝数据,然后进行 ...

随机推荐

  1. QF——iOS中的数据库操作:SQLite数据库,第三方封装库FMDB,CoreData

    SQLite数据库: SQLite是轻量级的数据库,适合应用在移动设备和小型设备上,它的优点是轻量,可移植性强.但它的缺点是它的API是用C写的,不是面向对象的.整体来说,操作起来比较麻烦.所以,一般 ...

  2. 如果不知道MySQL当前使用配置文件(my.cnf)的路径的解决方法

    如果不知道当前使用的配置文件的路径,可以尝试下面的操作: # which mysqld /usr/local/mysql/bin/mysqld # /usr/local/mysql/bin/mysql ...

  3. Android 通过HTTP POST请求互联网数据

    @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); s ...

  4. Eclipse 打包过滤 Log.e

    我们在开发时,经常会输出各种日志来debug代码.但是等到应用发布的apk运行时不希望它输出日志. 关闭输出日志Log.v(),Log.i(),Log.w(),Log.v(),Log.e()等 原理: ...

  5. python模块—optparse

    处理命令行参数 1 #-*-coding:utf-8-*- __author__ = 007 __date__ = 16 / 1 / 19 from optparse import OptionPar ...

  6. canvas1

    canvas学习(一) Canvas 学习之路 (一) canvas 是H5 里面神一样的东西,使得只是通过html和js就能做出非常棒的游戏和画面. 因为对前端无限的爱好,更加对canvas充满好奇 ...

  7. 运用JavaScript构建你的第一个Metro式应用程序(onWindows 8)(三)

    原文 http://blog.csdn.net/zhangxin09/article/details/6793593 这是<运用 JavaScript构建你的第一个Metro式应用程序>系 ...

  8. dg rman

  9. oracle重新启动步骤

    1. 停应用层的各种程序. $lsnrctl stop   3. 在独占的系统用户下,备份控制文件: SQL>alter database backup controlfile to trace ...

  10. Spring MVC 简单介绍

    Spring MVC 是典型的mvc架构,适合web开发. controler 输入输出的控制器,也是对外view提供数据的接口,调用service层. model 数据,由bean组成(相应表),关 ...