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使用示例

转载文章:http://blog.csdn.net/djy1992/article/details/9948105

				
时间: 2024-09-14 15:29:33

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

Android开发系列二之窗口Activity的生命周期_Android

在上篇文章给大家介绍了android开发系列一之用按钮实现显示时间,感兴趣的朋友可以点击阅读详情. 在Activity从创建到销毁的过程中需要在不同的阶段调用7个生命周期的方法这7个生命周期方法定义如下: protected void onCreate(Bundle savedInstanceState) protected void onStart() protected void onResume() protected void onPause() protected void onSto

Android开发系列二之窗口Activity的生命周期

在上篇文章给大家介绍了android开发系列一之用按钮实现显示时间,感兴趣的朋友可以点击阅读详情. 在Activity从创建到销毁的过程中需要在不同的阶段调用7个生命周期的方法这7个生命周期方法定义如下: protected void onCreate(Bundle savedInstanceState) protected void onStart() protected void onResume() protected void onPause() protected void onSto

Android 流媒体系列(一)

Android   设置铃声分析   代码其实没有几行,这里简单记录下学习的过程. Android系统启动时会扫描系统与SD卡中的对媒体文件,分别存入数据库sqlite中,以contentProvider的形式对外提供服务 路径:/data/data/com.android.providers.media/databases/XXX... 可以看到有2个db文件, 一个是系统的,一个是sd卡里的 用SQLite Expert打开internal.db,部分截图如下: 这里面记录了音频audio.

Android开发系列三之窗口的常用事件_Android

相关阅读: Android开发系列二之窗口Activity的生命周期 Android开发系列一用按钮实现显示时间 设置窗口标题事件和在Activity之间跳转. 新建一个项目,新建两个Activity:MainActivity,TitleActivity ,然后再AnroidManifest.xml 中注册TitleActivity AndroidManifest.xml内容如下 <?xml version="1.0" encoding="utf-8"?>

Android开发系列三之窗口的常用事件

相关阅读: Android开发系列二之窗口Activity的生命周期 Android开发系列一用按钮实现显示时间 设置窗口标题事件和在Activity之间跳转. 新建一个项目,新建两个Activity:MainActivity,TitleActivity ,然后再AnroidManifest.xml 中注册TitleActivity AndroidManifest.xml内容如下 <?xml version="1.0" encoding="utf-8"?>

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

Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSDK分享组件的,奈何需要去注册各平台的账号,还要审核,有些审核还挺久,就没办法,改为写这个Bmob了,相信大家对Bmob都是挺期待的吧,因为他作为Android后端的实现很好的支持,国内很多软件都在使用它,他的功能也是特别神奇,这里就不一一细说了,我们用实际的例子来见证他的神奇 官网:http://w

Android自定义视图二:如何绘制内容

这个系列是老外写的,干货!翻译出来一起学习.如有不妥,不吝赐教! Android自定义视图一:扩展现有的视图,添加新的XML属性 Android自定义视图二:如何绘制内容 Android自定义视图三:给自定义视图添加"流畅"的动画 Android自定义视图四:定制onMeasure强制显示为方形 有的时候自持扩展一个标准的Android视图是不够的.你需要在视图上绘制你自己的内容才行.本文将会讲述如何使用Canvas类来绘制一个折线图,并会讲述如何处理尺寸和padding. 如果你还没

android系统文件下载二次请求

问题描述 android系统文件下载二次请求 应客户要求在通过手机访问系统主页时提供一个文件下载的功能.通过IOS产品.windows下所有浏览器下载都没有问题,但是通过android系统的手机访问下载时会出现两次请求的情况,有的品牌的android手机完全就无法下载,敢问哪位大虾遇到类似的问题,求解决之道. 解决方案 同样的问题,二次请求就不说了,问题是第一次铁定报错.而且还会有几率下载不成功,恼火啊 .....

WorldWind系列二:擒贼先擒王篇1

有了WorldWind系列一的基础,我们已经可以进行正常调试运行啦!可以先操作看看软件的功能吧,这样我们才可以知道WorldWind有哪些功能等待我们学习的. 开始我们的"WorldWind系列二:擒贼先擒王"分析WorldWind主窗体,从Main函数入口一步步解析学习.至少对于我来说,里面有很多知识要学的.(补充一下:无法进入WorldWind.cs窗体的设计界面,这个问题我早就发现了,但没解决,我们根据功能直接看代码吧) 1.使用System.Version在内部,读取软件版本信