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端采集摄像头和麦克缝数据,然后进行 ...
随机推荐
- 使用ajax异步提交表单
虽然这篇文章的标题是提交表单,但是主要的难点在于使用ajax提交文本域的内容, 在工作中的经常会需要ajax跨域的问题,通常的需求使用jsonp就可以得到解决,但是当前项目中有一个图片服务器,客户端需 ...
- Python进阶之面向对象编程概述
Python面向对象编程(一) .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB& ...
- 【转】MUD教程--巫师入门教程1
<新巫师入门手册> 第一章:观念篇■ 内容提要:什么是巫师?怎样做一个巫师?如何做好一个巫师? 第二章:上手篇■ 内容提要:最简单的房间怎么写?NPC又怎么写?先看懂一些常用的参数? 第三 ...
- 导出excel java实现
1.前台页面代码: <tr> <td><input dataId="excel" type="button" value=&quo ...
- Flex4开发笔记(与JAVA交互)
(由于本人也是第一次接触flex开发,因此将开发过程中问题记录留档) 一.数据交换过程 借助BlazeDS可以实现flex与java之间的数据交互,大体流程如下: 1.导入blazeds的文件(配置w ...
- 去英国Savile Row 做件私人定制手工西装_GQ男士网
去英国Savile Row 做件私人定制手工西装_GQ男士网 去英国Savile Row 做件私人定制手工西装
- CodeForces - 61E Enemy is weak
Description The Romans have attacked again. This time they are much more than the Persians but Shapu ...
- 编写可维护的JS 03
3.语句和表达式 所有语句都应当使用花括号 if else语句 for 循环 while 循环 do...while try...catch...finally 花括号对齐方式 左括号在第一行语句末尾 ...
- vlan trunk vtp端口聚合
第一步:端口聚合(两端都需要做相同的操作) 第二步:在服务器端配置为服务器模式 第四步:在服务器端添加vlan 第五步:在两端分别将不同的端口添加到不同的vlan
- ZOJ 1563 Pearls(动态规划)
/* 分析: 因为他给的数据是递增的 而求得是这些数据总的 最优解 所以我们可以考虑,它的子问题求解不影响总的求解 也就是我们可以先求出 第一个的最优解 第二个....以此类推到总的最优解 那么我们想 ...