Android音楽プレーヤーはどのようにSDカードの上の音楽ファイルを検索します
アンドロイドシステムは、起動時にSDカードのファイルを自動的に検出し、音楽ファイルを収集してデータベースファイルを生成します.データベース・テーブルの情報にアクセスするだけで必要なファイルが得られます.
コードは次のとおりです.
cursorオブジェクトを取得するとcursorのメディアリソースにアクセスできます
コードは次のとおりです.
//
Cursor cursor = cr.query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null,
null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
cursorオブジェクトを取得するとcursorのメディアリソースにアクセスできます
if (cursor.moveToFirst()) {
do {
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));
long time = cursor.getLong(cursor
.getColumnIndex(MediaStore.Audio.Media.DURATION));
String url = cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Media.DATA));
int _id = cursor.getInt(cursor
.getColumnIndex(MediaStore.Audio.Media._ID));
String name = cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
String sbr = name.substring(name.length() - 3,
name.length());
} while (cursor.moveToNext());
, , 。
//
public static List<String> getAllFile(String path){
List<String> fileList = new ArrayList<String>();
File folder = new File(path);
addFile(fileList, folder);
return fileList;
}
public static void addFile(List<String> fileList,File f){
if(f.isDirectory()){
File[] files = f.listFiles();
for(File f1 : files){
addFile(fileList, f1);
}
}else{
String filename = f.getName();
if(filename.length()>4&&filename.substring(filename.length()-4).equalsIgnoreCase(".mp3")){
fileList.add(f.getAbsolutePath());
}
}
}
な でgetAllFile(Environment.getExternalStorageDirectory().getAbsolutePath());
を び すだけです