mirror of https://github.com/emgucv/emgucv.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
4.1 KiB
125 lines
4.1 KiB
//----------------------------------------------------------------------------
|
|
// Copyright (C) 2004-2017 by EMGU Corporation. All rights reserved.
|
|
//----------------------------------------------------------------------------
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
using Android.App;
|
|
using Android.Content;
|
|
using Android.OS;
|
|
using Android.Preferences;
|
|
using Android.Runtime;
|
|
using Android.Util;
|
|
using Android.Views;
|
|
using Android.Widget;
|
|
using Emgu.CV;
|
|
using Emgu.CV.Util;
|
|
|
|
namespace AndroidExamples
|
|
{
|
|
public class OpenCLDialogPreference: DialogPreference
|
|
{
|
|
public OpenCLDialogPreference(Context context, IAttributeSet attrs)
|
|
:base(context, attrs )
|
|
{
|
|
|
|
}
|
|
|
|
private RadioGroup _openCLRadioGroup;
|
|
|
|
protected override View OnCreateDialogView()
|
|
{
|
|
|
|
LayoutInflater inflator = LayoutInflater.FromContext(this.Context);
|
|
View dialog = inflator.Inflate(Resource.Layout.opencl_preference, null);
|
|
|
|
_openCLRadioGroup = dialog.FindViewById<RadioGroup>(Resource.Id.opencl_preference_radio_group);
|
|
|
|
AppPreference preference = new AppPreference();
|
|
|
|
RadioButton checkedButton = null;
|
|
RadioButton cpuButton = new RadioButton(this.Context);
|
|
cpuButton.Text = "CPU (no OpenCL)";
|
|
|
|
_openCLRadioGroup.AddView(cpuButton);
|
|
//int selectedIdx = -1;
|
|
if (preference.UseOpenCL == false)
|
|
{
|
|
checkedButton = cpuButton;
|
|
}
|
|
cpuButton.Click += (sender, args) =>
|
|
{
|
|
preference.UseOpenCL = false;
|
|
//Toast.MakeText(this.Context, "cpu clicked", ToastLength.Short).Show();
|
|
};
|
|
|
|
|
|
String selectedDeviceName = preference.OpenClDeviceName;
|
|
if (selectedDeviceName == null && CvInvoke.HaveOpenCL && preference.UseOpenCL)
|
|
{
|
|
selectedDeviceName = Emgu.CV.Ocl.Device.Default.Name;
|
|
}
|
|
|
|
if (CvInvoke.HaveOpenCL)
|
|
using (VectorOfOclPlatformInfo oclPlatformInfos = Emgu.CV.Ocl.OclInvoke.GetPlatformsInfo())
|
|
{
|
|
if (oclPlatformInfos.Size > 0)
|
|
{
|
|
for (int i = 0; i < oclPlatformInfos.Size; i++)
|
|
{
|
|
Emgu.CV.Ocl.PlatformInfo platformInfo = oclPlatformInfos[i];
|
|
|
|
for (int j = 0; j < platformInfo.DeviceNumber; j++)
|
|
{
|
|
Emgu.CV.Ocl.Device device = platformInfo.GetDevice(j);
|
|
RadioButton deviceButton = new RadioButton(this.Context);
|
|
deviceButton.Text = "OpenCL: " + device.Name;
|
|
|
|
if (preference.UseOpenCL == true && device.Name.Equals(selectedDeviceName))
|
|
{
|
|
checkedButton = deviceButton;
|
|
}
|
|
_openCLRadioGroup.AddView(deviceButton);
|
|
|
|
//counter++;
|
|
deviceButton.Click += (sender, args) =>
|
|
{
|
|
preference.UseOpenCL = true;
|
|
preference.OpenClDeviceName = device.Name;
|
|
//Toast.MakeText(this.Context, device.Name + " clicked", ToastLength.Short).Show();
|
|
};
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (checkedButton != null)
|
|
_openCLRadioGroup.Check(checkedButton.Id);
|
|
//_openCLRadioGroup.in
|
|
/*
|
|
_openCLToggleButton.Checked = preference.UseOpenCL;
|
|
|
|
_openCLToggleButton.CheckedChange += (sender, args) =>
|
|
{
|
|
bool isChecked = args.IsChecked;
|
|
|
|
if (isChecked && !CvInvoke.HaveOpenCL)
|
|
{
|
|
_openCLToggleButton.Checked = false;
|
|
Toast.MakeText(Context, "No OpenCL compatible device found.", ToastLength.Long).Show();
|
|
isChecked = false;
|
|
}
|
|
|
|
preference.UseOpenCL = isChecked;
|
|
};
|
|
*/
|
|
return dialog;
|
|
}
|
|
|
|
|
|
}
|
|
}
|