2013-11-06 5 views
1

Мне нужно получить полную длину альбома, находящегося на устройстве, но не получившего правильного результата. То, что у меня есть, follwing получить массив с песнями одного альбома:рассчитать полную длину альбома

MPMediaPropertyPredicate *albumNamePredicate = [MPMediaPropertyPredicate predicateWithValue:albumTitle 
           forProperty: MPMediaItemPropertyAlbumTitle]; 
MPMediaQuery *myAlbumQuery = [[MPMediaQuery alloc] init]; 
[myAlbumQuery addFilterPredicate: albumNamePredicate]; 
songsAlbumList = [myAlbumQuery items]; 

Чтобы получить длину песни, я использую это:

NSNumber *songTrackLength = [song valueForProperty:MPMediaItemPropertyPlaybackDuration]; 
int minutes = floor([songTrackLength floatValue]/60); 
int seconds = trunc([songTrackLength floatValue] - minutes * 60); 
TracklengthLabel.text = [NSString stringWithFormat:@"%d:%02d", minutes, seconds]; 

Так выше работает отлично, я просто не получайте правильное добавление песен ... Любые идеи?

ответ

0

Итак, я решил это - моя проблема заключалась в том, что я не знал, как правильно делать математику с NSNumbers - я не знал, что искал это, поэтому я не просил об этом. Вот код, который я придумал, чтобы вычислить длину альбома на вашем устройстве:

- (void)fullAlbumLength 
{ 
    for (int i=0; i < songsAlbumList.count; i++) 
    { 
     if (addLength == NULL) // addLength and addLengthNew are NSNumber variables 
     { 
      addLength = [[self.albumTracksList objectAtIndex:i] valueForProperty: @"playbackDuration"]; 
     } 
     else 
     { 
      addLengthNew = [[self.albumTracksList objectAtIndex:i] valueForProperty: @"playbackDuration"]; 
      addLength = [NSNumber numberWithFloat:([addLength floatValue] + [addLengthNew floatValue])]; 
     } 
    } 
    fullminutes = floor([addLength floatValue]/60); // fullminutes is an int 
    fullseconds = trunc([addLength floatValue] - fullminutes * 60); // fullseconds is an int 
    fullLength.text = [NSString stringWithFormat:@"%02d:%02d", fullminutes, fullseconds]; 
} 

Надеется, что это полезно для кого-то там.

Смежные вопросы