Je souhaite activer ou désactiver la radio du téléphone dans les zones à faible connectivité. Est-il possible de faire cela? J'utilise motorola ES400 pour le développement.Désactiver ou activer la radio du téléphone dans Windows Mobile 6.5.3
Répondre
Vous devez appeler P/GetDeviceList
et ChangeRadioState
de ossvcs.dll
. Le code pour le faire est un peu long pour un post SO, donc je vous laisse le soin de le faire fonctionner - ce n'est pas très difficile (il y a quelques C code here, et il y en a même C# code on CodeProject, je ne l'ai pas utilisé donc YMMV).
Une autre alternative consiste à utiliser la classe Radios
dans le SDF, qui a déjà ces enveloppés.
Première: importer ces dll
[DllImport("ossvcs.dll", EntryPoint = "#276", CharSet = CharSet.Unicode)]
private static extern uint GetWirelessDevice(ref IntPtr pDevice, int pDevVal);
[DllImport("ossvcs.dll", EntryPoint = "#273", CharSet = CharSet.Unicode)]
private static extern uint ChangeRadioState(ref RDD pDevice, int dwState, int saveAction);
[DllImport("ossvcs.dll", EntryPoint = "#280", CharSet = CharSet.Unicode)]
private static extern uint FreeDeviceList(IntPtr pDevice);
Et voici une copie du code que j'utilise pour le Motorola MC65, qui devrait fonctionner pour la vôtre.
[StructLayout(LayoutKind.Auto)]
struct RADIODEVSTATE
{
public const int RADIODEVICES_ON = 1;
public const int RADIODEVICES_OFF = 0;
}
/*
typedef enum _RADIODEVTYPE
{
RADIODEVICES_MANAGED = 1,
RADIODEVICES_PHONE,
RADIODEVICES_BLUETOOTH,
} RADIODEVTYPE;
*/
[StructLayout(LayoutKind.Auto, CharSet = CharSet.Unicode)]
struct RADIODEVTYPE
{
public const int RADIODEVICES_MANAGED = 1;
public const int RADIODEVICES_PHONE = 2;
public const int RADIODEVICES_BLUETOOTH = 3;
}
/*
typedef enum _SAVEACTION
{
RADIODEVICES_DONT_SAVE = 0,
RADIODEVICES_PRE_SAVE,
RADIODEVICES_POST_SAVE,
} SAVEACTION;
*/
[StructLayout(LayoutKind.Auto, CharSet = CharSet.Unicode)]
struct SAVEACTION
{
public const int RADIODEVICES_DONT_SAVE = 0;
public const int RADIODEVICES_PRE_SAVE = 1;
public const int RADIODEVICES_POST_SAVE = 2;
}
/*
struct RDD
{
RDD() : pszDeviceName(NULL), pNext(NULL), pszDisplayName(NULL) {}
~RDD() { LocalFree(pszDeviceName); LocalFree(pszDisplayName); }
LPTSTR pszDeviceName; // Device name for registry setting.
LPTSTR pszDisplayName; // Name to show the world
DWORD dwState; // ON/off/[Discoverable for BT]
DWORD dwDesired; // desired state - used for setting registry etc.
RADIODEVTYPE DeviceType; // Managed, phone, BT etc.
RDD * pNext; // Next device in list
}; //radio device details
*/
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
struct RDD
{
[MarshalAs(UnmanagedType.LPTStr)]
public string pszDeviceName;
[MarshalAs(UnmanagedType.LPTStr)]
public string pszDisplayName;
public uint dwState;
public uint dwDesired;
public int DeviceType;
public IntPtr pNext;
}
private static bool SetDeviceState(int dwDevice, int dwState)
{
var pDevice = new IntPtr(0);
//Get the first wireless device
var result = GetWirelessDevice(ref pDevice, 0);
if (result != 0)
return false;
//While we're still looking at wireless devices
while (pDevice != IntPtr.Zero)
{
//Marshall the pointer into a C# structure
var device = (RDD)System.Runtime.InteropServices.Marshal.PtrToStructure(pDevice, typeof(RDD));
//If this device is the device we're looking for
if (device.DeviceType == dwDevice)
{
//Change the state of the radio
result = ChangeRadioState(ref device, dwState, SAVEACTION.RADIODEVICES_PRE_SAVE);
}
//Set the pointer to the next device in the linked list
pDevice = device.pNext;
}
//Free the list of devices
FreeDeviceList(pDevice);
//Turning off radios doesn't correctly report the status, so return true anyway.
return result == 0 || dwState == RADIODEVSTATE.RADIODEVICES_OFF;
}
Et pour éteindre le téléphone vous suffit d'appeler la méthode suivante:
/// <summary>
/// Disables the phone radio on device
/// </summary>
public void DisablePhoneRadio()
{
SetDeviceState(RADIODEVTYPE.RADIODEVICES_PHONE, RADIODEVSTATE.RADIODEVICES_OFF);
}
Il suffit donc utiliser toutes les instructions conditionnelles sont nécessaires et appeler DisablePhoneRadio() chaque fois que vous devez le désactiver, et lors de l'activation du téléphone la radio simplement Swat le RADIODEVSTATE.RADIODEVICES_OFF avec RADIODEVSTATE.RADIODEVICES_ON comme ceci:
/// <summary>
/// Enables the phone radio on device
/// </summary>
public void EnablePhoneRadio()
{
SetDeviceState(RADIODEVTYPE.RADIODEVICES_PHONE, RADIODEVSTATE.RADIODEVICES_ON);
}
Hope this helps!
Vérifiez également ce fil. Intéressant prendre des appels enfilés et surveiller l'état de connectivité de l'appareil et allumer et éteindre la radio cellulaire sur Windows Mobile.
http://www.codeproject.com/Messages/4117749/Re-Csharp-Wrapper.aspx
- 1. Préprocesseur Windows Mobile 6.5.3
- 2. CustomListView dans Windows Mobile 6.5.3
- 3. comment désactiver/activer la radio WIFI dans Windows-CE?
- 4. jQuery Mobile - Activer/désactiver l'activation d'un bouton radio
- 5. Activer ou désactiver la visibilité de l'élément par radio
- 6. Activer/Désactiver la sélection sur le contrôle du bouton radio
- 7. développer une application Java sur Microsoft Windows Mobile 6.5.3 Professional
- 8. Comment désactiver le clavier du téléphone Windows?
- 9. activer/désactiver sélectionner si radio vérifié
- 10. Windows Forms: Activer/Désactiver WS_CLIPCHILDREN
- 11. Comment activer ou désactiver les boutons dans Windows Phone 7?
- 12. comment désactiver et activer la sélection dans jQuery mobile
- 13. Désactiver tout le reste sur la tablette du téléphone Windows
- 14. Comment obtenir la hauteur de la barre de menu inférieure de Windows Mobile 6.5.3
- 15. Téléphone mobile Windows pour application professionnelle - ou solution de désynchronisation
- 16. Y at-il une commande ou api peut activer/désactiver la fonction wifi sur Windows?
- 17. Activer ou désactiver les extensions
- 18. Désactiver ou activer l'action dans jqgrid
- 19. Activer/désactiver Windows NT-Server sur Remotemachine
- 20. Windows Mobile: utilisation de l'appareil photo du téléphone avec C#
- 21. Bloquer l'utilisation du téléphone sur un appareil Windows Mobile 5
- 22. Récupérer le numéro de téléphone Windows Mobile
- 23. Maintenez vivant Windows Mobile 6 téléphone
- 24. Activer ou désactiver le bouton basé sur le bouton radio ne fonctionne pas dans jQuery?
- 25. Activer/désactiver google analytics - désactiver/activer
- 26. Validation du numéro de mobile ou de téléphone en javascript
- 27. Windows Mobile 6.5 MenuBar
- 28. Activer ou désactiver l'écran PatternLock à partir du code
- 29. Activer ou désactiver l'élément d'étiquette en javascript
- 30. Activer ou désactiver dynamiquement les éléments du menu contextuel
Mis à part la réponse ci-dessous, une autre option est d'utiliser le SDK de l'appareil du fournisseur (qui appelle Moto leur EMDK). – tcarvin