1.적용 방법

Edit

1.1개요

Android Studio 용 라이브러리인 AAR 적용 및 라이브러리 사용을 위한 설정 내용을 기술합니다.

1.2환경 설정

1.2.1build.gradle (app)

android {
    compileSdkVersion 261

    defaultConfig {
        minSdkVersion 232
        targetSdkVersion 263
        ...
    }

    ...
}

dependencies {
    ...
    implementation 'com.android.support:appcompat-v7:26.1.0'4
    implementation 'com.google.code.gson:gson:2.8.5'5
    implementation 'com.squareup:otto:1.3.8'6
}

1.2.2프로젝트에 AAR 추가하기

그림 1-1AS_Create New Module

그림 1-2AS_Create New Module_select file

그림 1-3AS_app dependencies

그림 1-4AS_Choose Modules

그림 1-5AS_Project Structure_aar added

1.2.3AndroidMenifest.xml

<uses-permission android:name="android.permission.INTERNET" />7
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />8
<uses-permission android:name="android.permission.RECORD_AUDIO" />
9
<uses-permission android:name="android.permission.BLUETOOTH" />10
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />11
<service
     android:name="kr.co.nexus.waivlib.service.WaivWebService"
     android:enabled="true"
     android:exported="false" />12

1.2.4배터리 최적화 예외 처리

// Battery Optimizations
private void procIgnoreBatteryOptimizations(final Context context) {
    PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    boolean isWhiteListing = false;
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
        if (pm != null) {
            isWhiteListing = pm.isIgnoringBatteryOptimizations(getPackageName());
        }
    }

    Log.i(TAG, "isWhiteListing: " + isWhiteListing);
    if (isWhiteListing == false) {
        AlertDialog.Builder setdialog = new AlertDialog.Builder(MainActivity.this);
        setdialog.setTitle("권한이 필요합니다.")
                .setMessage("어플을 사용하기 위해서는 해당 어플을 \"배터리 사용량 최적화\" 목록에서 제외하는 권한이 필요합니다. 계속하시겠습니까?")
                .setPositiveButton("예", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
                        intent.setData(Uri.parse("package:" + context.getPackageName()));
                        context.startActivity(intent);

                        Log.i(TAG, "getPackageName: " + context.getPackageName());
                    }
                })
                .setNegativeButton("아니오", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "권한 설정을 취소했습니다.", Toast.LENGTH_SHORT).show();
                    }
                })
                .create()
                .show();
    }
}

  1. targetSdkVersion 값과 동일하거나 커야함.To Content
  2. Webview의 WebRTC 지원이 API23(Lollipop 5.x) 이상부터 지원To Content
  3. 2018년 11월 부터 기존 앱을 구글 플레이 등록 시 targetSdkVersion을 26이상으로 강제함.To Content
  4. AAR 내에서 사용하는 라이브러리 추가To Content
  5. AAR 내에서 사용하는 라이브러리 추가(GSON)To Content
  6. AAR 내에서 사용하는 라이브러리 추가(otto eventBus)To Content
  7. 네트워크를 사용하기 위한 권한To Content
  8. 오디오를 설정을 변경하기 위한 권한To Content
  9. 오디오를 사용하기 위한 권한To Content
  10. Bluetooth 설정 및 페어링된 기기에 연결하며 연결을 수락하기 위한 권한To Content
  11. 배터리 최적화 예외 처리를 위한 권한To Content
  12. 전화기능을 처리하기 위한 서비스To Content