├── app
├── .gitignore
├── src
│ └── main
│ │ ├── res
│ │ ├── drawable
│ │ │ ├── default_slogan.png
│ │ │ ├── btn_check_on_emui.png
│ │ │ ├── btn_check_off_emui.png
│ │ │ ├── default_slogan_landscape.png
│ │ │ ├── btn_check_on_pressed_emui.png
│ │ │ ├── native_flag_rounded_corners_shape.xml
│ │ │ ├── native_button_rounded_corners_shape.xml
│ │ │ ├── detail_checkbox_selector.xml
│ │ │ ├── emui_button_select.xml
│ │ │ ├── app_whythisad_info.xml
│ │ │ └── ic_launcher_background.xml
│ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_round.png
│ │ │ └── ic_launcher_foreground.png
│ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_round.png
│ │ │ └── ic_launcher_foreground.png
│ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_round.png
│ │ │ └── ic_launcher_foreground.png
│ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_round.png
│ │ │ └── ic_launcher_foreground.png
│ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_round.png
│ │ │ └── ic_launcher_foreground.png
│ │ ├── drawable-xhdpi
│ │ │ ├── btn_check_off_emui.png
│ │ │ ├── btn_check_on_emui.png
│ │ │ ├── ic_sb_cancel_gray.png
│ │ │ ├── btn_check_on_pressed_emui.png
│ │ │ └── popup_full_bright_emui.9.png
│ │ ├── values
│ │ │ ├── ic_launcher_background.xml
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── styles.xml
│ │ │ └── strings.xml
│ │ ├── drawable-xxhdpi
│ │ │ ├── btn_default_normal_emui.9.png
│ │ │ ├── btn_default_disabled_emui.9.png
│ │ │ └── btn_default_pressed_emui.9.png
│ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ ├── menu
│ │ │ └── ad_sample_menu.xml
│ │ ├── layout
│ │ │ ├── activity_main.xml
│ │ │ ├── dialog_consent.xml
│ │ │ ├── dialog_consent_moreinfo.xml
│ │ │ ├── activity_reward.xml
│ │ │ ├── dialog_consent_partner_list.xml
│ │ │ ├── native_image_only_template.xml
│ │ │ ├── dialog_consent_content.xml
│ │ │ ├── activity_consent.xml
│ │ │ ├── activity_interstitial.xml
│ │ │ ├── activity_splash.xml
│ │ │ ├── dialog_protocol.xml
│ │ │ ├── native_small_template.xml
│ │ │ ├── native_small_image_template.xml
│ │ │ ├── native_video_template.xml
│ │ │ ├── native_common_medium_template.xml
│ │ │ ├── activity_native.xml
│ │ │ ├── native_three_images_template.xml
│ │ │ ├── native_ad_with_app_download_btn_template.xml
│ │ │ ├── activity_banner.xml
│ │ │ └── activity_instream.xml
│ │ └── drawable-v24
│ │ │ └── ic_launcher_foreground.xml
│ │ ├── java
│ │ └── com
│ │ │ └── huawei
│ │ │ └── hms
│ │ │ └── ads
│ │ │ └── sdk
│ │ │ ├── AdFormat.kt
│ │ │ ├── AdSampleApplication.kt
│ │ │ ├── BaseActivity.kt
│ │ │ ├── AdsConstant.kt
│ │ │ ├── AdSampleAdapter.kt
│ │ │ ├── ProtocolActivity.kt
│ │ │ ├── InterstitialActivity.kt
│ │ │ ├── BannerActivity.kt
│ │ │ ├── RewardActivity.kt
│ │ │ ├── dialogs
│ │ │ ├── ProtocolDialog.kt
│ │ │ └── ConsentDialog.kt
│ │ │ ├── MainActivity.kt
│ │ │ ├── NativeActivity.kt
│ │ │ ├── ConsentActivity.kt
│ │ │ ├── SplashActivity.kt
│ │ │ ├── NativeViewFactory.kt
│ │ │ └── InstreamActivity.kt
│ │ └── AndroidManifest.xml
├── proguard-rules.pro
└── build.gradle
├── settings.gradle
├── .gitignore
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── README_ZH.md
├── README.md
└── LICENSE
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | *.iml
3 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name='HuaweiAdsSdk_Demo'
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle/*
3 | .idea/*
4 | /local.properties
5 | /build
6 | gradlew*
7 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/app/src/main/res/drawable/default_slogan.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/drawable/default_slogan.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/btn_check_on_emui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/drawable/btn_check_on_emui.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/btn_check_off_emui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/drawable/btn_check_off_emui.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/btn_check_off_emui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/drawable-xhdpi/btn_check_off_emui.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/btn_check_on_emui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/drawable-xhdpi/btn_check_on_emui.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_sb_cancel_gray.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/drawable-xhdpi/ic_sb_cancel_gray.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/default_slogan_landscape.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/drawable/default_slogan_landscape.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/btn_check_on_pressed_emui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/drawable/btn_check_on_pressed_emui.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #26A69A
4 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/btn_check_on_pressed_emui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/drawable-xhdpi/btn_check_on_pressed_emui.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/popup_full_bright_emui.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/drawable-xhdpi/popup_full_bright_emui.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/btn_default_normal_emui.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/drawable-xxhdpi/btn_default_normal_emui.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/btn_default_disabled_emui.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/drawable-xxhdpi/btn_default_disabled_emui.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/btn_default_pressed_emui.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HMS-Core/hms-ads-demo-kotlin/HEAD/app/src/main/res/drawable-xxhdpi/btn_default_pressed_emui.9.png
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Tue Nov 05 22:40:05 CST 2019
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
7 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/ad_sample_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #008577
4 | #00574B
5 | #D81B60
6 |
7 | #e6000000
8 | #000000
9 | #ffffff
10 | #338D8D8D
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 | 200dp
6 | 3dp
7 | 5dp
8 | 8dp
9 | 16dp
10 | 100dp
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/native_flag_rounded_corners_shape.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
11 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/native_button_rounded_corners_shape.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
11 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/detail_checkbox_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/emui_button_select.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 | -keep class com.huawei.openalliance.ad.** { *; }
23 | -keep class com.huawei.hms.ads.** { *; }
24 |
--------------------------------------------------------------------------------
/app/src/main/java/com/huawei/hms/ads/sdk/AdFormat.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2020. Huawei Technologies Co., Ltd. All rights reserved.
3 |
4 | Licensed under the Apache License, Version 2.0 (the "License");
5 | you may not use this file except in compliance with the License.
6 | You may obtain a copy of the License at
7 |
8 | http://www.apache.org/licenses/LICENSE-2.0
9 |
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | package com.huawei.hms.ads.sdk
17 |
18 | class AdFormat(
19 | /**
20 | * Item name
21 | */
22 | val title: String,
23 | /**
24 | * Target activity
25 | */
26 | val targetClass: Class<*>)
--------------------------------------------------------------------------------
/app/src/main/res/drawable/app_whythisad_info.xml:
--------------------------------------------------------------------------------
1 |
3 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/java/com/huawei/hms/ads/sdk/AdSampleApplication.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2020. Huawei Technologies Co., Ltd. All rights reserved.
3 |
4 | Licensed under the Apache License, Version 2.0 (the "License");
5 | you may not use this file except in compliance with the License.
6 | You may obtain a copy of the License at
7 |
8 | http://www.apache.org/licenses/LICENSE-2.0
9 |
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | package com.huawei.hms.ads.sdk
17 |
18 | import android.app.Application
19 | import com.huawei.hms.ads.HwAds
20 |
21 | class AdSampleApplication : Application() {
22 | override fun onCreate() {
23 | super.onCreate()
24 |
25 | // Initialize the Petal Ads SDK.
26 | HwAds.init(this)
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx1536m
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 | # AndroidX package structure to make it clearer which packages are bundled with the
15 | # Android operating system, and which are packaged with your app's APK
16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn
17 | android.useAndroidX=true
18 | # Automatically convert third-party libraries to use AndroidX
19 | android.enableJetifier=true
20 |
21 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 | apply plugin: 'kotlin-android'
3 |
4 | android {
5 | compileSdkVersion 29
6 | buildToolsVersion "29.0.2"
7 | defaultConfig {
8 | applicationId "com.huawei.hms.ads.sdk"
9 | minSdkVersion 19
10 | targetSdkVersion 29
11 | versionCode 1
12 | versionName "1.0"
13 | }
14 | buildTypes {
15 | release {
16 | minifyEnabled false
17 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
18 | }
19 | }
20 | compileOptions {
21 | sourceCompatibility JavaVersion.VERSION_1_8
22 | targetCompatibility JavaVersion.VERSION_1_8
23 | }
24 | }
25 |
26 | repositories {
27 | flatDir {
28 | dirs 'libs'
29 | }
30 | mavenCentral()
31 | }
32 |
33 | dependencies {
34 | implementation fileTree(dir: 'libs', include: ['*.jar'])
35 | implementation 'androidx.appcompat:appcompat:1.1.0'
36 | implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
37 | implementation 'com.huawei.hms:ads-lite:13.4.54.300'
38 | implementation 'com.huawei.hms:ads-consent:3.4.54.300'
39 | implementation "androidx.core:core-ktx:1.6.0"
40 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
41 | }
42 |
--------------------------------------------------------------------------------
/app/src/main/java/com/huawei/hms/ads/sdk/BaseActivity.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2020. Huawei Technologies Co., Ltd. All rights reserved.
3 |
4 | Licensed under the Apache License, Version 2.0 (the "License");
5 | you may not use this file except in compliance with the License.
6 | You may obtain a copy of the License at
7 |
8 | http://www.apache.org/licenses/LICENSE-2.0
9 |
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | package com.huawei.hms.ads.sdk
17 |
18 | import android.os.Bundle
19 | import androidx.appcompat.app.AppCompatActivity
20 |
21 | /**
22 | * This base activity for support navigate up within activity hierarchy from the action bar.
23 | */
24 | open class BaseActivity : AppCompatActivity() {
25 | override fun onCreate(savedInstanceState: Bundle?) {
26 | super.onCreate(savedInstanceState)
27 | val actionBar = supportActionBar
28 | actionBar!!.setDisplayHomeAsUpEnabled(true)
29 | }
30 |
31 | override fun onSupportNavigateUp(): Boolean {
32 | finish()
33 | return super.onSupportNavigateUp()
34 | }
35 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/huawei/hms/ads/sdk/AdsConstant.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2020. Huawei Technologies Co., Ltd. All rights reserved.
3 |
4 | Licensed under the Apache License, Version 2.0 (the "License");
5 | you may not use this file except in compliance with the License.
6 | You may obtain a copy of the License at
7 |
8 | http://www.apache.org/licenses/LICENSE-2.0
9 |
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | package com.huawei.hms.ads.sdk
17 |
18 | object AdsConstant {
19 | /**
20 | * SharedPreferences name.
21 | */
22 | const val SP_NAME = "HuaweiAdsSdkSharedPreferences"
23 |
24 | /**
25 | * The SP key of protocol.
26 | */
27 | const val SP_PROTOCOL_KEY = "protocol"
28 |
29 | /**
30 | * The SP key of consent.
31 | */
32 | const val SP_CONSENT_KEY = "consent"
33 |
34 | /**
35 | * The SP default value of protocol.
36 | */
37 | const val DEFAULT_SP_PROTOCOL_VALUE = 0
38 |
39 | /**
40 | * The SP default value of consent.
41 | */
42 | const val DEFAULT_SP_CONSENT_VALUE = -1
43 | }
--------------------------------------------------------------------------------
/app/src/main/res/layout/dialog_consent.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
15 |
16 |
25 |
26 |
27 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/app/src/main/java/com/huawei/hms/ads/sdk/AdSampleAdapter.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2020. Huawei Technologies Co., Ltd. All rights reserved.
3 |
4 | Licensed under the Apache License, Version 2.0 (the "License");
5 | you may not use this file except in compliance with the License.
6 | You may obtain a copy of the License at
7 |
8 | http://www.apache.org/licenses/LICENSE-2.0
9 |
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | package com.huawei.hms.ads.sdk
17 |
18 | import android.R
19 | import android.content.Context
20 | import android.view.LayoutInflater
21 | import android.view.View
22 | import android.view.ViewGroup
23 | import android.widget.ArrayAdapter
24 | import android.widget.TextView
25 |
26 | class AdSampleAdapter(private val mContext: Context, private val resourceId: Int, formatList: List?) : ArrayAdapter(mContext, resourceId, formatList!!) {
27 | override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
28 | val adFormat = getItem(position)
29 | val view = LayoutInflater.from(mContext).inflate(resourceId, parent, false)
30 | val title = view.findViewById(R.id.text1)
31 | title.text = adFormat!!.title
32 | return view
33 | }
34 |
35 | }
--------------------------------------------------------------------------------
/app/src/main/res/layout/dialog_consent_moreinfo.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
20 |
21 |
29 |
30 |
38 |
39 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_reward.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
14 |
15 |
16 |
24 |
25 |
33 |
34 |
42 |
43 |
--------------------------------------------------------------------------------
/app/src/main/java/com/huawei/hms/ads/sdk/ProtocolActivity.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2020. Huawei Technologies Co., Ltd. All rights reserved.
3 |
4 | Licensed under the Apache License, Version 2.0 (the "License");
5 | you may not use this file except in compliance with the License.
6 | You may obtain a copy of the License at
7 |
8 | http://www.apache.org/licenses/LICENSE-2.0
9 |
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | package com.huawei.hms.ads.sdk
17 |
18 | import android.os.Bundle
19 | import com.huawei.hms.ads.sdk.dialogs.ProtocolDialog
20 | import com.huawei.hms.ads.sdk.dialogs.ProtocolDialog.ProtocolDialogCallback
21 |
22 | /**
23 | * Activity for displaying privacy information.
24 | */
25 | class ProtocolActivity : BaseActivity(), ProtocolDialogCallback {
26 | override fun onCreate(savedInstanceState: Bundle?) {
27 | super.onCreate(savedInstanceState)
28 | title = getString(R.string.privacy_settings)
29 | showProtocolDialog()
30 | }
31 |
32 | /**
33 | * Display a protocol dialog.
34 | */
35 | private fun showProtocolDialog() {
36 | // Start to process the protocol dialog box.
37 | val dialog = ProtocolDialog(this)
38 | dialog.setCallback(this)
39 | dialog.setCanceledOnTouchOutside(false)
40 | dialog.show()
41 | }
42 |
43 | override fun agree() {
44 | finish()
45 | }
46 |
47 | override fun cancel() {
48 | finish()
49 | }
50 | }
--------------------------------------------------------------------------------
/app/src/main/res/layout/dialog_consent_partner_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
19 |
20 |
30 |
31 |
39 |
40 |
48 |
49 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/native_image_only_template.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
14 |
15 |
19 |
20 |
33 |
34 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
13 |
19 |
22 |
25 |
26 |
27 |
28 |
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/dialog_consent_content.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
20 |
21 |
29 |
30 |
40 |
41 |
50 |
51 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_consent.xml:
--------------------------------------------------------------------------------
1 |
10 |
11 |
15 |
16 |
23 |
24 |
31 |
32 |
33 |
40 |
41 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/README_ZH.md:
--------------------------------------------------------------------------------
1 | # 鲸鸿动能广告服务Kotlin示例代码
2 | 中文 | [English](https://github.com/HMS-Core/hms-ads-demo-kotlin)
3 | ## 目录
4 |
5 | * [简介](#简介)
6 | * [安装](#安装)
7 | * [环境要求](#环境要求)
8 | * [示例代码](#示例代码)
9 | * [授权许可](#授权许可)
10 |
11 | ## 简介
12 | 鲸鸿动能广告服务Kotlin示例代码向您介绍如何将鲸鸿动能SDK集成到安卓应用中,实现广告展示。
13 |
14 | ## 安装
15 | 在华为手机上安装该示例代码项目。
16 |
该示例也可以通过HMS Toolkit快速启动运行,且支持各Kit一站式集成,并提供远程真机免费调测等功能。了解更多信息,请参见[HMS Toolkit](https://developer.huawei.com/consumer/cn/doc/development/Tools-Guides/getting-started-0000001077381096)。
17 |
18 | ## 环境要求
19 | 在华为手机上安装HMS Core (APK) 4.0.0及以上版本。
20 |
21 | ## 示例代码
22 | 鲸鸿动能广告服务Kotlin示例代码集成了HMS Core Ads SDK,为您提供横幅广告、原生广告、激励广告、插屏广告、开屏广告和贴片广告的展示页面。
23 | 本示例代码包括以下六个文件,便于您进行广告加载、展示和用户意见征集:
24 |
25 | 1. BannerActivity.kt
26 | 用于加载、展示横幅广告。
27 |
代码位置: HuaweiAdsSdk_Demo\app\src\main\java\com\huawei\hms\ads\sdk\BannerActivity.kt
28 |
29 | 2. NativeActivity.kt
30 | 用于加载、展示原生广告。
31 |
代码位置: HuaweiAdsSdk_Demo\app\src\main\java\com\huawei\hms\ads\sdk\NativeActivity.kt
32 |
33 | 3. RewardActivity.kt
34 | 用于加载、展示激励广告。
35 |
代码位置: HuaweiAdsSdk_Demo\app\src\main\java\com\huawei\hms\ads\sdk\RewardActivity.kt
36 |
37 | 4. InterstitialActivity.kt
38 | 用于加载、展示插屏广告。
39 |
代码位置: HuaweiAdsSdk_Demo\app\src\main\java\com\huawei\hms\ads\sdk\InterstitialActivity.kt
40 |
41 | 5. SplashActivity.kt
42 | 用于加载、展示开屏广告。
43 |
代码位置: HuaweiAdsSdk_Demo\app\src\main\java\com\huawei\hms\ads\sdk\SplashActivity.kt
44 |
45 | 6. ConsentActivity.kt
46 | 用于征求用户意见。
47 |
代码位置: HuaweiAdsSdk_Demo\app\src\main\java\com\huawei\hms\ads\sdk\ConsentActivity.kt
48 |
49 | 7. ProtocolActivity.kt
50 | 用于收集用户对隐私条款的意见。
51 |
代码位置:HuaweiAdsSdk_Demo\app\src\main\java\com\huawei\hms\ads\sdk\ProtocolActivity.kt
52 |
53 | ## 技术支持
54 | 如果您对HMS Core还处于评估阶段,可在[Reddit社区](https://www.reddit.com/r/HuaweiDevelopers/)获取关于HMS Core的最新讯息,并与其他开发者交流见解。
55 |
56 | 如果您对使用HMS示例代码有疑问,请尝试:
57 | - 开发过程遇到问题上[Stack Overflow](https://stackoverflow.com/questions/tagged/huawei-mobile-services),在`huawei-mobile-services`标签下提问,有华为研发专家在线一对一解决您的问题。
58 | - 到[华为开发者论坛](https://forums.developer.huawei.com/forumPortal/en/home?fid=0101187876626530001) HMS Core板块与其他开发者进行交流。
59 |
60 | 如果您在尝试示例代码中遇到问题,请向仓库提交[issue](https://github.com/HMS-Core/hms-ads-demo-kotlin/issues),也欢迎您提交[Pull Request](https://github.com/HMS-Core/hms-ads-demo-kotlin/pulls)。
61 |
62 | ## 授权许可
63 | 鲸鸿动能广告服务Kotlin示例代码经过 [Apache License, version 2.0](http://www.apache.org/licenses/LICENSE-2.0)授权许可。
64 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_interstitial.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
15 |
16 |
24 |
25 |
33 |
34 |
40 |
41 |
47 |
48 |
53 |
54 |
55 |
56 |
65 |
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
15 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
32 |
36 |
40 |
44 |
48 |
53 |
58 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_splash.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
15 |
16 |
23 |
24 |
31 |
32 |
36 |
37 |
44 |
45 |
52 |
53 |
54 |
62 |
63 |
64 |
65 |
70 |
71 |
72 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/dialog_protocol.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
15 |
16 |
25 |
26 |
27 |
36 |
37 |
50 |
51 |
52 |
53 |
60 |
61 |
71 |
72 |
81 |
82 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/native_small_template.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
17 |
18 |
26 |
27 |
36 |
37 |
45 |
46 |
55 |
56 |
69 |
70 |
79 |
80 |
81 |
82 |
83 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/native_small_image_template.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
17 |
18 |
26 |
27 |
36 |
37 |
45 |
46 |
55 |
56 |
69 |
70 |
79 |
80 |
81 |
82 |
83 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Petal Ads Demo for Kotlin
2 | English | [中文](https://github.com/HMS-Core/hms-ads-demo-kotlin/blob/master/README_ZH.md)
3 | ## Table of Contents
4 |
5 | * [Introduction](#introduction)
6 | * [Installation](#installation)
7 | * [Supported Environments](#supported-environments)
8 | * [Sample Code](#sample-code)
9 | * [License](#license)
10 |
11 | ## Introduction
12 | The HuaweiAdsSdk_Demo program demonstrates how to integrate the Petal Ads SDK into an Android app and display ads.
13 |
14 | ## Installation
15 | Install the program on Huawei Android mobile phones.
16 |
You also can use HMS Toolkit to quickly integrate the kit and run the demo project, as well as debug the app using a remote device for free.
17 | For details, please visit [HMS Toolkit](https://developer.huawei.com/consumer/en/doc/development/Tools-Guides/getting-started-0000001077381096)。
18 |
19 | ## Supported Environments
20 | HMS Core (APK) 4.0.0 or later has been installed on Huawei Android phones.
21 |
22 | ## Sample Code
23 | The HuaweiAdsSdk_Demo program integrates the Petal Ads SDK and provides the pages for displaying banner, native, rewarded, interstitial, and splash ads, respectively.
24 | The following classes in the demo are used for loading and displaying ads and collecting user comments:
25 |
26 | 1. BannerActivity.kt
27 | Loads and displays banner ads.
28 |
Code location: HuaweiAdsSdk_Demo\app\src\main\java\com\huawei\hms\ads\sdk\BannerActivity.kt
29 |
30 | 2. NativeActivity.kt
31 | Loads and displays native ads.
32 |
Code location: HuaweiAdsSdk_Demo\app\src\main\java\com\huawei\hms\ads\sdk\NativeActivity.kt
33 |
34 | 3. RewardActivity.kt
35 | Loads and displays rewarded ads.
36 |
Code location: HuaweiAdsSdk_Demo\app\src\main\java\com\huawei\hms\ads\sdk\RewardActivity.kt
37 |
38 | 4. InterstitialActivity.kt
39 | Loads and displays interstitial ads.
40 |
Code location: HuaweiAdsSdk_Demo\app\src\main\java\com\huawei\hms\ads\sdk\InterstitialActivity.kt
41 |
42 | 5. SplashActivity.kt
43 | Loads and displays splash ads.
44 |
Code location: HuaweiAdsSdk_Demo\app\src\main\java\com\huawei\hms\ads\sdk\SplashActivity.kt
45 |
46 | 6. ConsentActivity.kt
47 | Collects user consent.
48 |
Code location: HuaweiAdsSdk_Demo\app\src\main\java\com\huawei\hms\ads\sdk\ConsentActivity.kt
49 |
50 | 7. ProtocolActivity.kt
51 | Collects user consent on privacy terms.
52 |
Code location:HuaweiAdsSdk_Demo\app\src\main\java\com\huawei\hms\ads\sdk\ProtocolActivity.kt
53 |
54 | ## Question or issues
55 | If you want to evaluate more about HMS Core,
56 | [HMSCore on Reddit](https://www.reddit.com/r/HuaweiDevelopers/) is for you to keep up with latest news about HMS Core, and to exchange insights with other developers.
57 |
58 | If you have questions about how to use HMS samples, try the following options:
59 | - [Stack Overflow](https://stackoverflow.com/questions/tagged/huawei-mobile-services?tab=Votes) is the best place for any programming questions. Be sure to tag your question with
60 | `huawei-mobile-services`.
61 | - [Huawei Developer Forum](https://forums.developer.huawei.com/forumPortal/en/home?fid=0101187876626530001) HMS Core Module is great for general questions, or seeking recommendations and opinions.
62 |
63 | If you run into a bug in our samples, please submit an [issue](https://github.com/HMS-Core/hms-ads-demo-kotlin/issues) to the Repository. Even better you can submit a [Pull Request](https://github.com/HMS-Core/hms-ads-demo-kotlin/pulls) with a fix.
64 |
65 |
66 | ## License
67 | HuaweiAdsSdk_Demo is licensed under the [Apache License, version 2.0](http://www.apache.org/licenses/LICENSE-2.0).
68 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/native_video_template.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
14 |
15 |
19 |
20 |
25 |
26 |
35 |
36 |
48 |
49 |
62 |
63 |
64 |
70 |
71 |
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/native_common_medium_template.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
14 |
15 |
19 |
20 |
25 |
26 |
35 |
36 |
48 |
49 |
62 |
63 |
64 |
70 |
71 |
82 |
83 |
84 |
85 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_native.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
11 |
12 |
22 |
23 |
27 |
28 |
34 |
35 |
41 |
42 |
47 |
48 |
53 |
54 |
59 |
60 |
65 |
66 |
67 |
74 |
75 |
76 |
81 |
82 |
83 |
--------------------------------------------------------------------------------
/app/src/main/java/com/huawei/hms/ads/sdk/InterstitialActivity.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2020. Huawei Technologies Co., Ltd. All rights reserved.
3 |
4 | Licensed under the Apache License, Version 2.0 (the "License");
5 | you may not use this file except in compliance with the License.
6 | You may obtain a copy of the License at
7 |
8 | http://www.apache.org/licenses/LICENSE-2.0
9 |
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | package com.huawei.hms.ads.sdk
17 |
18 | import android.os.Bundle
19 | import android.util.Log
20 | import android.view.View
21 | import android.widget.Button
22 | import android.widget.RadioGroup
23 | import android.widget.Toast
24 | import com.huawei.hms.ads.AdListener
25 | import com.huawei.hms.ads.AdParam
26 | import com.huawei.hms.ads.HwAds
27 | import com.huawei.hms.ads.InterstitialAd
28 |
29 | /**
30 | * Activity for displaying an interstitial ad.
31 | */
32 | class InterstitialActivity : BaseActivity() {
33 | private var displayRadioGroup: RadioGroup? = null
34 | private var loadAdButton: Button? = null
35 | private var interstitialAd: InterstitialAd? = null
36 | override fun onCreate(savedInstanceState: Bundle?) {
37 | super.onCreate(savedInstanceState)
38 | title = getString(R.string.interstitial_ad)
39 | setContentView(R.layout.activity_interstitial)
40 |
41 | // Initialize the Petal Ads SDK.
42 | HwAds.init(this)
43 | displayRadioGroup = findViewById(R.id.display_radio_group)
44 | loadAdButton = findViewById(R.id.load_ad)
45 | loadAdButton!!.setOnClickListener(View.OnClickListener { loadInterstitialAd() })
46 | }
47 |
48 | private val adListener: AdListener = object : AdListener() {
49 | override fun onAdLoaded() {
50 | super.onAdLoaded()
51 | showToast("Ad loaded")
52 | // Display an interstitial ad.
53 | showInterstitial()
54 | }
55 |
56 | override fun onAdFailed(errorCode: Int) {
57 | showToast("Ad load failed with error code: $errorCode")
58 | Log.d(TAG, "Ad load failed with error code: $errorCode")
59 | }
60 |
61 | override fun onAdClosed() {
62 | super.onAdClosed()
63 | showToast("Ad closed")
64 | Log.d(TAG, "onAdClosed")
65 | }
66 |
67 | override fun onAdClicked() {
68 | Log.d(TAG, "onAdClicked")
69 | super.onAdClicked()
70 | }
71 |
72 | override fun onAdOpened() {
73 | Log.d(TAG, "onAdOpened")
74 | super.onAdOpened()
75 | }
76 | }
77 |
78 | private fun loadInterstitialAd() {
79 | interstitialAd = InterstitialAd(this)
80 | interstitialAd!!.adId = adId
81 | interstitialAd!!.adListener = adListener
82 | val adParam = AdParam.Builder().build()
83 | interstitialAd!!.loadAd(adParam)
84 | }
85 |
86 | private val adId: String
87 | private get() = if (displayRadioGroup!!.checkedRadioButtonId == R.id.display_image) {
88 | getString(R.string.image_ad_id)
89 | } else {
90 | getString(R.string.video_ad_id)
91 | }
92 |
93 | private fun showInterstitial() {
94 | // Display an interstitial ad.
95 | if (interstitialAd != null && interstitialAd!!.isLoaded) {
96 | interstitialAd!!.show(this)
97 | } else {
98 | showToast("Ad did not load")
99 | }
100 | }
101 |
102 |
103 | private fun showToast(text: String) {
104 | runOnUiThread {
105 | Toast.makeText(this@InterstitialActivity, text, Toast.LENGTH_SHORT).show()
106 | }
107 | }
108 |
109 | companion object {
110 | private val TAG = InterstitialActivity::class.java.simpleName
111 | }
112 | }
113 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/native_three_images_template.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
16 |
20 |
21 |
27 |
28 |
34 |
35 |
41 |
42 |
43 |
50 |
58 |
69 |
82 |
92 |
93 |
94 |
95 |
96 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/native_ad_with_app_download_btn_template.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
14 |
15 |
19 |
20 |
25 |
26 |
35 |
36 |
48 |
49 |
62 |
63 |
64 |
70 |
71 |
85 |
86 |
98 |
99 |
100 |
101 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
15 |
20 |
25 |
30 |
35 |
40 |
45 |
50 |
55 |
60 |
65 |
70 |
75 |
80 |
85 |
90 |
95 |
100 |
105 |
110 |
115 |
120 |
125 |
130 |
135 |
140 |
145 |
150 |
155 |
160 |
165 |
170 |
171 |
--------------------------------------------------------------------------------
/app/src/main/java/com/huawei/hms/ads/sdk/BannerActivity.kt:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2020. Huawei Technologies Co., Ltd. All rights reserved.
3 |
4 | Licensed under the Apache License, Version 2.0 (the "License");
5 | you may not use this file except in compliance with the License.
6 | You may obtain a copy of the License at
7 |
8 | http://www.apache.org/licenses/LICENSE-2.0
9 |
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS,
12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | See the License for the specific language governing permissions and
14 | limitations under the License.
15 | */
16 | package com.huawei.hms.ads.sdk
17 |
18 | import android.graphics.Color
19 | import android.os.Bundle
20 | import android.view.View
21 | import android.widget.*
22 | import com.huawei.hms.ads.AdListener
23 | import com.huawei.hms.ads.AdParam
24 | import com.huawei.hms.ads.BannerAdSize
25 | import com.huawei.hms.ads.banner.BannerView
26 | import com.huawei.hms.ads.sdk.BannerActivity
27 | import java.util.*
28 |
29 | /**
30 | * Activity for displaying a banner ad.
31 | */
32 | class BannerActivity : BaseActivity() {
33 | private var bannerView: BannerView? = null
34 | private var defaultBannerView: BannerView? = null
35 | private var adFrameLayout: FrameLayout? = null
36 | private var sizeRadioGroup: RadioGroup? = null
37 | private var colorRadioGroup: RadioGroup? = null
38 |
39 | /**
40 | * Button tapping event listener.
41 | */
42 | private val buttonListener = View.OnClickListener { v ->
43 | defaultBannerView!!.visibility = View.INVISIBLE
44 | if (bannerView != null) {
45 | adFrameLayout!!.removeView(bannerView)
46 | bannerView!!.destroy()
47 | }
48 |
49 | // Call new BannerView(Context context) to create a BannerView class.
50 | bannerView = BannerView(v.context)
51 |
52 | // Set an ad slot ID.
53 | bannerView!!.adId = getString(R.string.banner_ad_id)
54 |
55 | // Set the background color and size based on user selection.
56 | val adSize = getBannerAdSize(sizeRadioGroup!!.checkedRadioButtonId)
57 | bannerView!!.bannerAdSize = adSize
58 | val color = getBannerViewBackground(colorRadioGroup!!.checkedRadioButtonId)
59 | bannerView!!.setBackgroundColor(color)
60 | adFrameLayout!!.addView(bannerView)
61 | bannerView!!.adListener = adListener
62 | bannerView!!.setBannerRefresh(60)
63 | bannerView!!.loadAd(AdParam.Builder().build())
64 | }
65 |
66 | /**
67 | * Ad listener.
68 | */
69 | private val adListener: AdListener = object : AdListener() {
70 | override fun onAdLoaded() {
71 | // Called when an ad is loaded successfully.
72 | showToast("Ad loaded.")
73 | }
74 |
75 | override fun onAdFailed(errorCode: Int) {
76 | // Called when an ad fails to be loaded.
77 | showToast(String.format(Locale.ROOT, "Ad failed to load with error code %d.", errorCode))
78 | }
79 |
80 | override fun onAdOpened() {
81 | // Called when an ad is opened.
82 | showToast(String.format("Ad opened "))
83 | }
84 |
85 | override fun onAdClicked() {
86 | // Called when a user taps an ad.
87 | showToast("Ad clicked")
88 | }
89 |
90 | override fun onAdLeave() {
91 | // Called when a user has left the app.
92 | showToast("Ad Leave")
93 | }
94 |
95 | override fun onAdClosed() {
96 | // Called when an ad is closed.
97 | showToast("Ad closed")
98 | }
99 | }
100 |
101 | override fun onCreate(savedInstanceState: Bundle?) {
102 | super.onCreate(savedInstanceState)
103 | title = getString(R.string.banner_ad)
104 | setContentView(R.layout.activity_banner)
105 | val bannerTitle = findViewById(R.id.text_banner)
106 | bannerTitle.text = "This is banner ads sample."
107 | sizeRadioGroup = findViewById(R.id.size_radioGroup)
108 | colorRadioGroup = findViewById(R.id.color_radioGroup)
109 |
110 | // Load the default banner ad.
111 | loadDefaultBannerAd()
112 |
113 | // Set the button for loading an ad.
114 | val loadButton = findViewById