用于检查gps的phonegap插件是打开还是关闭

时间:2016-06-06 09:14:24

标签: cordova gps phonegap-plugins

我一直试图找出一个插件,如果在应用运行期间打开或关闭gps,它会触发。所以我启动了应用程序并关闭了gps,但后来我将其打开。

我试过了

cordova.plugins.diagnostic

cordova-plugin-geolocation

但他们没有采取某种约束措施。在开始时我可以查看它是打开还是关闭但是当应用程序运行时我无法

1 个答案:

答案 0 :(得分:2)

cordova-diagnostic-plugin提供registerLocationStateChangeHandler(),允许您注册一个回调函数,以便在位置状态发生变化时调用 - 我相信这应该满足您对"一个将触发的插件的要求如果在应用运行期间打开或关闭gps":

cordova.plugins.diagnostic.registerLocationStateChangeHandler(function(state){
    if((device.platform === "Android" && state !== cordova.plugins.diagnostic.locationMode.LOCATION_OFF)
        || (device.platform === "iOS) && ( state === cordova.plugins.diagnostic.permissionStatus.GRANTED
            || state === cordova.plugins.diagnostic.permissionStatus.GRANTED_WHEN_IN_USE
    ))){
        console.log("Location is available");
    }
});

然后

public static string ConvertToXML<T>(T objectToConvert)
    {
        XmlDocument doc = new XmlDocument();
        XmlNode root = doc.CreateNode(XmlNodeType.Element, objectToConvert.GetType().Name, string.Empty);
        doc.AppendChild(root);
        XmlNode childNode;

        PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));
        foreach (PropertyDescriptor prop in properties)
        {
            if (prop.GetValue(objectToConvert) != null)
            {
                childNode = doc.CreateNode(XmlNodeType.Element, prop.Name, string.Empty);
                childNode.InnerText = prop.GetValue(objectToConvert).ToString();
                root.AppendChild(childNode);
            }
        }            

        return doc.OuterXml;
    }