每当我打开或关闭移动设备中的 gps 时,我都需要更改图标颜色。目前,当我打开或关闭gps时,我正在使用Ti.Geolocation.addEventListener('location',{});
进行触发。当我在gps上时它会触发,但是当我关闭gps时它不会触发。我在 android 和 iOS 中都需要此功能,它在两者中都不起作用。
为什么当我们关闭gps时这个api没有触发?任何其他解决方法。
答案 0 :(得分:0)
我认为他们没有这样的事件监听器可以在GPS关闭时触发,而是你可以尝试下面的代码并看看它是否能解决你的目的:
exports.testGPS = function(_callback) {
Ti.Geolocation.purpose = "Recieve User Location";
Ti.Geolocation.accuracy = Titanium.Geolocation.ACCURACY_BEST;
if (_callback && typeof(_callback)==='function') {
Ti.Geolocation.getCurrentPosition(function(e) {
_callback ((e.error) ? false: true);
});
}
}
您可以根据需要更新此功能。它会 当它获得并且在恢复当前时出错时通过false 设备的位置,因此我们可以得出GPS的结论 设置已关闭。
祝你好运, 干杯强>
您可以使用广播接收器执行此操作,请参阅以下内容:
更改tiapp.xml中的清单
<intent-filter>
<action android:name="android.location.PROVIDERS_CHANGED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
创建广播接收器并在index.js中注册
var bc = Ti.Android.createBroadcastReceiver({
onReceived: function() {
Ti.API.info('Handling broadcast.');
}
});
Ti.Android.registerBroadcastReceiver(bc, [Ti.Android.ACTION_PROVIDER_CHANGED]);
答案 1 :(得分:0)
如果你听位置转换器
Ti.Geolocation.addEventListener('location',function(response){});
你有一个事件,当位置改变时和gps设置开或关
当你关闭gps时,你有这个回应是
Android上的:
{
"type": "location",
"source": {
"bubbleParent": true,
"hasCompass": true,
"__propertiesDefined__": true,
"preferredProvider": "gps",
"Android": {
"bubbleParent": true,
"manualMode": false,
"apiName": "Ti.Geolocation.Android"
},
"lastGeolocation": "{\"latitude\":36.4880079,\"longitude\":2.8170365,\"altitude\":0,\"accuracy\":42.5,\"heading\":0,\"speed\":0,\"timestamp\":1488278209059}",
"_events": {
"location": {}
},
"locationServicesEnabled": false,
"accuracy": 1,
"apiName": "Ti.Geolocation"
},
"bubbles": false,
"success": true,
"code": 0,
"error": "network is disabled",
"cancelBubble": false
}
iOS上的
{
"bubbles": true,
"type": "location",
"source": {
"preferredProvider": null
},
"success": false,
"code": 1,
"error": "location",
"cancelBubble": false
}
当应用程序恢复时,iOS上的事件被触发,在我的情况下,我在应用程序处于后台时跟踪GPS,在tiapp.xml中添加此内容
<key>UIBackgroundModes</key>
<array>
<string>location</string>
</array>
你可以找到gps状态
for response.source.locationServicesEnabled
中的android
并在iOS上检查状态或权限response.error
if(response.error){
if(!Ti.Geolocation.locationServicesEnabled){
//GPS desactivate
}else if(Ti.Geolocation.hasLocationPermissions(Ti.Geolocation.AUTHORIZATION_ALWAYS) || Ti.Geolocation.hasLocationPermissions(Ti.Geolocation.AUTHORIZATION_WHEN_IN_USE)){
//no authorised
}
}
如果您想要强制更改图标颜色,即使您没有位置事件,请在窗口的onFocus事件中检查GPS状态和自动化,它包含图标