+++ /dev/null
-/*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-using System;
-using System.ComponentModel;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using static Interop.CameraDeviceManager;
-
-namespace Tizen.Multimedia
-{
- /// <summary>
- /// Provides data for the <see cref="CameraDeviceManager.DeviceListChanged"/> event.
- /// </summary>
- /// <since_tizen> 9 </since_tizen>
- [EditorBrowsable(EditorBrowsableState.Never)]
- public class CameraDeviceListChangedEventArgs : EventArgs
- {
- internal CameraDeviceListChangedEventArgs(ref CameraDeviceListStruct deviceList)
- {
- CameraDeviceInfo = CameraDeviceManager.GetDeviceInformation(deviceList);
- }
-
- /// <summary>
- /// Gets the camera device info.
- /// </summary>
- /// <since_tizen> 9 </since_tizen>
- [EditorBrowsable(EditorBrowsableState.Never)]
- public ReadOnlyCollection<CameraDeviceInformation> CameraDeviceInfo { get; }
- }
-}
{
Native.Initialize(out _handle).ThrowIfFailed("Failed to initialize CameraDeviceManager");
- RegisterCallbacks();
+ RegisterDeviceConnectionChangedCallback();
}
/// <summary>
}
/// <summary>
- /// An event that occurs when there is a change in the available camera device.
- /// </summary>
- /// <since_tizen> 9 </since_tizen>
- [EditorBrowsable(EditorBrowsableState.Never)]
- public event EventHandler<CameraDeviceListChangedEventArgs> DeviceListChanged;
-
- /// <summary>
/// An event that occurs when camera device is connected or disconnected.
/// </summary>
/// <since_tizen> 9 </since_tizen>
}
}
- private void RegisterCallbacks()
- {
- RegisterDeviceListChangedCallback();
- RegisterDeviceConnectionChangedCallback();
- }
-
- private int listCallbackId = 0;
- private void RegisterDeviceListChangedCallback()
- {
- Native.DeviceListChangedCallback callback = (ref Native.CameraDeviceListStruct deviceList, IntPtr userData) =>
- {
- DeviceListChanged?.Invoke(this, new CameraDeviceListChangedEventArgs(ref deviceList));
- };
-
- Native.SetDeviceListChangedCallback(Handle, callback, IntPtr.Zero, out listCallbackId).
- ThrowIfFailed("Failed to set device list changed callback");
-
- Log.Info(CameraLog.Tag, $"callback Id : {listCallbackId}");
- }
-
- private void UnregisterDeviceListChangedCallback()
- {
- Log.Info(CameraLog.Tag, $"callback Id : {listCallbackId}");
-
- Native.UnsetDeviceListChangedCallback(Handle, listCallbackId).
- ThrowIfFailed("Failed to unset device list changed callback");
- }
-
private int connectionCallbackId = 0;
private void RegisterDeviceConnectionChangedCallback()
{
if (_handle != IntPtr.Zero)
{
- UnregisterDeviceListChangedCallback();
UnregisterDeviceConnectionChangedCallback();
Native.Deinitialize(_handle);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
internal delegate void DeviceConnectionChangedCallback(ref CameraDeviceStruct device, bool status, IntPtr userData);
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- internal delegate void DeviceListChangedCallback(ref CameraDeviceListStruct deviceList, IntPtr userData);
-
[DllImport(Libraries.Camera, EntryPoint = "camera_device_manager_initialize")]
internal static extern CameraError Initialize(out IntPtr handle);
[DllImport(Libraries.Camera, EntryPoint = "camera_device_manager_get_device_list")]
internal static extern CameraError GetDeviceList(IntPtr handle, ref CameraDeviceListStruct deviceList);
- [DllImport(Libraries.Camera, EntryPoint = "camera_device_manager_add_device_list_changed_cb")]
- internal static extern CameraError SetDeviceListChangedCallback(IntPtr handle, DeviceListChangedCallback callback, IntPtr userData, out int id);
-
- [DllImport(Libraries.Camera, EntryPoint = "camera_device_manager_remove_device_list_changed_cb")]
- internal static extern CameraError UnsetDeviceListChangedCallback(IntPtr handle, int id);
-
[DllImport(Libraries.Camera, EntryPoint = "camera_device_manager_add_device_connection_changed_cb")]
internal static extern CameraError SetDeviceConnectionChangedCallback(IntPtr handle, DeviceConnectionChangedCallback callback, IntPtr userData, out int id);