Changeset View
Changeset View
Standalone View
Standalone View
data/src/org/kde/elisa/ElisaAndroidMusicScanner.java
- This file was added.
1 | package org.kde.elisa; | ||||
---|---|---|---|---|---|
2 | | ||||
3 | import android.content.Context; | ||||
4 | import android.database.Cursor; | ||||
5 | import android.content.Intent; | ||||
6 | import android.provider.MediaStore; | ||||
7 | | ||||
8 | /** | ||||
9 | * Created by mgallien on 02/05/17. | ||||
10 | */ | ||||
11 | | ||||
12 | public class ElisaAndroidMusicScanner { | ||||
13 | private static String[] tracksRequestedColumns = { | ||||
14 | MediaStore.Audio.Media._ID, | ||||
15 | MediaStore.Audio.Media.TITLE, | ||||
16 | MediaStore.Audio.Media.TRACK, | ||||
17 | MediaStore.Audio.Media.YEAR, | ||||
18 | MediaStore.Audio.Media.DURATION, | ||||
19 | MediaStore.Audio.Media.DATA, | ||||
20 | MediaStore.Audio.Media.ARTIST, | ||||
21 | MediaStore.Audio.Media.ARTIST_ID, | ||||
22 | MediaStore.Audio.Media.ALBUM, | ||||
23 | MediaStore.Audio.Media.ALBUM_ID, | ||||
24 | MediaStore.Audio.Media.COMPOSER, | ||||
25 | }; | ||||
26 | | ||||
27 | private static String[] albumsRequestedColumns = { | ||||
28 | MediaStore.Audio.Albums._ID, | ||||
29 | MediaStore.Audio.Albums.ALBUM, | ||||
30 | MediaStore.Audio.Albums.ALBUM_ART, | ||||
31 | MediaStore.Audio.Albums.ARTIST, | ||||
32 | MediaStore.Audio.Albums.NUMBER_OF_SONGS, | ||||
33 | }; | ||||
34 | | ||||
35 | public static void listAudioFiles(Context ctx) | ||||
36 | { | ||||
37 | androidMusicScanTracksStarting(); | ||||
38 | | ||||
39 | //Some audio may be explicitly marked as not being music | ||||
40 | String tracksSelection = MediaStore.Audio.Media.IS_MUSIC + " != 0"; | ||||
41 | String tracksSortOrder = MediaStore.Audio.Media.DEFAULT_SORT_ORDER + " ASC"; | ||||
42 | | ||||
43 | Cursor tracksCursor = ctx.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, tracksRequestedColumns, tracksSelection, null, tracksSortOrder); | ||||
44 | | ||||
45 | tracksCursor.moveToFirst(); | ||||
46 | | ||||
47 | while(tracksCursor.moveToNext()) { | ||||
48 | sendMusicFile(tracksCursor.getString(0) + "||" + tracksCursor.getString(1) + "||" + | ||||
49 | tracksCursor.getString(2) + "||" + tracksCursor.getString(3) + "||" + | ||||
50 | tracksCursor.getString(4) + "||" + tracksCursor.getString(5) + "||" + | ||||
51 | tracksCursor.getString(6) + "||" + tracksCursor.getString(7) + "||" + | ||||
52 | tracksCursor.getString(8) + "||" + tracksCursor.getString(9) + "||" + | ||||
53 | tracksCursor.getString(10)); | ||||
54 | } | ||||
55 | | ||||
56 | androidMusicScanTracksFinishing(); | ||||
57 | | ||||
58 | androidMusicScanAlbumsStarting(); | ||||
59 | | ||||
60 | //Some audio may be explicitly marked as not being music | ||||
61 | String albumsSortOrder = MediaStore.Audio.Albums.DEFAULT_SORT_ORDER + " ASC"; | ||||
62 | | ||||
63 | Cursor albumsCursor = ctx.getContentResolver().query(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, albumsRequestedColumns, null, null, albumsSortOrder); | ||||
64 | | ||||
65 | albumsCursor.moveToFirst(); | ||||
66 | | ||||
67 | while(albumsCursor.moveToNext()) { | ||||
68 | sendMusicAlbum(albumsCursor.getString(0) + "||" + albumsCursor.getString(1) + "||" + | ||||
69 | albumsCursor.getString(2) + "||" + albumsCursor.getString(3) + "||" + albumsCursor.getString(4)); | ||||
70 | } | ||||
71 | | ||||
72 | androidMusicScanAlbumsFinishing(); | ||||
73 | } | ||||
74 | | ||||
75 | private static native void androidMusicScanTracksStarting(); | ||||
76 | | ||||
77 | private static native void sendMusicFile(String musicFile); | ||||
78 | | ||||
79 | private static native void androidMusicScanTracksFinishing(); | ||||
80 | | ||||
81 | private static native void androidMusicScanAlbumsStarting(); | ||||
82 | | ||||
83 | private static native void sendMusicAlbum(String musicFile); | ||||
84 | | ||||
85 | private static native void androidMusicScanAlbumsFinishing(); | ||||
86 | | ||||
87 | } |