2012-10-26 5 views
5

Getting Power Ich bin verzweifelt Suche, wie man die Macht eines Sounds über die iPod/Music App in meiner Anwendung gespielt bekommen.Macht einer Musik in iPhone

Alles, was ich finden konnte, war, die Macht eines Sounds über das Mikrofon zu bekommen, oder einen Sound in meiner eigenen App über einen AVAudioPlayer zu spielen und dann die averagePowerForChannel: -Methode zu verwenden. Ich suchte auch, ob der MPMusicPlayerController mir helfen könnte, aber am nächsten komme ich von dem, was ich will, ist das MPMediaItem des "nowPlayingItem", und es scheint, dass ich auf viele Informationen vom aktuell gespielten Lied zugreifen kann, aber nichts wie die aktuelle Macht .

Gibt es eine Möglichkeit, einfach die aktuelle Leistung eines Songs aus der Music App in meiner App zu erhalten?

Antwort

0

Larmes Antwort ist mit iOS 7 veraltet (das volume Attribut von MPMusicPlayer und die iPodMusicPlayer Methode). Versuchen Sie stattdessen eine AVAudioPlayer Instanz mit dem aktuellen Song zu bekommen (aber wenn ich meine tun, aus irgendeinem Grund, es gibt immer -120 dB):

AVAudioPlayer *somePlayer = [AVAudioPlayer new]; 
__autoreleasing NSError* error; 
somePlayer = [somePlayer initWithContentsOfURL:[[[MPMusicPlayerController systemMusicPlayer] nowPlayingItem] valueForProperty:MPMediaItemPropertyAssetURL] error:&error]; 
somePlayer.currentTime = [[MPMusicPlayerController systemMusicPlayer] currentPlaybackTime]; 
somePlayer.volume = 0; 
[somePlayer play]; 
[somePlayer setMeteringEnabled:YES]; 
[somePlayer updateMeters]; 
NSMutableArray* amps = [NSMutableArray array]; 
if (error != nil) { 
    NSLog(@"error: %@", error.debugDescription); 
} 
for (int i = 0; i < somePlayer.numberOfChannels; i++) { 
    [amps addObject:@(([somePlayer peakPowerForChannel:i] + 160.0)/160.0)]; 
    NSLog(@"Amplitude: %f db for channel %i", [somePlayer averagePowerForChannel:i], i); 
} 
float amp = 0; 
for (NSNumber *x in amps) { 
    amp += [x floatValue]; 
} 
amp /= amps.count; 
NSLog(@"amp: %f", amp); 
+0

Ich arbeite seit Jahren nicht mehr an diesem Projekt, daher bin ich mir nicht sicher, ob deine Antwort funktioniert (Larmes Antwort) das Volumen, und nicht die Macht, wie AlexChafee kommentierte), aber das scheint die Art von Dingen zu sein, die ich zu der Zeit suchte, also werde ich es trotzdem akzeptieren. Hoffe, du wirst jemand anderem mit dieser Antwort helfen :) – GawenBerger

0

Versuchen Sie folgendes: myPlayer = [MPMusicPlayerController iPodMusicPlayer];

Sie können die Lautstärke mit myPlayer.volume zu bekommen. Es ist ein Schwimmer. Ein Schritt ist 1/16.

+1

Das ist Volumen, nicht Macht. Leistung ist die Stufe für Stufe, die Sache, die man auf einem Dezibelmeter sieht. (Wenn die Stromversorgung 0 ist, kommt kein Ton heraus, egal wie groß die Lautstärke ist.) – AlexChaffee

+0

Volume ist jetzt veraltet –