質問

デバイス上にあるアルバムの全長を取得する必要がありますが、正しい結果は得られません。私が持っているのは、1つのアルバムの曲で配列を取得するためのフォローウィングです。

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];

したがって、上記は正常に機能しますが、私は歌durationsを正しく追加していません...何かアイデアはありますか?

役に立ちましたか?

解決

だから私はそれを解決しました - 私の問題は、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];
}

これが他の誰かに役立つことを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top