Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Xamarin.Forms中关闭活动(静止图像和照相机意图)_C#_Android_Xamarin.forms_Xamarin.android - Fatal编程技术网

C# 如何在Xamarin.Forms中关闭活动(静止图像和照相机意图)

C# 如何在Xamarin.Forms中关闭活动(静止图像和照相机意图),c#,android,xamarin.forms,xamarin.android,C#,Android,Xamarin.forms,Xamarin.android,我正在开发一个应用程序,当我连续拍摄两张照片时,它会工作,相机会关闭 所以我用MediaStore.IntentActionStillImageCamera启动了摄像头 它可以连续拍照 通过Fileobserver,我可以计算出拍了多少张照片 最后一个问题是,当条件为真时,我必须自动关闭相机而不采取任何行动。 但是,我尝试了进程、杀死、活动、结束活动。。。。 都失败了 如何自动关闭摄像头应用程序?在Android 9.0中 -代码修改- 所有代码都在Application.Android中的Xa

我正在开发一个应用程序,当我连续拍摄两张照片时,它会工作,相机会关闭

所以我用MediaStore.IntentActionStillImageCamera启动了摄像头 它可以连续拍照

通过Fileobserver,我可以计算出拍了多少张照片

最后一个问题是,当条件为真时,我必须自动关闭相机而不采取任何行动。 但是,我尝试了进程、杀死、活动、结束活动。。。。 都失败了

如何自动关闭摄像头应用程序?在Android 9.0中

-代码修改-

所有代码都在Application.Android中的Xamarin.Forms中

// MainActivity.cs ( common code is removed )
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
    internal static MainActivity Instance { get; private set; }
    protected override void OnCreate(Bundle savedInstanceState)
    {
        Instance = this;
        global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
        LoadApplication(new App());
    }
}

//OtherClass.cs ( i launch camera app with intent )
public void TakePictureAsync()
{
    Intent intent = new Intent(MediaStore.IntentActionStillImageCamera);
    MainActivity.Instance.StartActivityForResult(intent, 0);
}
//OtherClass.cs ( close activity )

public void ExitActivity()
{
    MainActivity.Instance.FinishActivity(0);
}

尝试使用两种替代方法:

设置完成;使用当前上下文 设置setResultActivity.RESULT.CANCELLED; 尝试将其更改为:

MainActivity.Instance.FinishActivity(0);
我延迟模拟了你的场景,效果很好:

在page.xaml.cs中:

public partial class MainPage: ContentPage
{
    public MainPage()
    {
        InitializeComponent ();

    }

    private void Button_Clicked(object sender, EventArgs e)
    {
        DependencyService.Get<IStartAndCloseCamera>().Open();
    }
}
在Android poject AndroidStartAndCloseCamera.cs中:


我试过了,主应用程序已经完成,但相机仍然在工作。因此,当我关闭相机时,mainapp已初始化@이정원 您在主要活动中是否显示了上述所有代码@이정원 让我们谈谈我不到20岁,所以我不能说话:@이정원 好的,您在哪里调用ExitActivity方法?在您的OtherClass.cs中,从MainPage.xaml.cs中调用ExitActivity按钮,整个进度为1。启动MainPage.xaml2。当我点击按钮时,StartActivityStill\u IMAGE\u CAMERA,3。当我拍照时,用fileobserver 4数一数照片。当fileobserver中的条件为true时,调用ExitActivity
public partial class MainPage: ContentPage
{
    public MainPage()
    {
        InitializeComponent ();

    }

    private void Button_Clicked(object sender, EventArgs e)
    {
        DependencyService.Get<IStartAndCloseCamera>().Open();
    }
}
public interface IStartAndCloseCamera
{
    void Open();
}
[assembly: Dependency(typeof(AndroidStartAndCloseCamera))]
namespace App18.Droid
{
  private int sec = 20;
  System.Threading.Timer _dispatcherTimer;
  class AndroidStartAndCloseCamera : IStartAndCloseCamera
    {
      public void Open()
       {
        TimerCallback timerDelegate = new TimerCallback(Tick);
        Intent intent1 = new Intent(MediaStore.IntentActionStillImageCamera);
        MainActivity.Instance.StartActivityForResult(intent1, 0);
        _dispatcherTimer = new System.Threading.Timer(timerDelegate, null, 0, 1000);
        return true;
       }

    private void Tick(object state)
    {          
       MainActivity.Instance.RunOnUiThread(() =>
        {
            if (sec > 0)
            {
                sec--;
            }
            else
            {
                _dispatcherTimer.Dispose();
                MainActivity.Instance.FinishActivity(0);

            }
        });

    }
   }
}