2014-11-05 3 views
0

홈 화면의 재생 목록에있는 모든 노래를 설정하는 미디어 플레이어를 만들려고합니다. 실제로 알아낼 수없는 두 가지가 있습니다. 첫째, 안드로이드 장치의 폴더에서 응용 프로그램이 자동으로 재생 목록을 업데이트하게하는 방법입니다. 둘째, 내 응용 프로그램에서 재생 목록 용으로 만든 ListView에 아무 것도 표시하지 않는 것 같습니다. 그것은 나에게 불행하게도 프로그램이 오류를 제공미디어 플레이어 음악 가져 오기

  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도 사용할 수 있습니다. 때때로 장치의 재생 목록 파일을 업데이트합니다. 미디어 스토어 MediaStore에 대한 링크

// 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 여기

됩니다 : 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(); 
    } 
} 

그냥이 보여 여기

은 예입니다 연약한 nt.

+0

"SimpleAutility"(정의되지 않은 메서드) 및 "setListAdapter (mAdapter)"(변수로 해결할 수 없음)에서 "SimpleCursorAdapter"(생성자가 정의되지 않음), "getActivity" 나는 안드로이드 프로그래밍의 초보자 일 뿐이며, 현재 예제를 통해 배우고 있습니다. 좀 더 명확하게 표현해 주실 수 있습니까? – bgilca

+0

@bgilca 업데이트 된 답변을 살펴보십시오. – QArea