0

i have developed a code that retrieves songs from sdcard but my problem is am recieving song duration im milliseconds. i want to convert it to a format h:m:s. but have failed. here is my code`

public class SongsActivity extends ListActivity {
    SimpleCursorAdapter adapter;
    MediaPlayer myMediaPlayer;
    private Utilities utils;
    /** Called when the activity is first created. */
    @SuppressWarnings("deprecation")
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        findViewById(R.id.dura);

        String[] from = {
            MediaStore.MediaColumns.TITLE, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.ALBUM, MediaStore.Audio.Media.DURATION};
        int[] to = {
            R.id.title, R.id.artist, R.id.album, R.id.dura};


        @SuppressWarnings("deprecation")
        Cursor cursor = managedQuery(
            MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
            null,
            null,
            null, MediaStore.Audio.Media.TITLE);

        adapter = new SimpleCursorAdapter(this,
        R.layout.custom_list_item, cursor, from, to);
        setListAdapter(adapter);
  }

any one please help me show me how i can change MediaStore.Media.Duratio from milliseconds to H:M:S. thank you in advance for your help

TMH
  • 6,096
  • 7
  • 51
  • 88
  • 1
    [http://stackoverflow.com/questions/9027317/how-to-convert-milliseconds-to-hhmmss-format](http://stackoverflow.com/questions/9027317/how-to-convert-milliseconds-to-hhmmss-format) – Matt K Mar 25 '14 at 14:02
  • a SimpleCursorAdapter won't be sufficient for that. You'll need to override some parts of `bindView` or `getView` – njzk2 Mar 25 '14 at 14:28

2 Answers2

3

A trivial DateUtils.formatElapsedTime:

DateUtils.formatElapsedTime(timeInMillis);

See documentation

njzk2
  • 38,969
  • 7
  • 69
  • 107
0

Assuming that you already have the duration in milli seconds (ms)

String.format("%02d : %02d : %02d", 
TimeUnit.MILLISECONDS.toHours(ms),
TimeUnit.MILLISECONDS.toMinutes(ms) -  
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(ms)), 
TimeUnit.MILLISECONDS.toSeconds(ms) - 
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(ms)));   

The above code will convert it to HH : MM : SS (note %02d to specify the number of digits)

Swayam
  • 16,294
  • 14
  • 64
  • 102