【发布时间】:2019-10-10 13:17:00
【问题描述】:
我正在开发一个 Xamarin Forms 应用程序,该应用程序使用蓝牙快门点击器来拍照。目前,蓝牙快门在被点击时会激活音量增大/减小按钮。我试图拦截音量按钮,以便在单击答题器时打开设备摄像头。
我正在尝试让 Android 版本正常工作。 我可以在我的 MainActivity.cs 文件中成功拦截我的 Android 代码中的音量按钮。我想我必须使用依赖服务,以便我的 CameraButton_Clicked 事件由音量按钮触发,但我不知道如何正确执行此操作。任何帮助将不胜感激。
MainActivity.CS:
//override the volume up/down buttons for bluetooth shutter clicker
public override bool OnKeyUp(Keycode keyCode, KeyEvent e)
{
if (keyCode == Keycode.VolumeDown)
{
return true;
}
if (keyCode == Keycode.VolumeUp)
{
return true;
}
return base.OnKeyUp(keyCode, e);
}
public override bool OnKeyDown(Keycode keyCode, KeyEvent e)
{
if (keyCode == Keycode.VolumeDown)
{
return true;
}
if (keyCode == Keycode.VolumeUp)
{
return true;
}
return base.OnKeyDown(keyCode, e);
}
界面:
namespace MyApp
{
public interface IBluetoothClicker
{
object GetVolumeOverride();
}
}
BluetoothClicker_Droid.cs:
[assembly: Xamarin.Forms.Dependency (typeof (BluetoothClicker_Droid))]
namespace MyApp.Droid
{
public class BluetoothClicker_Droid: IBluetoothClicker
{
public BluetoothClicker_Droid ()
{
}
public object GetVolumeOverride()
{
//CameraButton_Clicked = true;
return true;
}
}
}
CameraPage.xaml.cs:
public CameraPage()
{
InitializeComponent();
CameraImage.Source = "CameraImage.png";
TakePhotoButton.Clicked += CameraButton_Clicked; //opens camera
Func<object> func = () =>
{
var obj = DependencyService.Get<IBluetoothClicker>().GetVolumeOverride();
//obj += CameraButton_Clicked;
return obj;
};
}
【问题讨论】:
标签: c# .net xamarin xamarin.forms xamarin.android