Android-获取手机上的图片、视频、音频

xiaoxiao2021-02-28  99

ContentResolver query 的参数:

public final Cursor query (Uri uri, String[] projection,String selection,String[] selectionArgs, String sortOrder)

Uri :

Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;//音频 Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;//视频 Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;//图片

projection :查询的哪些列的信息

String[] projection = {MediaStore.Video.Media._ID, MediaStore.Video.Media.DISPLAY_NAME, MediaStore.Video.Media.DATA};

只查询jpeg和png的图片,以修改日期的升序(默认)排列。

// 只查询jpeg和png的图片,以修改日期的升序(默认)排列。 Cursor mCursor = mContentResolver.query( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, MediaStore.Images.Media.MIME_TYPE + "=? or " + MediaStore.Images.Media.MIME_TYPE + "=?", new String[]{"image/jpeg", "image/png"}, MediaStore.Images.Media.DATE_MODIFIED);

查询大于30秒的所有音乐:

ContentResolver contentResolver = context.getContentResolver(); Cursor cursor = contentResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, MediaStore.Audio.Media.DURATION + ">? and " + MediaStore.Audio.Media.DISPLAY_NAME + " like ?", MediaStore.Audio.Media.DEFAULT_SORT_ORDER); while (cursor.moveToNext()) { // 歌曲名 String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE)); // 歌手 String singer = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)); // 专辑 String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM)); // 长度 long size = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.SIZE)); // 时长 int duration = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION)); // 路径 String url = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA)); // 显示的文件名 String _display_name = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME)); // 类型 String mime_type = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.MIME_TYPE)); music = new Music(); music.setAlbum(album); music.setDuration(duration); music.setSinger(singer); music.setSize(size); music.setTitle(title); music.setUrl(url); music.set_display_name(_display_name); music.setMime_type(mime_type); list.add(music);

demo如下:

java代码:

package com.example.administrator.downloadimgdemo; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import android.app.Activity; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.TextView; public class GetAllMsg extends AppCompatActivity { Button getImage; Button getVideo; Button getAudio; Button getFiles; TextView myTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_get_all); myTextView = (TextView) this.findViewById(R.id.myTextView); getAudio = ((Button) this.findViewById(R.id.getAudio)); getAudio.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String[] projection = {MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DISPLAY_NAME, MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.SIZE}; String orderBy = MediaStore.Audio.Media.DISPLAY_NAME; Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; getContentProvider(uri, projection, orderBy); } }); getVideo = ((Button) this.findViewById(R.id.getVideo)); getVideo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String[] projection = {MediaStore.Video.Media._ID, MediaStore.Video.Media.DISPLAY_NAME, MediaStore.Video.Media.DATA}; String orderBy = MediaStore.Video.Media.DISPLAY_NAME; Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; getContentProvider(uri, projection, orderBy); } }); getImage = ((Button) this.findViewById(R.id.getImage)); getImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String[] projection = {MediaStore.Images.Media._ID, MediaStore.Images.Media.DISPLAY_NAME, MediaStore.Images.Media.DATA}; String orderBy = MediaStore.Images.Media.DISPLAY_NAME; Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; getContentProvider(uri, projection, orderBy); } }); getFiles = ((Button) this.findViewById(R.id.getFiles)); getFiles.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); } /** * 获取ContentProvider * * @param projection * @param orderBy */ public void getContentProvider(Uri uri, String[] projection, String orderBy) { List<HashMap<String, String>> listImage = new ArrayList<HashMap<String, String>>(); Cursor cursor = getContentResolver().query(uri, projection, null, null, orderBy); if (null == cursor) { return; } while (cursor.moveToNext()) { HashMap<String, String> map = new HashMap<String, String>(); for (int i = 0; i < projection.length; i++) { map.put(projection[i], cursor.getString(i)); System.out.println(projection[i] + ":::::::" + cursor.getString(i) + "\n"); } listImage.add(map); } myTextView.setText(listImage.toString()); } }

布局:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <Button android:id="@+id/getImage" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Get Image" /> <Button android:id="@+id/getVideo" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Get Video" /> <Button android:id="@+id/getAudio" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Get Audio" /> <Button android:id="@+id/getFiles" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Get Files" /> <TextView android:id="@+id/myTextView" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>

参考:

ContentProvider之通过ContentResolver获取图像、视频、音频举例

转载请注明原文地址: https://www.6miu.com/read-33842.html

最新回复(0)