9
votes

Comment arrêter MPMusicplayPonTroller contre l'activation du verrouillage de l'écran

J'ai une application qui oblige l'écran iPhone à rester actif (ou non, en fonction du choix de l'utilisateur). Je l'ai fait en désactivation de la minuterie d'inactivité de l'application, qui fonctionne bien et dandy jusqu'à ce que je commence à jouer aux médias via le mpmusicplayPontroller. En raison d'un bogue dans le SDK, cela réelle ensuite la minuterie de veille sans aucun moyen apparent de le désactiver.

mon flux d'applications est:

  1. application commence
  2. L'écran reste sur
  3. <... Le temps passe ...>
  4. Play Fichier audio
  5. Le chronomètre oisif commence par
  6. L'écran s'éteint

    J'ai un fichier audio vide jouant en arrière-plan pour arrêter le téléphone dans un sommeil profond, mais j'aimerais vraiment garder l'écran déverrouillé aussi.

    Est-ce que quelqu'un a réussi à trouver une solution de contournement pour cela?


3 commentaires

Avez-vous défini le idletimerdisabled sur oui ?


Ouais. L'idletimerdisabled est réinitialisée à NO lorsque MPMusicplayController commence et que vous ne pouvez plus le désactiver.


Avez-vous de la chance avec ce problème? Essayé toutes les solutions mais aucun d'entre eux n'a travaillé.


4 Réponses :


1
votes

Vous devriez simplement éteindre la minuterie inactive. Ce que je fais habituellement dans une zone de vision qui doit rester "éveillé" est-ce: xxx

Cela s'assurera que l'écran ne sera pas verrouillé en raison de l'inactivité de l'utilisateur.


1 commentaires

ST3FAN, j'ai fait cela sur l'application Startup, vérifié par le fait que le téléphone ne dort pas avant que la musique commence à jouer. Comme je l'ai dit, dès que le mpmusicplayController est activé, il réprouve la minuterie inactive et vous ne pouvez plus le désactiver



1
votes

J'ai trouvé une solution à ce problème. Invoquez une méthode qui désactive l'idlelémer en environ 5 secondes après avoir commencé à jouer à la musique. C'est un peu de hack, mais c'est une solution de contournement.

[[SoundEngine mainEngine] playMusic];

[self performSelector:@selector(setIdleTimeDisabled) withObject:nil afterDelay:5.0];

- (void) setIdleTimeDisabled {
[UIApplication sharedApplication].idleTimerDisabled = YES;
NSLog(@"Setting idleTimer to TRUE");}


0 commentaires

5
votes

J'ai eu un problème de similiaire et j'ai trouvé un correctif pour cela. Le correctif peut également fonctionner pour vous aussi:

J'appelle une méthode périodiquement (toutes les 10 secondes), qui définit d'abord idletalmerdisabled d'abord à non, puis sur Oui. P>

- (void)calledEveryTenSeconds
{
    [UIApplication sharedApplication].idleTimerDisabled = NO;
    [UIApplication sharedApplication].idleTimerDisabled = YES;
}


1 commentaires

Henning77, merci pour ça !! J'ai réussi à le faire fonctionner dans ma nouvelle application à l'aide de votre méthode. Beaucoup de personnes ont mal compris la question / problème de manière normale comment désactiver l'idlétaller. Mais il s'agit d'après avoir joué un problème de mpmusicPlayer. L'idletimerdisabled = non; est en effet critique. Cela ne fonctionnera pas sans elle.



0
votes
let player = MPMusicPlayerController.applicationMusicPlayer()

player.setQueueWithStoreIDs(["some id"])

player.play()

player.pause()

0 commentaires