Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.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
Android 表单摄像机控制访问依赖服务_Android_Ios_Xamarin.forms - Fatal编程技术网

Android 表单摄像机控制访问依赖服务

Android 表单摄像机控制访问依赖服务,android,ios,xamarin.forms,Android,Ios,Xamarin.forms,我正在寻找Visual Studio的工作示例Xamarin.Forms解决方案,该解决方案将展示如何使用DependencyService界面访问Android和iOS设备的摄像头控件。我正在调用在可移植类库中通过按钮单击事件拍摄照片的功能 我需要能够限制设备上某些摄像头控件的使用,同时允许将使用我正在使用的应用程序的用户访问其他摄像头控件,然后他们才能拍照并保存 我尝试过几种解决方案,包括在:找到的解决方案,但都不起作用。是访问设备内置摄像头功能的一个很好的例子 听起来你的要求有点不同。您需

我正在寻找Visual Studio的工作示例
Xamarin.Forms
解决方案,该解决方案将展示如何使用
DependencyService
界面访问Android和iOS设备的摄像头控件。我正在调用在可移植类库中通过按钮单击事件拍摄照片的功能

我需要能够限制设备上某些摄像头控件的使用,同时允许将使用我正在使用的应用程序的用户访问其他摄像头控件,然后他们才能拍照并保存

我尝试过几种解决方案,包括在:找到的解决方案,但都不起作用。

是访问设备内置摄像头功能的一个很好的例子

听起来你的要求有点不同。您需要更多地控制相机页面的UI。你可以考虑制作自己的自定义相机页面。这方面有一个很好的例子。它实现了一个相机预览页面,您可以在其中创建UI控件。这将使用自定义渲染器

// The control used in shared code
public class CameraPreview : View
{
  public static readonly BindableProperty CameraProperty = BindableProperty.Create (
    propertyName: "Camera",
    returnType: typeof(CameraOptions),
    declaringType: typeof(CameraPreview),
    defaultValue: CameraOptions.Rear);

  public CameraOptions Camera {
    get { return (CameraOptions)GetValue (CameraProperty); }
    set { SetValue (CameraProperty, value); }
  }
}

// Renderer for iOS, platform specific project
[assembly: ExportRenderer (typeof(CameraPreview), 
typeof(CameraPreviewRenderer))]
namespace CustomRenderer.iOS
{
    public class CameraPreviewRenderer : ViewRenderer<CameraPreview, UICameraPreview>
    {
        UICameraPreview uiCameraPreview;

        protected override void OnElementChanged (ElementChangedEventArgs<CameraPreview> e)
        {
            base.OnElementChanged (e);

            if (Control == null) {
                uiCameraPreview = new UICameraPreview (e.NewElement.Camera);
                SetNativeControl (uiCameraPreview);
            }
            if (e.OldElement != null) {
                // Unsubscribe
                uiCameraPreview.Tapped -= OnCameraPreviewTapped;
            }
            if (e.NewElement != null) {
                // Subscribe
                uiCameraPreview.Tapped += OnCameraPreviewTapped;
            }
        }

        void OnCameraPreviewTapped (object sender, EventArgs e)
        {
            if (uiCameraPreview.IsPreviewing) {
                uiCameraPreview.CaptureSession.StopRunning ();
                uiCameraPreview.IsPreviewing = false;
            } else {
                uiCameraPreview.CaptureSession.StartRunning ();
                uiCameraPreview.IsPreviewing = true;
            }
        }
        ...
    }
}
//共享代码中使用的控件
公共类CameraPreview:视图
{
公共静态只读BindableProperty CameraProperty=BindableProperty.Create(
propertyName:“摄像机”,
returnType:typeof(摄像机选项),
declaringType:typeof(CameraPreview),
默认值:CameraOptions.Rear);
公共摄像机选项摄像机{
获取{return(CameraOptions)GetValue(CameraProperty);}
set{SetValue(CameraProperty,value);}
}
}
//iOS渲染器,特定于平台的项目
[组件:导出器(类型)(CameraPreview),
类型(CameraPreviewRenderer))]
命名空间CustomRenderer.iOS
{
公共类CameraPreviewRenderer:ViewRenderer
{
UICameraPreview UICameraPreview;
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
碱基。一个元素改变(e);
if(Control==null){
uiCameraPreview=新的uiCameraPreview(e.NewElement.Camera);
SetNativeControl(uiCameraPreview);
}
if(e.OldElement!=null){
//退订
uiCameraPreview.Tapped-=onCamerapReview-Tapped;
}
if(例如NewElement!=null){
//订阅
uiCameraPreview.Tapped+=OnCameraPreviewTapped;
}
}
void OnCameraPreviewTapped(对象发送方,事件参数e)
{
if(uiCameraPreview.IsPreviewing){
uiCameraPreview.CaptureSession.StopRunning();
uiCameraPreview.IsPreviewing=false;
}否则{
uiCameraPreview.CaptureSession.StartRunning();
uiCameraPreview.IsPreviewing=true;
}
}
...
}
}
看看上面其他平台的链接。还有另一个制作自定义相机页面并在中捕获图像的示例。您可以在每个渲染器中看到一个按钮用于处理图像捕获。这使您能够更好地控制用户可以/不能做什么


如果你在你的相机中包含更多关于你需要限制的具体信息,我可能可以编辑更多细节

你是如何尝试你找到的解决方案的?你能展示你的项目的一些错误信息和一些关键代码吗?嗨,约翰!谢谢你的回复!我决定使用在上找到的自定义页面。我仍然需要帮助,在android项目中添加一个滑动类型控件,用于相机缩放,将纵横比设置为4:3,并使相机仅在横向模式下拍照。