Android obtains all pictures, video thumbnails, and album covers on the SD card.
Query Images
First, query the inherent Android database. The image Uri isImages.Media.EXTERNAL_CONTENT_URI
.
The following is a specific instance query,FileInfo
Is a custom data model.
Public ArrayList
QueryAllImage (final Context context) {if (context = null) {// judge the validity of the input parameter return null;} ArrayList
Images = new ArrayList
(); ContentResolver resolver = context. getContentResolver (); Cursor cursor = null; try {// query the database. The parameters are (paths, column names to be queried, condition statements, condition parameters, and sorting) cursor = resolver. query (Images. media. EXTERNAL_CONTENT_URI, null); if (cursor! = Null) {while (cursor. moveToNext () {FileInfo image = new FileInfo (); image. setId (cursor. getInt (cursor. getColumnIndex (Images. media. _ ID); // obtain the unique id image. setFilePath (cursor. getString (cursor. getColumnIndex (Images. media. DATA); // file path image. setFileName (cursor. getString (cursor. getColumnIndex (Images. media. DISPLAY_NAME); // file name //... there are also many attributes that can be set // you can view the attribute name in the next line, and then in Images. media. find the corresponding constant name Log. I (TAG, "qu EryAllImage --- all column name --- "+ cursor. getColumnName (cursor. getPosition (); // obtain the thumbnail (if the data volume is large, it will take a lot of time-you need to consider how to enable sub-thread loading)/** you can access android. provider. mediaStore. images. thumbnails query image Thumbnails * The getThumbnail method under Thumbnails can obtain image Thumbnails. The third parameter type can also be MINI_KIND */Bitmap thumbnail = MediaStore. images. thumbnails. getThumbnail (resolver, image. getId (), Images. thumbnails. MICRO_KIND, null); image. setThumbnail (thumbnai L); images. add (image) ;}} catch (Exception e) {e. printStackTrace () ;}finally {if (cursor! = Null) {cursor. close () ;}return images ;}
Query audio
First query the database to obtain Audio Information. The audio Uri isAudio.Media.EXTERNAL_CONTENT_URI
The following is a specific instance query,FileInfo
Is a custom data model.
Public ArrayList
QueryAllAudio (final Context context) {if (context = null) {// judge the validity of the input parameter return null;} ArrayList
Audios = new ArrayList
(); ContentResolver resolver = context. getContentResolver (); Cursor cursor = null; try {// query the database. The parameters are (paths, column names to be queried, condition statements, condition parameters, and sorting) cursor = resolver. query (Audio. media. EXTERNAL_CONTENT_URI, null); if (cursor! = Null) {while (cursor. moveToNext () {FileInfo audio = new FileInfo (); audio. setId (cursor. getInt (cursor. getColumnIndex (Audio. media. _ ID); // obtain the unique id audio. setFilePath (cursor. getString (cursor. getColumnIndex (Audio. media. DATA); // file path audio. setFileName (cursor. getString (cursor. getColumnIndex (Audio. media. DISPLAY_NAME); // file name //... there are also many attributes that can be set // you can view the attribute name in the next line, and then go to Audio. find the corresponding constant Name Log in Media. I (TAG, "queryAl LImage --- all column name --- "+ cursor. getColumnName (cursor. getPosition (); // obtain the album cover (if the data volume is large, it will take a lot of time-you need to consider how to enable the subthread to load) Bitmap albumArt = creatAlbumArt (audio. getFilePath (); audio. setThumbnail (albumArt); audios. add (audio) ;}} catch (Exception e) {e. printStackTrace ();} finally {if (cursor! = Null) {cursor. close () ;}return audios;}/*** @ Description: Obtain the album art * @ param filePath, like XXX/XX.mp3 * @ return album art bitmap */public Bitmap createAlbumArt (final String filePath) {Bitmap bitmap = null; // MediaMetadataRetriever retriever = new MediaMetadataRetriever (); try {retriever. setDataSource (filePath); // set the Data Source byte [] embedPic = retriever. getEmbeddedPicture (); // obtain the byte data bitmap = BitmapFactory. decodeByteArray (art, 0, art. length); // convert to image} catch (Exception e) {e. printStackTrace ();} finally {try {retriever. release () ;}catch (Exception e2) {e2.printStackTrace () ;}} return bitmap ;}
Query video
The method for querying a video thumbnail is similar to that for an image.
The following is a specific instance query,FileInfo
Is a custom data model.
Public ArrayList
QueryAllVideo (final Context context) {if (context = null) {// judge the validity of the input parameter return null;} ArrayList
Videos = new ArrayList
(); ContentResolver resolver = context. getContentResolver (); Cursor cursor = null; try {// query the database. The parameters are (paths, column names to be queried, condition statements, condition parameters, and sorting) cursor = resolver. query (Video. media. EXTERNAL_CONTENT_URI, null); if (cursor! = Null) {while (cursor. moveToNext () {FileInfo video = new FileInfo (); video. setId (cursor. getInt (cursor. getColumnIndex (Video. media. _ ID); // obtain the unique id video. setFilePath (cursor. getString (cursor. getColumnIndex (Video. media. DATA); // file path video. setFileName (cursor. getString (cursor. getColumnIndex (Video. media. DISPLAY_NAME); // file name //... there are also many attributes that can be set // you can view the attribute name in the next line, and then in Video. media. find the corresponding constant name Log. I (TAG, "queryA LlImage --- all column name --- "+ cursor. getColumnName (cursor. getPosition (); // obtain the thumbnail (if the data volume is large, it will take a lot of time-you need to consider how to enable sub-thread loading)/** you can access android. provider. mediaStore. video. thumbnails query image Thumbnails * The getThumbnail method under Thumbnails can obtain image Thumbnails. The third parameter type can also be MINI_KIND */Bitmap thumbnail = MediaStore. video. thumbnails. getThumbnail (resolver, image. getId (), Video. thumbnails. MICRO_KIND, null); video. setThumbnail (thumbnail); vid Eos. add (image) ;}} catch (Exception e) {e. printStackTrace () ;}finally {if (cursor! = Null) {cursor. close () ;}return videos ;}
The above methods have been put into practice. If you have any questions, please leave a message to me.