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