Android 流媒体系列(二)
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 流媒体系列(二)的更多相关文章
- ANDROID Porting系列二、配置一个新产品
ANDROID Porting系列二.配置一个新产品 详细说明 下面的步骤描述了如何配置新的移动设备和产品的makefile运行android. 1. 目录//vendor/创建一个公 ...
- Android画图系列(二)——自己定义View绘制基本图形
这个系列主要是介绍下Android自己定义View和Android画图机制.自己能力有限.假设在介绍过程中有什么错误.欢迎指正 前言 在上一篇Android画图系列(一)--自己定义View基础中我们 ...
- Android学习系列(二)布局管理器之线性布局的3种实现方式
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39643669 LinearLayout是Android控件中的线性布局控件,它包括的子控件 ...
- Android 流媒体系列(一)
Android 设置铃声分析 代码其实没有几行,这里简单记录下学习的过程. Android系统启动时会扫描系统与SD卡中的对媒体文件,分别存入数据库sqlite中,以contentProvider ...
- Android自定义控件系列(二)—icon+文字的多种效果实现
转载请注明出处:http://www.cnblogs.com/landptf/p/6290810.html 今天给大家带来一个很简单但是很常用的控件ButtonExtendM,在开发中我们经常会用到图 ...
- Android Studio系列教程二--基本设置与运行
Android Studio系列教程二--基本设置与运行 2014 年 11 月 28 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处! 上面一篇博客,介绍了Studio的 ...
- Android Camera系列开发 (二)通过Intent录制视频
Android Camera系列开发 (二)通过Intent录制视频 作者:雨水 2013-8-18 CSDN博客:http://blog.csdn.net/gobitan/ 概述 使用Camera ...
- Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能
Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSD ...
- Android流媒体开发之路二:NDK开发Android端RTMP直播推流程序
NDK开发Android端RTMP直播推流程序 经过一番折腾,成功把RTMP直播推流代码,通过NDK交叉编译的方式,移植到了Android下,从而实现了Android端采集摄像头和麦克缝数据,然后进行 ...
随机推荐
- C语言学习——C程序的运行机理
预处理: #include<xxx> 尖括号表示库文件:#include"xxx" 双引号表示自己写的文件. #include后面的文件格式允许多种,但若要是" ...
- python 文件夹比较
参考:http://blog.csdn.net/imzoer/article/details/8675078 文件比较:filecmp模块:filecmp '''Created on 2014-6-6 ...
- e3.tree参考手册
简介 1. E3.Tree是E3平台下一个用于构造树型UI(menu,tree,outlookbar等)的的组件, E3.Tree 特色 部署简单,只需要把相关jar放到WEB-INF/lib目录 ...
- mysql函数操作(5)
<?php try{ $dbh = new PDO('mysql:dbname=testdb;host=localhost', 'mysql_user', 'mysql_pwd'); }catc ...
- 使用mysql_query()方法操纵数据库以及综合实例
1.利用insert 语句添加记录 <? require('conn.php'); mysql_query( "insert into lyb ( title, content, au ...
- 30款javascript脚本插件 jquery插件大全
Shifty Nav - a Fully Responsive JS CSS3 Mega Menu Show Demo Shifty Nav is a fully responsive CSS3 ...
- impala安装
http://blog.sina.com.cn/s/blog_8c6d7ff60101e3lh.html ----------------------------------------------- ...
- JavaEE Tutorials (17) - Java消息服务示例
17.1JMS示例概述23317.2编写简单的JMS应用233 17.2.1启动JMS提供者234 17.2.2创建JMS受管理对象234 17.2.3构建所有简单示例235 17.2.4发送消息23 ...
- 清风注解-Swift程序设计语言:Point6~10
目录索引 清风注解-Swift程序设计语言 Point 6. 输出常量和变量 代码事例: // 输出的内容会在最后换行 println("hello, world") // 输出的 ...
- Sql Server 2008 卸载重新安装失败的解决办法!(多次偿试,方法均有效!)
Sql Server 2008 卸载重新安装失败的解决办法!(多次偿试,方法均有效!) 1.控制面板中卸载所有带sql server的程序. 2.在C盘C:\Program Files中sqlserv ...