2014-11-05 4 views
0

Я пытаюсь создать медиаплеер, который устанавливает все мои песни в списке воспроизведения на моем главном экране. На самом деле есть две вещи, которые я не могу понять. Первый - это то, как приложение может автоматически обновить список воспроизведения из папки на устройстве Android. 2nd По-видимому, мое приложение не показывает мне ничего в ListView, который я создал для плейлиста.Media Player Music Import

Я пытался реализовать его, используя следующий код:

  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); 
} 

Любые идеи? Спасибо.

ответ

0

Попробуйте использовать 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: http://developer.android.com/reference/android/provider/MediaStore.html

И ваш FragmentList:

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(); 
    } 
} 

В деятельности просто показать это fragme нт.

+0

Я получаю 3 ошибки в «SimpleCursorAdapter» (конструктор не определен), в «getActivity» (метод undefined), а также в «setListAdapter (mAdapter)» (не может быть разрешен переменной). Я просто новичок в программировании в андроиде, и в настоящее время я изучаю пример, так что, пожалуйста, будьте более ясны? – bgilca

+0

@bgilca Взгляните на мой обновленный ответ. – QArea