2012-07-29 14 views
5

私は1曲のURIを知っています。曲の情報、タイトルトラックなどを取得するにはどうすればいいですか?Android知っているURIから1曲のID情報を取得する方法

申し訳ありませんすべての記事は、URIの曲の情報を知る方法ではなく、ライブラリ全体のインデックスを作成する方法を提供しています。これが私がURIを取得するために使用しているものです。 audioIDはSharedPrefsに格納されています。ありがとう

int REQUEST_MEDIA = 0; 
String audioID; 

Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI); 
     startActivityForResult(i, REQUEST_MEDIA);//REQUEST_MEDIA is some const int to operate with in onActivityResult 
if (requestCode == REQUEST_MEDIA && resultCode == RESULT_OK) { 
     audioID = data.getDataString(); 

答えて

5

私は自分自身の質問に答えましたが、将来これは他の誰かに役立ちます。

int REQUEST_MEDIA = 0; 


SharedPreferences prefs; 
String prefName = "MyPref"; 
String audioID, artist_name, artist_band; 
Uri MyUri; 



private OnClickListener startListener = new OnClickListener() { 
    public void onClick(View v) { 
     Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Audio.Media.EXTERNAL_CONTENT_URI); 
     startActivityForResult(i, REQUEST_MEDIA);//REQUEST_MEDIA is some const int to operate with in onActivityResult 

    } 
}; 


@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == REQUEST_MEDIA && resultCode == RESULT_OK) { 
     audioID = data.getDataString(); 
     MyUri = Uri.parse(audioID); 
     String[] proj = { MediaStore.Audio.Media._ID, 
       MediaStore.Audio.Media.DATA, 
       MediaStore.Audio.Media.TITLE, 
       MediaStore.Audio.Artists.ARTIST }; 

       Cursor tempCursor = managedQuery(MrUri, 
              proj, null, null, null); 

       tempCursor.moveToFirst(); //reset the cursor 
       int col_index=-1; 
       int numSongs=tempCursor.getCount(); 
       int currentNum=0; 
       do{ 
        col_index = tempCursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE); 
        artist_name = tempCursor.getString(col_index); 
        col_index = tempCursor.getColumnIndexOrThrow(MediaStore.Audio.Artists.ARTIST); 
        artist_band = tempCursor.getString(col_index); 
        //do something with artist name here 
        //we can also move into different columns to fetch the other values 

        currentNum++; 
       }while(tempCursor.moveToNext()); 


    prefs = getSharedPreferences(prefName, MODE_PRIVATE); 
SharedPreferences.Editor editor = prefs.edit(); 
editor.putString("alarm_selected", audioID); 
editor.putString("alarm_name", artist_name); 
editor.putString("alarm_band", artist_band); 
editor.commit();  

    } 
} 
+0

このポストから礼儀です!フォローアップありがとう - – kittka

+0

ありがとう、私は助けることがうれしいです。 – user1234051

0

ちょうどボールが私のために軌道に乗ることができなかった上記の答えは、残念ながら、しかし、私はまだお探しの方のためにこれを発見しました。

//Some audio may be explicitly marked as not being music 
String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0"; 

String[] projection = { 
    MediaStore.Audio.Media._ID, 
    MediaStore.Audio.Media.ARTIST, 
    MediaStore.Audio.Media.TITLE, 
    MediaStore.Audio.Media.DATA, 
    MediaStore.Audio.Media.DISPLAY_NAME, 
    MediaStore.Audio.Media.DURATION 
}; 

Cursor cursor = this.managedQuery(
    MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
    projection, 
    selection, 
    null, 
    null); 

private List<String> songs = new ArrayList<String>(); 
while(cursor.moveToNext()) { 
    songs.add(cursor.getString(0) + "||" 
       + cursor.getString(1) + "||" 
       + cursor.getString(2) + "||" 
       + cursor.getString(3) + "||" 
       + cursor.getString(4) + "||" 
       + cursor.getString(5)); 

    //TO DISPLAY IN LISTVIEW 
    ListView lv = (ListView) findViewById(R.id.song_list); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, songs); 
    lv.setAdapter(adapter); 

    cursor.close(); 

このコードは、それがなかったright here :-)

+0

このコードは、すべての音楽を照会するように見えます。特定のURIの使用を明示的に求めています。このコードが適切だと思う場合は、説明してください。ランダムなコードを貼り付けるだけではありません。 – Vince

+0

@Vinceあなたは正しいです、それはすべての結果を返し、どんな手段でもランダムではありませんでした。私は今日の質問に合うように更新します。 –

関連する問題