0
我做了一個媒體播放器,我想加載一個ArrayList中的MP3文件。我在一個名爲get getMP3Files的方法中做了這個。這需要相當長的時間。所以我想把這個我另一個線程。但是我沒有在run()中獲取Context和方法。如何獲得線程中的上下文或縮短進程?
是否有可能縮短這個過程或獲取上下文?
在此先感謝!
getMP3Files:
private void getMP3Files(Context context, String directory,ArrayList<MusicListArray> mp3_list){
MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
Uri uri;
byte[] album_art;
Bitmap bitmap;
/*File[] files = Directory.listFiles(new MP3FileNameFilter());
files = Directory.listFiles();*/
File folder = new File(directory);
for (File file : folder.listFiles()) {
if (file.isFile()) {
if (file.getName().endsWith(".mp3") || file.getName().endsWith(".MP3")) {
uri = Uri.fromFile(file);
mediaMetadataRetriever.setDataSource(context,uri);
String artist = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
String title = file.getName();
album_art = mediaMetadataRetriever.getEmbeddedPicture();
if(album_art != null){
bitmap = BitmapFactory.decodeByteArray(album_art, 0, album_art.length);
}else{
bitmap = BitmapFactory.decodeResource(context.getResources(),R.drawable.ic_launcher);
}
if(bitmap == null){
bitmap = BitmapFactory.decodeResource(context.getResources(),R.drawable.ic_launcher);
}
if (title.indexOf(".") > 0)
title = title.substring(0, title.lastIndexOf("."));
if(artist == null){
artist = getString(R.string.unknown_artist);
}
mp3_list.add(new MusicListArray(title,artist,file,bitmap));
}
}else if(file.isDirectory()){
getMP3Files(context, file.getPath(), mp3_list);
}
}
Collections.sort(mp3_list);
/*for(int i=0;i<files.length;i++){
mp3_list.add(new MusicListArray(files[i].getName(),"Test",files[i]));
}*/
//return mp3_list;
}
我希望它是這樣的:
public void run() {
getMP3Files(this, Environment.getExternalStorageDirectory().getPath(), list);
StableArrayAdapter adapter = new StableArrayAdapter(this,R.layout.drawer_list_item,list);
// Set the adapter for the list view
mDrawerList.setAdapter(adapter); //Error
}
你的方法在一個活動或另一個類中運行的位置? – Jorgesys
run()方法在活動中是內部的嗎?在這種情況下,您可以使用MYActivity.this –
'run()'和'getMP3Files'在MainActivity中。 @ phemt.latd不起作用。 :/ 任何想法如何縮短搜索文件,所以我不需要線程? –