- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试在 Xamarin 表单应用程序中访问我的设备的当前位置我正在使用 James Montemagno 创建的 Geolocation 插件。我在我的 pcl 和平台项目中添加了一个引用,但每次我的应用程序点击粗体代码行时,我都会得到一个 System.Threading.Tasks.TaskCanceledException: A task was canceled.
我还在 android list 中添加了所有必要的设置。
var locator = CrossGeolocator.Current;
locator.DesiredAccuracy = 100;
var position = await locator.GetPositionAsync(timeoutMilliseconds: 10000);
这里是 StackTrace
System.Threading.Tasks.TaskCanceledException: A task was canceled.
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0002d] in /Users/builder/data/lanes/2512/d3008455/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:193 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in /Users/builder/data/lanes/2512/d3008455/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:170 at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in /Users/builder/data/lanes/2512/d3008455/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:142 at System.Runtime.CompilerServices.ConfiguredTaskAwaitable1+ConfiguredTaskAwaiter[TResult].GetResult
1[TResult].GetResult () [0x00000] in /Users/builder/data/lanes/2512/d3008455/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:372 at NetJetApp.Views.Home+d__52.MoveNext () [0x0003e] in c:\svn\Netjet\trunk\NetJetXamarin\NetJet\NetJetApp\NetJetApp\Views\Home.cs:552 at --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/2512/d3008455/source/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x00027] in /Users/builder/data/lanes/2512/d3008455/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:190 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x0002e] in /Users/builder/data/lanes/2512/d3008455/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:170 at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x0000b] in /Users/builder/data/lanes/2512/d3008455/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:142 at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () [0x00000] in /Users/builder/data/lanes/2512/d3008455/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:372 at NetJetApp.Views.Home+d__49.MoveNext () [0x00111] in c:\svn\Netjet\trunk\NetJetXamarin\NetJet\NetJetApp\NetJetAp at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/2512/d3008455p\Views\Home.cs:532 at --- End of stack trace from previous location where exception was thrown ---/source/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143 at System.Runtime.CompilerServices.AsyncMethodBuilderCore.m__0 (System.Object state) [0x00000] in /Users/builder/data/lanes/2512/d3008455/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/AsyncMethodBuilder.cs:994 at Android.App.SyncContext+c__AnonStorey0.<>m__0 () [0x00000] in /Users/builder/data/lanes/2512/d3008455/source/monodroid/src/Mono.Android/src/Android.App/SyncContext.cs:18 at Java.Lang.Thread+RunnableImplementor.Run () [0x0000b] in /Users/builder/data/lanes/2512/d3008455/source/monodroid/src/Mono.Android/src/Java.Lang/Thread.cs:36 at Java.Lang.IRunnableInvoker.n_Run (IntPtr jnienv, IntPtr native__this) [0x00009] in /Users/builder/data/lanes/2512/d3008455/source/monodroid/src/Mono.Android/platforms/android-23/src/generated/Java.Lang.IRunnable.cs:71 at at (wrapper dynamic-method) System.Object:089044c0-4139-4792-8365-3f98e93136b3 (intptr,intptr)
() [0x00000] in
/Users/builder/data/lanes/2512/d3008455/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:580
at
Plugin.Geolocator.GeolocatorImplementation+<GetPositionAsync>d__27.MoveNext
() [0x00597] in
G:\GitHub\Xamarin.Plugins\Geolocator\Geolocator\Geolocator.Plugin.Android\GeolocatorImplementation.cs:195
at --- End of stack trace from previous location where exception was
thrown --- at
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw ()
[0x0000c] in
/Users/builder/data/lanes/2512/d3008455/source/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess
(System.Threading.Tasks.Task task) [0x00027] in
/Users/builder/data/lanes/2512/d3008455/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:190
at
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification
(System.Threading.Tasks.Task task) [0x0002e] in
/Users/builder/data/lanes/2512/d3008455/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:170
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd
(System.Threading.Tasks.Task task) [0x0000b] in
/Users/builder/data/lanes/2512/d3008455/source/mono/external/referencesource/mscorlib/system/runtime/compilerservices/TaskAwaiter.cs:142
at System.Runtime.CompilerServices.TaskAwaiter
最佳答案
在我的测试中,GetPositionAsync 超时到期与 TaskCanceledException 之间存在明确的相关性,因此较大的值可以降低该异常的可能性。我非常感谢你提出的问题,因为它让我更仔细地研究了我们框架中的这段代码。
当然,应用代码需要处理这样一个现实,即设备可能出于各种原因无法在合理的时间内提供位置。
为帮助解决崩溃问题,以下代码位于 Xamarin.Forms PCL 项目中,该项目用于 Xamarin.Android 和 Xamarin.iOS 项目,其应用程序位于应用程序商店中。
除了检查 IsGeolocationEnabled 和异常处理之外,这与您发布的内容没有本质区别,但是通过异常处理和调试语句,希望它可以防止应用程序崩溃并帮助您取得进一步进展。
public static async Task<Position> GetCurrentLocation()
{
// Capture the current location.
Position position = null;
try
{
var locator = CrossGeolocator.Current;
locator.DesiredAccuracy = 50;
// Get the current device position. Leave it null if geo-location is disabled,
// return position (0, 0) if unable to acquire.
if (locator.IsGeolocationEnabled)
{
// Allow ten seconds for geo-location determination.
position = await locator.GetPositionAsync(10000);
}
else
{
Debug.WriteLine("Location could not be acquired, geolocator is disabled.");
}
}
catch (Exception le)
{
// TODO: Log this error.
Debug.WriteLine("Location could not be acquired.");
Debug.WriteLine(le.Message);
Debug.WriteLine(le.StackTrace);
position = new Position() { Latitude = 0, Longitude = 0 };
}
return position;
}
关于android - Xam.Geolocation.Plugin 不适用于我的 Android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34613899/
大多数建议要求在 ios 和 android 中使用 ModernHttpClient,包括 xam 表单。但是 HttpClient 现在在所有平台的 Xamarin Forms 的 system.
我在 DataGridTemplateColumn.CellEditing DataTemplate 中设置了一些东西。我希望当单元格编辑加载并显示模板时,应将键盘焦点赋予模板中的某个控件。 考虑这个
我试过: 和 但它不起作用。 最佳答案 您可以使用: 手势也应该起作用: 参见 here了解更多详情。 关于.net - 有没有一种 xamly 方法可以为 KeyBinding 设置多个修饰
我正在尝试创建一个可以访问相机的 Xamarin 应用程序(我不需要存储任何拍摄的照片或任何东西,只需要能够通过单击按钮启动相机。)我使用的是 Android用于测试应用的设备。 我安装了 Xam.P
我有一个使用 Xamarin Forms 构建的 android 应用程序。为了使用手机的摄像头,我安装了 Xam.Plugin.Media 插件并严格按照 this video 的说明进行操作。 .
是否有任何代码可以从 SelectedItemChanged 事件访问 Datapresenter 的行,以编程方式更改行的背景颜色? 类似的东西: presenterName.FieldLayout
我正在尝试在 Xamarin 表单应用程序中访问我的设备的当前位置我正在使用 James Montemagno 创建的 Geolocation 插件。我在我的 pcl 和平台项目中添加了一个引用,但每
有没有办法在 XAML 判断ListBox是否有数据? 如果没有数据,我想将其 IsVisibile 属性设置为 false。 最佳答案 ListBox 包含一个 HasItems您可以绑定(bind
场景是这样的:一个设备连接到WIFI网络,但是WIFI路由器无法上网。换句话说,设备连接到无法访问互联网的 WIFI 网络。如果我调用 await CrossConnectivity.Current.
我正在尝试在 Xamarin 表单应用程序中使用 James Montemagno 的设置插件,但每次我重新启动我的应用程序时,设置都会恢复为默认设置,不显示我在上次运行应用程序时所做的更改. Add
我将 Xam.Plugin.Media(版本:2.3.0)与 Xamarin Forms for iOS 一起使用。它在 iOS-10 的 iPhone 上运行良好,但是当应用程序在 iOS-10 的
我刚刚使用了 NUGET 并安装了 Xam.Plugin.Media,以便我可以使用我的移动应用拍照。 我按照xamarin组件网站中的示例代码,在按钮的点击事件中写了如下代码: private as
我在我的表单应用程序中使用 Xam.Plugin.Media 来拍照。我获取图像流 (GetStream) 并转换为 byte[] 并存储在我的数据库中。然后我将其用作图像源。在 Android 和
与 C# 相比,Xamarin Forms 中的绑定(bind)似乎更加困惑。我安装了Xam.Plugins.Settings .我只是想绑定(bind)一个 到我的设置之一。这是我的 XAML 中的
当我继续发布新版本以测试引入的连接时,我遇到了警告问题。 我从 NuGet 包安装了 Xam.Plugin.Connectivity using Plugin.Connectivity; 在公共(pu
我是一名优秀的程序员,十分优秀!