Android 媒体播放器音乐导入

Android 媒体播放器音乐导入,android,file-io,Android,File Io,我正在尝试创建一个媒体播放器,在主屏幕上的播放列表中设置我的所有歌曲。 实际上有两件事我搞不清楚。第一个问题是,如何让应用程序从android设备中的文件夹自动更新播放列表。 显然,我的应用程序在我为播放列表创建的列表视图中没有显示任何内容 我尝试使用以下代码实现它: play = (Button)findViewById(R.id.play); play.setOnTouchListener(new OnTouchListener() {

我正在尝试创建一个媒体播放器,在主屏幕上的播放列表中设置我的所有歌曲。 实际上有两件事我搞不清楚。第一个问题是,如何让应用程序从android设备中的文件夹自动更新播放列表。 显然,我的应用程序在我为播放列表创建的列表视图中没有显示任何内容

我尝试使用以下代码实现它:

           play = (Button)findViewById(R.id.play);
           play.setOnTouchListener(new OnTouchListener() {
            @SuppressLint("ClickableViewAccessibility")
            @Override
            public boolean onTouch(View v, MotionEvent event) {
             // show interest in events resulting from ACTION_DOWN
             if(event.getAction()==MotionEvent.ACTION_DOWN) return true;
             // don't handle event unless its ACTION_UP so "doSomething()" only runs once.
             if(event.getAction()!=MotionEvent.ACTION_UP) return false;
            // doSomething();


             play.setPressed( !play.isPressed() );
             if(play.isPressed()==true){
                 //mp=MediaPlayer.create(Splash.this , R.raw.cia);
                 mp.start();}
             else {mp.stop();}
             return true;
            }
            }); 
我还创建了一个更新我的播放列表的函数,但是,当我尝试执行它时,它会给我一个错误,不幸的是程序已经停止

private void updatePlaylist(){ 
  File mus = new File(SD_PATH);
  if(mus.listFiles(new Mp3Filter()).length > 0){
    for(File file : mus.listFiles(new Mp3Filter())){
        songs.add(file.getName());
    }

  ArrayAdapter<String> songList=new ArrayAdapter<String>(this, R.layout.song_item, songs);
  setListAdapter(songList);
 }
private void updatePlaylist(){
文件mus=新文件(SD_路径);
如果(mus.listFiles(新的Mp3Filter()).length>0){
对于(文件:mus.listFiles(新的Mp3Filter())){
songs.add(file.getName());
}
ArrayAdapter歌曲列表=新的ArrayAdapter(此,R.layout.song_项,歌曲);
setListAdapter(歌曲列表);
}
有什么想法吗?
谢谢。

尝试使用MediaStore。您也可以使用cursorAdapter。 它会不时更新设备中的播放列表文件

下面是一个例子:

// in your ListFragment
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); // create adapter once
        Context context = getActivity();
        int layout = android.R.layout.simple_list_item_1;
        Cursor cursor = context.getContentResolver().query(
        MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
        null,
        null,
        null,
        MediaStore.Audio.Media.TITLE + " ASC");
        int flags = 0; // no auto-requery
        mAdapter = new SimpleCursorAdapter(context, layout, cursor, MediaStore.Audio.Media.TITLE, android.R.id.text1, flags);
    }

@Override
    public void onActivityCreated(Bundle savedInstanceState)
   {
         setListAdapter(mAdapter);
    }
UPD

以下是有关MediaStore的链接:

以及你的碎片列表:

public class ContactsFragment extends ListFragment

{
    private static final String[] FROM = { MediaStore.Audio.Media.TITLE };
    private static final int[] TO = { android.R.id.text1 };
    private CursorAdapter mAdapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.origin_lay, container, false);
        return view;
    }

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        Context context = getActivity();
        int layout = android.R.layout.simple_list_item_1;
        Cursor cursor = context.getContentResolver().query(
                MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
                null,
                null,
                null,
                MediaStore.Audio.Media.TITLE + " ASC");
        int flags = 0; 
        mAdapter = new SimpleCursorAdapter(context, layout, cursor, FROM, TO, flags);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState)
    {
        super.onActivityCreated(savedInstanceState); 

        setListAdapter(mAdapter); 
        getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
        mAdapter.notifyDataSetChanged();
    }
}
在活动中只显示此片段。

我在“SimpleCursorAdapter”(构造函数未定义)、“getActivity”(方法未定义)和“setListAdapter(mAdapter)”(无法解析为变量)处收到3个错误.我只是一个android编程的初学者,目前我正在通过示例进行学习,所以你能更明确一些吗?