Xamarin.Forms 자마린의 기초(3) - 네이티브 기능 사용 - 진동 기능 사용
2021. 2. 12. 19:28ㆍXamarin
반응형
자마린 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) (1) | 2021.02.10 |