小编Bob*_*obh的帖子

如何从我的应用程序在后台启动谷歌地图应用程序

首先请注意,我正在使用Xamarin for Android,因此Android Java存在轻微的语法差异.我正在从我自己的Android应用程序中的活动启动谷歌地图应用程序.我已经想出了如何依次通过转向导航模式启动它,提供语音引导方向,跳过它通常默认的常规活动.但是,默认的地图活动确实会非常短暂地出现,然后再转向活动.我可以忍受这一点.

挑战在于用户必须多次点击后退按钮才能返回我的应用程序,而不是一次又一次地从转弯活动直接回到我的应用程序,这是我更喜欢的.我知道它为什么这样做,这很自然.我的应用程序有什么方法可以在语音导航模式下启动地图,但是在后台启动它可以让我的应用程序保持在前台吗?

我已经看到,如果我使用我的后退按钮返回我的应用程序,转弯的语音方向将停止.如果我使用手机底部的窗口图标查看我最近的所有应用程序,并在启动地图应用程序后将其带到前台,语音指示仍在继续,这就是我想要的,它甚至可以让我通知覆盖在我的上方应用程序很棒.当他想将我的应用程序带到前台时,我不想告诉用户使用该窗口图标,我不希望他使用后退按钮,因为它会停止语音指示.所以这是一个艰难的地方,我不会感到惊讶,如果这只是你必须忍受的那些电话行为之一,但我希望任何人都可以提供任何建议.甚至可能使它成为片段应用程序的一部分?但是,我只是得到他们的地图,还是我会得到完整的语音指示功能?我以为我只能从他们安装的应用程序中获取,而不是他们的库.谢谢阅读.

这是我目前的代码

public void StartNavigation(string lat, string lng)
{
    String strUri = "google.navigation:q=" + lat + "," + lng;
    Intent Intent = new Intent(Android.Content.Intent.ActionView, Android.Net.Uri.Parse(strUri));
    //Intent.SetClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
    Intent.SetPackage("com.google.android.apps.maps");
    Application.Context.StartActivity(Intent);
}
Run Code Online (Sandbox Code Playgroud)

android google-maps xamarin

12
推荐指数
1
解决办法
636
查看次数

如何在 Xamarin 中使用 SetAction

我正在尝试在 Android 6.0 或更高版本上将我的应用列入白名单。我已经看到 Android 代码可以做到这一点,但它没有在 Xamarin 中进行翻译,Xamarin 文档只告诉您 SetAction 将一个字符串作为参数,然后是指向 Android 文档的链接,但最终结果并不相同。

这是 Xamarin 不接受的 Android 代码

intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
Run Code Online (Sandbox Code Playgroud)

它不喜欢设置。我已经阅读了 Xamarin 文档,它说 SetAction() 需要一个字符串 arg,这就是他们所说的所有内容,并将您指向 Android 文档。

注意,我在 javascript 接口类中调用它,我尝试了这个,但它不起作用

class MyJSInterface : Java.Lang.Object
    {
    Context context;
    public MyJSInterface(Context context)
        {
            this.context = context;
        }
    [Export]
    [JavascriptInterface]
    public void SetDozeOptimization()
        {
            Toast.MakeText(context, "launch optimization", ToastLength.Short).Show();

            setDozeComplete = false;
            Intent intent = new Intent();
            String packageName = context.PackageName;
            PowerManager pm = (PowerManager)context.GetSystemService(Context.PowerService);
            if (pm.IsIgnoringBatteryOptimizations(packageName))
                intent.SetAction("ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS");
            else
            {
                intent.SetAction("ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS");
                intent.SetData(Android.Net.Uri.Parse("package:" + packageName)); …
Run Code Online (Sandbox Code Playgroud)

c# android xamarin.android xamarin

2
推荐指数
1
解决办法
1844
查看次数

SetTimeout 只在鼠标按下时执行一次

我想要做的就是将框中显示的数字增加 1,并且只要鼠标按下,它就会每 100 毫秒执行一次。该函数会执行,但无论按住鼠标多长时间都不会执行超过一次。每次在此元素上发生 mousedown 事件时,它只会将变量增加 1,我可以在框中看到这一点,而我希望看到只要鼠标保持按下状态,数字就会继续快速增加。是否有任何用于 mouseup 事件的代码可以阻止此 mousedown 事件继续在 setTimeout 中执行该函数,或者是否存在某种我遗漏的规则?奇怪的。

var mouseDownCount = 0;

$("#addButton").mousedown(function () { startMouseCount(); }); 

function startMouseCount() {
  $("mouseCount").html(mousedownCount)

  mdcTimer = window.setTimeout(function () {
    mousedownCount++;
    $("#mouseCount").html(mousedownCount);
  }, 100);

  return false;
}
Run Code Online (Sandbox Code Playgroud)

javascript jquery

-3
推荐指数
1
解决办法
661
查看次数