Android studio 在SongsManager中获得了接近的力量
我正在开发一个简单的媒体播放器应用程序,但在用棉花糖API 23构建apk时,我的应用程序崩溃了。这是我的密码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
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;
}
}