Mon expérience avec le GPS est qu'il faut un certain temps pour obtenir une solution (au moins sur mon appareil), donc je pense que vous devez garder le téléphone de état suspendu tout le temps. Quand j'ai joué avec mon appareil, j'ai remarqué que je devais utiliser le lecteur de musique intégré pour obtenir une solution lorsque l'écran est éteint. Comme Ratchetr a souligné PowerPolicyNotify (PPN_UNATTENDEDMODE, TRUE) semble être le bon moyen d'empêcher le "lecteur de musique requis". Edit: Il semble également que vous devez utiliser SetPowerRequirement/ReleasePowerRequirement sur certains périphériques.
Voici un exemple C#:
public const int PPN_UNATTENDEDMODE = 0x0003;
public const int POWER_NAME = 0x00000001;
public const int POWER_FORCE = 0x00001000;
[DllImport("coredll.dll")]
public static extern bool PowerPolicyNotify(int dwMessage, bool dwData);
[DllImport("coredll.dll", SetLastError = true)]
public static extern IntPtr SetPowerRequirement(string pvDevice, CedevicePowerStateState deviceState, uint deviceFlags, string pvSystemState, ulong stateFlags);
[DllImport("coredll.dll", SetLastError = true)]
public static extern int ReleasePowerRequirement(IntPtr hPowerReq);
public enum CedevicePowerStateState : int
{
PwrDeviceUnspecified = -1,
D0 = 0,
D1,
D2,
D3,
D4,
}
//Keep the GPS and device alive:
PowerPolicyNotify(PPN_UNATTENDEDMODE, true)
IntPtr gpsPowerHandle = SetPowerRequirement("gpd0:", CedevicePowerStateState.D0, POWER_NAME | POWER_FORCE, null, 0);
//Call before exiting your app:
ReleasePowerRequirement(gpsPowerHandle);
PowerPolicyNotify(PPN_UNATTENDEDMODE, false);
la réponse la plus claire sur le web !!! ça marche super .. j'ai remarqué qu'il garde le wifi. – GorillaApe