オーディオ ファイルを読み取るパスをバイト単位で指定する方法を教えてください。SD カードの曲をリスト ビューで一覧表示できました。また、raw フォルダーにあるオーディオ ファイルをバイト単位で読み取りました。ただし、リスト ビューから選択した曲を読み取るためのパスを指定できません。
以下は私のコードです:
String[] proj = {
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,proj, null, null, null);
count = musiccursor.getCount();
musiclist = (ListView) findViewById(R.id.PhoneMusicList);
musiclist.setAdapter(new MusicAdapter(getApplicationContext()));
musiclist.setOnItemClickListener(musicgridlistener);
mMediaPlayer = new MediaPlayer();
//To read audio file in bytes
InputStream in = getApplicationContext().getResources().openRawResource(R.raw.Audio);
DataInputStream data = new DataInputStream(in);
BufferedReader br = new BufferedReader(new InputStreamReader(data));
//Adapter
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;
}
ここでは、raw フォルダーに配置されたファイルを読み込んでいます。ただし、リストで選択されているオーディオ ファイルを読み取る必要があり、それを参照する方法がわかりません。