Android音楽プレーヤーはどのようにSDカードの上の音楽ファイルを検索します


アンドロイドシステムは、起動時にSDカードのファイルを自動的に検出し、音楽ファイルを収集してデータベースファイルを生成します.データベース・テーブルの情報にアクセスするだけで必要なファイルが得られます.
コードは次のとおりです.
			//       
			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());
を び すだけです