Android中MediaStore使用示例

简介: package cn.com; import java.io.IOException; import android.app.Activity; import android.
package cn.com;
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);
				
			}
		 
	 }
   
}

相关文章
|
存储 算法 开发工具
OpenCV 安卓编程示例:1~6 全
OpenCV 安卓编程示例:1~6 全
347 0
|
编解码 监控 API
Android平台GB28181设备接入侧音频采集推送示例
GB/T28181是广泛应用于视频监控行业的标准协议规范,可以在不同设备之间实现互联互通。今天我们主要探讨Android平台的Audio采集部分。
196 1
|
12月前
|
存储 前端开发 测试技术
Android kotlin MVVM 架构简单示例入门
Android kotlin MVVM 架构简单示例入门
184 1
|
开发工具 Android开发
技术经验分享:Android编译命令m、mm、mmm区别及工程搭建示例
技术经验分享:Android编译命令m、mm、mmm区别及工程搭建示例
1106 0
|
Android开发
Android 高通平台集成无源码apk示例
Android 高通平台集成无源码apk示例
232 0
|
网络协议 Linux API
Android C++ 系列:Linux Socket 编程(三)CS 模型示例
服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于 监听端口的状态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服 务器应答,服务器应答一个SYN-ACK段,客户端收到后从connect()返回,同时应答一个ACK 段,服务器收到后从accept()返回。
242 0
|
Java 图形学 Android开发
Android/iOS内嵌Unity开发示例
Android/iOS内嵌Unity开发示例
662 0
Android/iOS内嵌Unity开发示例
Java&Android获取当前日期、时间、星期几、获取指定格式的日期时间、时间戳工具类包含使用示例
Java&Android获取当前日期、时间、星期几、获取指定格式的日期时间、时间戳工具类包含使用示例
933 0
Java&Android获取当前日期、时间、星期几、获取指定格式的日期时间、时间戳工具类包含使用示例
|
XML 前端开发 数据处理
Android——MVC、MVP、MVVM框架实现登录示例
MVC 描述 缺点 优点 MVP 效果图 描述 缺点 优点 代码解析 视图效果图 建立实体类 建立实体类接口 实现实体类接口 设置P层 建立交互接口 数据绑定 MVVM 效果图 描述 代码解析 导入dataBinding 实体类 建立viewmodel xml绑定数据 视图与数据绑定
569 0
Android——MVC、MVP、MVVM框架实现登录示例
|
Android开发
【Android 逆向】Android 进程注入工具开发 ( 系统调用 | Android NDK 中的系统调用示例 )
【Android 逆向】Android 进程注入工具开发 ( 系统调用 | Android NDK 中的系统调用示例 )
360 0
【Android 逆向】Android 进程注入工具开发 ( 系统调用 | Android NDK 中的系统调用示例 )

热门文章

最新文章

  • 1
    Android实战经验之Kotlin中快速实现MVI架构
    344
  • 2
    即时通讯安全篇(一):正确地理解和使用Android端加密算法
    212
  • 3
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
    555
  • 4
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    854
  • 5
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    314
  • 6
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    232
  • 7
    Android历史版本与APK文件结构
    739
  • 8
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    246
  • 9
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    263
  • 10
    APP-国内主流安卓商店-应用市场-鸿蒙商店上架之必备前提·全国公安安全信息评估报告如何申请-需要安全评估报告的资料是哪些-优雅草卓伊凡全程操作
    491