Android studio 在SongsManager中获得了接近的力量

Android studio 在SongsManager中获得了接近的力量,android-studio,android-mediaplayer,media,Android Studio,Android Mediaplayer,Media,我正在开发一个简单的媒体播放器应用程序,但在用棉花糖API 23构建apk时,我的应用程序崩溃了。这是我的密码 if (home.listFiles(new FileExtensionFilter()).length > 0) { for (File file : home.listFiles(new FileExtensionFilter())) { HashMap<String, String> song = new

我正在开发一个简单的媒体播放器应用程序,但在用棉花糖API 23构建apk时,我的应用程序崩溃了。这是我的密码

if (home.listFiles(new FileExtensionFilter()).length > 0) {
            for (File file : home.listFiles(new FileExtensionFilter())) {
                HashMap<String, String> song = new HashMap<String, String>();
                song.put("songTitle", file.getName().substring(0, (file.getName().length() - 4)));
                song.put("songPath", file.getPath());

                // Adding each song to SongList
                songsList.add(song);
            }
        }
if(home.listFiles(新文件扩展过滤器()).length>0){
对于(文件:home.listFiles(新的FileExtensionFilter())){
HashMap宋=新HashMap();
song.put(“songTitle”,file.getName().substring(0,(file.getName().length()-4));
put(“songPath”,file.getPath());
//将每首歌曲添加到歌曲列表
歌曲列表。添加(歌曲);
}
}
这是SongsManager的完整代码

package ph.zyber.zybermp;

import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.HashMap;

public class SongsManager {
    // SDCard Path
    final String MEDIA_PATH = new String("/sdcard/");
    private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();

    // Constructor
    public SongsManager(){

    }

    /**
     * Function to read all mp3 files from sdcard
     * and store the details in ArrayList
     * */
    public ArrayList<HashMap<String, String>> getPlayList(){
        File home = new File(MEDIA_PATH);

        if (home.listFiles(new FileExtensionFilter()).length > 0) {
            for (File file : home.listFiles(new FileExtensionFilter())) {
                HashMap<String, String> song = new HashMap<String, String>();
                song.put("songTitle", file.getName().substring(0, (file.getName().length() - 4)));
                song.put("songPath", file.getPath());

                // Adding each song to SongList
                songsList.add(song);
            }
        }
        // return songs list array
        return songsList;
    }

    /**
     * Class to filter files which are having .mp3 extension
     * */
    class FileExtensionFilter implements FilenameFilter {
        public boolean accept(File dir, String name) {
            return (name.endsWith(".mp3") || name.endsWith(".MP3"));
        }
    }
}
包装ph.zyber.zybermp;
导入java.io.File;
导入java.io.FilenameFilter;
导入java.util.ArrayList;
导入java.util.HashMap;
公共类歌曲管理器{
//SD卡路径
最终字符串媒体路径=新字符串(“/sdcard/”);
private ArrayList songsList=new ArrayList();
//建造师
公共歌曲管理器(){
}
/**
*从SD卡读取所有mp3文件的功能
*并将详细信息存储在ArrayList中
* */
公共阵列列表getPlayList(){
文件主目录=新文件(媒体路径);
if(home.listFiles(新文件扩展筛选器()).length>0){
对于(文件:home.listFiles(新的FileExtensionFilter())){
HashMap宋=新HashMap();
song.put(“songTitle”,file.getName().substring(0,(file.getName().length()-4));
put(“songPath”,file.getPath());
//将每首歌曲添加到歌曲列表
歌曲列表。添加(歌曲);
}
}
//返回歌曲列表数组
返回歌曲列表;
}
/**
*类来筛选扩展名为.mp3的文件
* */
类FileExtensionFilter实现FilenameFilter{
公共布尔接受(文件目录,字符串名称){
return(name.endsWith(“.mp3”)| name.endsWith(“.mp3”);
}
}
}
我正在学习教程

请帮帮我。
提前感谢。

在Eclipse中,您需要找到音乐文件夹的路径:
窗口显示查看其他文件资源管理器(手机必须连接到计算机)

在搜索完整路径的地方,我将其改为“/storage/extSdCard/Music”。 在我将其放入代码中并运行后:

final String MEDIA_PATH=新字符串(“/storage/extSdCard/Music”)

祝你好运。


这样修改SongsManger,您必须在SongsManger的对象创建过程中传递相应活动的上下文

我已经更正了getplaylist()函数的代码,别忘了在manifest和 使用对话框检查权限

在包含内容解析程序的每个活动中扩展appcombatActivity 例如:


公共类歌曲管理器{
private ArrayList songsList=new ArrayList();
光标;
语境;
//建造师
公共歌曲管理器(上下文){
this.context=上下文;
}
/**
*从SD卡读取所有mp3文件的功能
*并将详细信息存储在ArrayList中
* */
公共阵列列表getPlayList(){
字符串选择=MediaStore.Audio.Media.IS_MUSIC+“!=0”;
字符串[]投影={
MediaStore.Audio.Media.\u ID,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.DISPLAY\u名称,
MediaStore.Audio.Media.DURATION
};
ContentResolver ContentResolver=context.getContentResolver();
cursor=contentResolver.query(MediaStore.Audio.Media.EXTERNAL\u CONTENT\u URI、投影、选择、null、null);
while(cursor.moveToNext()){
HashMap宋=新HashMap();
song.put(“songID”,cursor.getString(0));
song.put(“songTitle”,cursor.getString(2));
song.put(“songPath”,cursor.getString(3));
//将每首歌曲添加到歌曲列表
歌曲列表。添加(歌曲);
}
//返回歌曲列表数组
返回歌曲列表;
}
}
SongsManager plm = new SongsManager(PlayListActivity.this);

// get all songs from sdcard

this.songsList = plm.getPlayList();
public class SongsManager {

    private ArrayList<hashmap<string, string="">> songsList = new ArrayList<hashmap<string, string="">>();

    Cursor cursor;

    Context context;

    // Constructor

    public SongsManager(Context context){

       this.context = context;

    }

/**

* Function to read all mp3 files from sdcard

* and store the details in ArrayList

* */

public ArrayList<hashmap<string, string="">> getPlayList(){

    String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";

    String[] projection = {

    MediaStore.Audio.Media._ID,

    MediaStore.Audio.Media.ARTIST,

    MediaStore.Audio.Media.TITLE,

    MediaStore.Audio.Media.DATA,

    MediaStore.Audio.Media.DISPLAY_NAME,

    MediaStore.Audio.Media.DURATION

    };

ContentResolver contentResolver = context.getContentResolver();

cursor = contentResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,projection, selection,null,null);

while(cursor.moveToNext()) {

    HashMap<string, string=""> song = new HashMap<string, string="">();

    song.put("songID",cursor.getString(0));

    song.put("songTitle",cursor.getString(2));

    song.put("songPath",cursor.getString(3));

    // Adding each song to SongList

    songsList.add(song);

    }

// return songs list array

    return songsList;

  }

}