-
Xamarin.Forms 자마린의 기초(3) - 네이티브 기능 사용 - 진동 기능 사용Xamarin 2021. 2. 12. 19:28반응형
자마린 Forms에서 코딩을 하다 보면 Android 프로젝트에서만 사용가능해 보이는 코드들이 있다.
이때 공용 프로젝트에서 쓰기 위한 방법으로는 다른 Cross Platform 플러그인을 다운로드하거나, 이 글에서 설명할 방법을 쓰면 된다.
예시로, Android.App.Application.Context.GetSystemService는 안드로이드 프로젝트에서만 사용가능하다. 그러므로, 안드로이드 프로젝트에서 이 기능을 사용하는, 그래서 진동 기능을 하는 클래스를 만들어보겠다.
그러기 위해서는 두개의 파일을 각각의 프로젝트에 만들어야한다.
1. 공용 프로젝트에 클래스의 함수 이름을 담은 인터페이스
namespace HeVibrates { public interface IVibratorDevice { void Run(long[] pattern); void Stop(); } }
Run과 Stop 기능만 쓸것이다.
2. Android 프로젝트에 사용하고자 하는 기능을 수행하는 클래스
using Android.Content; using Android.OS; using Xamarin.Forms; using 프로젝트이름.Droid; [assembly: Dependency(typeof(VibratorDevice))] namespace 프로젝트이름.Droid { public class VibratorDevice : IVibratorDevice { [Obsolete] public void Run(long[] pattern) { var v = (Vibrator)Android.App.Application.Context.GetSystemService(Context.VibratorService); v.Vibrate(pattern, 0); //0이라서 무한반복이다. } public void Stop() { var v = (Vibrator)Android.App.Application.Context.GetSystemService(Context.VibratorService); v.Cancel(); } } }
중요한점은 using Xamarin.Forms의 Dependency이다. 이것으로 인해서 공용프로젝트에서 저 VibratorDevice를 가져와 사용할 수 있다는 점이다.
공용 프로젝트에서 아래와 같이 사용할 수 있다.
DependencyService.Get<IVibratorDevice>().Run(new long[] { 0, 1000, 0});
long 배열의 뜻을 정리하자면 순서대로 0초 시작 딜레이며 1초간 지속하며, 0초 다시 쉰다는 것이다.
반응형'Xamarin' 카테고리의 다른 글
Xamarin.Forms 자마린의 기초(4) - APK 만들기 (PlayConsole에 업로드 가능함) (0) 2021.02.12 Xamarin.Forms 자마린의 기초(2) - 아이콘 변경 (0) 2021.02.12 Xamarin.Forms 자마린의 기초(1) - 내부 이미지 사용 (0) 2021.02.12 Xamarin.Forms 자마린에서 애드몹 Admob 사용하기 *(Android) (0) 2021.02.10