diff --git a/app/src/main/kotlin/jackall/overlaymulticounter/Const.kt b/app/src/main/kotlin/jackall/overlaymulticounter/Const.kt index bc025e5..a66c556 100644 --- a/app/src/main/kotlin/jackall/overlaymulticounter/Const.kt +++ b/app/src/main/kotlin/jackall/overlaymulticounter/Const.kt @@ -12,6 +12,7 @@ const val mainBannerUnitId = "ca-app-pub-6316747512041615/9128099610" const val overlayBannerUnitId = "ca-app-pub-6316747512041615/6310364583" const val interstitialUnitId = "ca-app-pub-6316747512041615/7926698582" + const val interstitialFrequency = 5 const val develop = false } } \ No newline at end of file diff --git a/app/src/main/kotlin/jackall/overlaymulticounter/activity/MainActivity.kt b/app/src/main/kotlin/jackall/overlaymulticounter/activity/MainActivity.kt index 0848df3..5ffa979 100644 --- a/app/src/main/kotlin/jackall/overlaymulticounter/activity/MainActivity.kt +++ b/app/src/main/kotlin/jackall/overlaymulticounter/activity/MainActivity.kt @@ -39,5 +39,6 @@ override fun onStart() { super.onStart() AdUtil.startBannerAd(this, binding.root.main_banner_frame, AdSize.BANNER, Const.mainBannerUnitId) + AdUtil.startInterstitialAd(this) } } diff --git a/app/src/main/kotlin/jackall/overlaymulticounter/utils/AdUtil.kt b/app/src/main/kotlin/jackall/overlaymulticounter/utils/AdUtil.kt index 5f90e09..5bf2924 100644 --- a/app/src/main/kotlin/jackall/overlaymulticounter/utils/AdUtil.kt +++ b/app/src/main/kotlin/jackall/overlaymulticounter/utils/AdUtil.kt @@ -1,16 +1,19 @@ package jackall.overlaymulticounter.utils import android.content.Context +import android.util.Log import android.widget.FrameLayout -import com.google.android.gms.ads.AdRequest -import com.google.android.gms.ads.AdSize -import com.google.android.gms.ads.AdView +import com.google.android.gms.ads.* +import jackall.overlaymulticounter.Const +import jackall.overlaymulticounter.common.PreferenceKeys +import jackall.overlaymulticounter.common.PreferenceNames /** * Created by matsumoto_k on 2017/11/10. */ class AdUtil { companion object { + private var mySharedPref: MySharedPref? = null fun startBannerAd(context: Context, frameLayout: FrameLayout, adSize: AdSize, unitId: String) { val adBannerView = AdView(context) adBannerView.adSize = adSize @@ -19,5 +22,49 @@ val adBannerRequest = AdRequest.Builder().build() adBannerView.loadAd(adBannerRequest) } + + fun startInterstitialAd(context: Context) { + if (mySharedPref == null) { + mySharedPref = MySharedPref(context, PreferenceNames.CONFIG) + } + val interstitialCount = (mySharedPref?.getValue(PreferenceKeys.interstitialCount, Int::class.java, 1) as Int) + if (interstitialCount == Const.interstitialFrequency) { + mySharedPref?.putValue(PreferenceKeys.interstitialCount, Int::class.java, 1) + val interstitialAd = InterstitialAd(context) + interstitialAd.adUnitId = Const.interstitialUnitId + + interstitialAd.adListener = object : AdListener() { + + override fun onAdLoaded() { + interstitialAd.show() + } + + + override fun onAdFailedToLoad(errorCode: Int) { + val message = String.format("onAdFailedToLoad (%s)", getErrorReason(errorCode)) + Log.d("debug", message) + } + } + + val adRequest: AdRequest + adRequest = AdRequest.Builder().build() + interstitialAd.loadAd(adRequest) + } else { + mySharedPref?.putValue(PreferenceKeys.interstitialCount, Int::class.java, interstitialCount + 1) + } + } + + + // Gets a string error reason from an error code. + private fun getErrorReason(errorCode: Int): String { + var errorReason = "" + when (errorCode) { + AdRequest.ERROR_CODE_INTERNAL_ERROR -> errorReason = "ERROR_CODE_INTERNAL_ERROR" + AdRequest.ERROR_CODE_INVALID_REQUEST -> errorReason = "ERROR_CODE_INVALID_REQUEST" + AdRequest.ERROR_CODE_NETWORK_ERROR -> errorReason = "ERROR_CODE_NETWORK_ERROR" + AdRequest.ERROR_CODE_NO_FILL -> errorReason = "ERROR_CODE_NO_FILL" + } + return errorReason + } } } \ No newline at end of file diff --git a/app/src/main/kotlin/jackall/overlaymulticounter/viewmodel/MainViewModel.kt b/app/src/main/kotlin/jackall/overlaymulticounter/viewmodel/MainViewModel.kt index f9f0b92..316ff6e 100644 --- a/app/src/main/kotlin/jackall/overlaymulticounter/viewmodel/MainViewModel.kt +++ b/app/src/main/kotlin/jackall/overlaymulticounter/viewmodel/MainViewModel.kt @@ -17,11 +17,12 @@ import io.realm.OrderedRealmCollectionChangeListener import io.realm.RealmResults import jackall.overlaymulticounter.App -import jackall.overlaymulticounter.adapter.CounterAdapter import jackall.overlaymulticounter.R +import jackall.overlaymulticounter.adapter.CounterAdapter import jackall.overlaymulticounter.contract.CounterContract import jackall.overlaymulticounter.db.CounterRealmHelper import jackall.overlaymulticounter.service.MainService +import jackall.overlaymulticounter.utils.AdUtil import jackall.overlaymulticounter.utils.RuntimePermissionUtil import jackall.overlaymulticounter.utils.ServiceUtil import jackall.overlaymulticounter.vo.Counter @@ -55,8 +56,8 @@ } fun onClickStartService(view: View) { - // TODO: RuntimePermissionの処理 if (RuntimePermissionUtil.checkOverlayPermission(view.context)) { + AdUtil.startInterstitialAd(view.context) if (ServiceUtil.isMainServiceRunning(view.context)) { val intent = Intent(view.context, MainService::class.java) view.context.stopService(intent)