Есть ли возможность запустить акселерометр при активированном вызове? - PullRequest
0 голосов
/ 14 октября 2011

Привет. В моем проекте мне нужно вызывать акселерометр при активированном вызове. Я использую этот код для вызова акселерометра во время вызова.

- (void)applicationDidEnterBackground:(UIApplication *)application
{
 if(isSlamOff == FALSE){
        NSLog(@"Slame is off");

       if(callState == CTCallStateConnected) {
        UIAccelerometer *accelerometer =[UIAccelerometer sharedAccelerometer]; 
        accelerometer.updateInterval = 0.1; 
        accelerometer.delegate = self;
       }
}

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration{

   UIAccelerationValue x, y, z;
    x = acceleration.x;
    y = acceleration.y;
    z = acceleration.z;
    NSLog(@"x is %4.2f, y is %4.2f and z is %4.2f",x,y,z);

    magnitude = sqrt(acceleration.x * acceleration.x
                     + acceleration.y * acceleration.y
                     + acceleration.z * acceleration.z);
   NSLog(@"%f",magnitude);

   if(magnitude > 2.5){
    NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"slamshort" ofType:@"wav"];
    NSURL *newURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
    AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:newURL error: nil];
    [newPlayer prepareToPlay];
    NSLog(@"Music Is Playing");

    AudioSessionSetProperty(kAudioSessionOverrideAudioRoute_Speaker, sizeof(newPlayer),&newPlayer);
    [newPlayer setVolume: 1.0];
    [newPlayer play];
   }
}

Но он не отображает состояние вызова и не запускает ускорение в фоновом режиме во время вызова., и я использовал это из последнего руководства по многозадачности от Apple iOS, но не показывал состояние вызова и акселерометр не работает в фоновом режиме.Возможно ли ощутить ускорение во время разговора и воспроизвести аудиофайл во время разговора или это невозможно в iOS.Или, если это возможно, то какой способ или код сделать это возможным.

1 Ответ

0 голосов
/ 14 октября 2011

iOS не является настоящей многозадачной операционной системой, поэтому в настоящее время вы не можете запускать код акселерометра, пока приложение находится в фоновом режиме.

...