델파이 안드로이드 개발 기술 모음

서론

본 문서는 안드로이드 앱 개발 시 사용되는 다양한 기능들에 대한 기록입니다. 이러한 기능들을 저는 '작은 기술들'이라 부르며, 학습 노트의 성격을 가집니다. 또한, 일반적으로 자주 사용되는 공통 기능들은 처음 등장할 때만 설명하고 이후에는 반복하지 않을 예정입니다. 예를 들어, 동적 권한 요청과 같은 기능들은 한 번만 다룰 것입니다.

안드로이드 개발에서 자주 사용되는 유닛들에 대해서도 여기서 함께 설명하며, 나중에 계속 언급하는 것을 방지하겠습니다. 주요 유닛은 다음과 같습니다:

{$IFDEF ANDROID}
Androidapi.JNI.GraphicsContentViewText, 
Androidapi.Helpers,
Androidapi.JNI.JavaTypes,
FMX.Helpers.Android,
Androidapi.Jni.Net,
androidapi.jni.Os,
androidapi.Jni.App,
Androidapi.JNIBridge,
Androidapi.JNI.Media,
{$ENDIF}

목차

  • 서론
  • 스마트폰 진동 기능 호출 방법
  • 진동 권한 요청
  • 진동 함수 생성
  • 진동 함수 호출
  • 스마트폰 볼륨 조절 방법
  • EDIT 가상 키보드 닫는 방법
  • 동적 컨트롤 속성 수정
  • 경계 없는 폼 이동 방법
  • APP 자동 설치 오류
  • 이미지 저장 방법 (FMX 및 VCL에서 JPEG Error #53 문제 방지)
  • 안드로이드 APP 아이콘 커스터마이징이 적용되지 않는 문제 해결 방법

스마트폰 진동 기능 호출 방법

이 기능을 구현하기 위해 세 가지 단계가 필요합니다: 권한 요청, 함수 생성, 함수 호출

진동 권한 요청

먼저 AndroidManifest.template.xml 파일을 열고 정적으로 권한을 요청해야 합니다:

<%uses-permission%>
    

그런 다음 Project --- Options에서 다음 이미지와 같이 진동 권한을 선택합니다:

[이미지 위치]

최신 안드로이드 버전에서는 동적 권한 요청이 필요하므로, 변수를 먼저 정의해야 합니다:

private
  { Private declarations }
  FVibrationPermission: string;

다음으로 폼이 생성될 때 권한을 요청하는 코드를 추가합니다:

procedure TMainForm.FormCreate(Sender: TObject);
begin
  FVibrationPermission := JStringToString(TJManifest_permission.JavaClass.VIBRATE);
  PermissionsService.RequestPermissions([FVibrationPermission], VibrationPermissionRequestResult, ShowPermissionRationale);
end;

권한 요청에는 표준 매개변수 형식이 있으므로, 두 개의 매개변수를 별도로 작성해야 합니다:

procedure TMainForm.VibrationPermissionRequestResult(Sender: TObject;
  const APermissions: TClassicStringDynArray;
  const AGrantResults: TClassicPermissionStatusDynArray);
begin
  if (Length(AGrantResults) = 1) and
  (AGrantResults[0] = TPermissionStatus.Granted) then
  begin
    // 권한이 허용된 경우의 코드
  end
  else
    // 권한이 거부된 경우의 코드
    TDialogService.ShowMessage('사용자가 권한을 거부했습니다. 일부 기능을 사용할 수 없습니다.');
end;
procedure TMainForm.ShowPermissionRationale(Sender: TObject;
  const APermissions: TClassicStringDynArray; const APostRationaleProc: TProc);
begin
  TDialogService.ShowMessage('앱 정상 작동을 위한 권한이 필요합니다. 허용하지 않으면 일부 기능이 제한됩니다.',
    procedure(const AResult: TModalResult)
    begin
      APostRationaleProc;
    end);
end;

여기까지 진행하면 권한 요청이 완료됩니다. 앱을 시작할 때 권한이 필요하다는 메시지가 표시되며, 사용자는 허용 버튼을 클릭하면 됩니다.

진동 함수 생성

진동 권한을 얻은 후, 다음과 같이 진동 기능을 구현하는 함수를 작성합니다:

procedure ActivatePhoneVibration(Duration: Integer);
var
  VibratorService: JObject;
  SystemVibrator: JVibrator;
begin
  VibratorService := SharedActivity.getSystemService(TJContext.JavaClass.VIBRATOR_SERVICE);
  SystemVibrator := TJvibrator.Wrap(VibratorService);
  SystemVibrator.vibrate(Duration);
end;

태그: 델파이 안드로이드 진동기능 권한요청 모바일개발

5월 25일 16:00에 게시됨