2011-08-12 11 views
2

SDカードのミュージックフォルダに曲があります。AndroidのSDカードから曲を選んで再生します。

私のアプリではから音楽ファイルのリストからSDカードの曲を選び、いずれかの曲を選択したら、再生ボタンを使って再生する必要があります。どうやってやるの?

私は既にコンテンツリゾルバを使用し、曲のリストを取得しています。これを行う方法はありますかインテントを使用して、保存された曲からSDカードを選択しますか?

私は両方の方法でこれを行っています。ただそれをチェックしてください。

答えて

3
@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    super.onOptionsItemSelected(item); 
    System.gc(); 
    String[] listtype = { MediaStore.Audio.Media._ID,MediaStore.Audio.Media.DATA,MediaStore.Audio.Media.DISPLAY_NAME,MediaStore.Video.Media.SIZE }; 
    musiccursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,listtype, null, null, null); 
    count = musiccursor.getCount(); 
    musiclist = (ListView) findViewById(R.id.PhoneMusicList); 
    musiclist.setAdapter(new MusicAdapter(this)); 
    musiclist.setOnItemClickListener(musicgridlistener); 
    mMediaPlayer = new MediaPlayer(); 
    return true; 
} 
private OnItemClickListener musicgridlistener = new OnItemClickListener() 
{ 
    public void onItemClick(AdapterView<?> parent, View v, int position,long id) 
    { 
      System.gc(); 
      music_column_index = musiccursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA); 
      musiccursor.moveToPosition(position); 
      String filename = musiccursor.getString(music_column_index); 
      try 
      { 
       if (mMediaPlayer.isPlaying()) 
       { 
         mMediaPlayer.reset(); 
       } 
       mMediaPlayer.setDataSource(filename); 
       mMediaPlayer.prepare(); 
       mMediaPlayer.start(); 
       mMediaPlayer.setOnCompletionListener(new OnCompletionListener() 
       { 
        @Override 
        public void onCompletion(MediaPlayer mp) 
        { 
         mp.release(); 
         mp = null;         
        } 
       });  
      } 
      catch (Exception e) {} 
    } 
}; 

public class MusicAdapter extends BaseAdapter 
{ 
    private Context mContext; 

    public MusicAdapter(Context c) 
    { 
      mContext = c; 
    } 

    public int getCount() 
    { 
      return count; 
    } 

    public Object getItem(int position) 
    { 
      return position; 
    } 

    public long getItemId(int position) 
    { 
      return position; 
    } 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) 
    { 
      System.gc(); 
      TextView tv = new TextView(mContext.getApplicationContext()); 
      String id = null; 
      if (convertView == null) 
      { 
       music_column_index = musiccursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME); 
       musiccursor.moveToPosition(position); 
       id = musiccursor.getString(music_column_index); 
       music_column_index = musiccursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE); 
       musiccursor.moveToPosition(position); 
       id += " Size(KB):" + musiccursor.getString(music_column_index); 
       tv.setText(id); 
      } 
      else 
      tv = (TextView) convertView; 
      return tv; 
    }  
} 
} 
+0

それは働く....... – Geetanjali

6

、アイデアを得るためにこれらを確認してください。インテントを使用して

コードは次のとおりです。

@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    super.onOptionsItemSelected(item); 
    System.gc(); 
     Intent intent = new Intent(); 
     intent.setAction(android.content.Intent.ACTION_VIEW); 
     Uri data = Uri.parse("file:///sdcard/Music"); 
     String type = "audio/mp3"; 
     intent.setDataAndType(data, type); 
     startActivityForResult(intent, Pick_song); 
    return true; 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultCode, data); 

    switch(requestCode) 
    { 
     case Pick_song : if (resultCode == RESULT_OK) 
     { 
      muri = getIntent().getData(); 
      //String ringTonePath = muri.toString(); 

      if (muri != null) 
      { 
       try 
       { 
        mMediaPlayer.start(); 
        mMediaPlayer.setOnCompletionListener(new OnCompletionListener() 
        { 
          @Override 
         public void onCompletion(MediaPlayer mp) 
          { 
           mp.release(); 
          mp = null; 
         } 
        }); 
       } 
       catch (Exception exception) 
       { 
        exception.printStackTrace(); 
       } 
      } 
     } 
+1

ここにムリとは何ですか?適切なコードを定義してください。 –

+0

MediaPlayerオブジェクトにUri/pathという音楽ファイルをどこに渡すべきですか? 不幸にも、私は上記のコードでそれを見つけることができません。 – NarendraJi

関連する問題