「Android/広告組込/google/admob/バナー」の版間の差分
ナビゲーションに移動
検索に移動
編集の要約なし |
|||
| (同じ利用者による、間の9版が非表示) | |||
| 14行目: | 14行目: | ||
android:paddingBottom="@dimen/activity_vertical_margin" | android:paddingBottom="@dimen/activity_vertical_margin" | ||
tools:context=".MainActivity"> | tools:context=".MainActivity"> | ||
<TextView android:text="@string/hello_world" | <TextView android:text="@string/hello_world" | ||
android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||
android:layout_height="wrap_content" /> | android:layout_height="wrap_content" /> | ||
<com.google.android.gms.ads.AdView | <com.google.android.gms.ads.AdView | ||
| 33行目: | 31行目: | ||
</RelativeLayout> | </RelativeLayout> | ||
</pre> | </pre> | ||
| 103行目: | 100行目: | ||
</pre> | </pre> | ||
== | ==AdManagerからAdMobへ変換== | ||
*setAdSizes()をsetAdSize()へ | *setAdSizes()をsetAdSize()へ | ||
*com.google.android.gms.ads.doubleclick.PublisherAdView を com.google.android.gms.ads.AdView へ | |||
*com.google.android.gms.ads.doubleclick.PublisherAdRequest を com.google.android.gms.ads.AdRequest へ | |||
*PublisherAdRequestをAdRequestへ | |||
*PublisherInterstitialAdをInterstitialAdへ | |||
==タブレットのサイズ== | |||
タブレット端末のディスプレイサイズのdisplaysize.y + 1まで広告は表示されるが、displaysize.y + 2で表示されなくなり、"Ad failed to load : 1"のエラーログが発生するようになる。 | |||
ディスプレイサイズの定義はここらへん参考に | |||
https://akira-watson.com/android/theme-notitlebar.html | |||
==TestDevice== | |||
テスト端末として認識させる。idは端末ごとに違う。admobに接続してlogcatで確認できる。 | |||
<pre> | |||
AdRequest request = new AdRequest.Builder() | |||
.addTestDevice("33BE2250B43518CCDA7DE426D04Exxxx") | |||
.build(); | |||
</pre> | |||
or | |||
<pre> | |||
AdRequest.Builder adRequestBuilder = new AdRequest.Builder(); | |||
adRequestBuilder.addTestDevice("33BE2250B43518CCDA7DE426D04xxxx"); | |||
AdRequest adRequest = adRequestBuilder.build(); | |||
</pre> | |||
==TestDevice(19.0.0以降)== | |||
<pre> | |||
List<String> testDevices = new ArrayList<>(); | |||
testDevices.add(AdRequest.DEVICE_ID_EMULATOR); | |||
RequestConfiguration requestConfiguration | |||
= new RequestConfiguration.Builder() | |||
.setTestDeviceIds(testDevices) | |||
.build(); | |||
MobileAds.setRequestConfiguration(requestConfiguration); | |||
AdRequest.Builder().build(); | |||
</pre> | |||
参考:https://stackoverflow.com/questions/60539407/after-updating-google-ads-sdk-addtestdevice-is-deprecated-how-to-resolve | |||
=="java.lang.IllegalStateException: The ad size can only be set once on AdView."エラーが出る場合== | |||
2回以上AdSizeを設定しているので、一度入れたら設定しないようにする。 | |||
mAdView = new AdView(this); | |||
if (mAdView.getAdSize() == null) { | |||
mAdView.setAdSize(AdSize.BANNER); | |||
} | |||
if (mAdView.getAdUnitId() == null) { | |||
mAdView.setAdUnitId("ca-app-pub-1234hogehogehogehoge/1234hoge"); | |||
} | |||
2020年8月24日 (月) 08:06時点における最新版
公式
https://developers.google.com/admob/android/banner?hl=ja
レイアウト
main_activity.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<TextView android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="BANNER"
ads:adUnitId="ca-app-pub-3940256099942544/6300978111">
</com.google.android.gms.ads.AdView>
</RelativeLayout>
サイズ設定とunitId設定
AdView adView = new AdView(this);
adView.setAdSize(AdSize.BANNER);
adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
ロード処理
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
public class MainActivity extends AppCompatActivity {
private AdView mAdView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MobileAds.initialize(this, new OnInitializationCompleteListener() {
@Override
public void onInitializationComplete(InitializationStatus initializationStatus) {
}
});
mAdView = findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
}
}
イベント周り
mAdView.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
// Code to be executed when an ad finishes loading.
}
@Override
public void onAdFailedToLoad(int errorCode) {
// Code to be executed when an ad request fails.
}
@Override
public void onAdOpened() {
// Code to be executed when an ad opens an overlay that
// covers the screen.
}
@Override
public void onAdClicked() {
// Code to be executed when the user clicks on an ad.
}
@Override
public void onAdLeftApplication() {
// Code to be executed when the user has left the app.
}
@Override
public void onAdClosed() {
// Code to be executed when the user is about to return
// to the app after tapping on an ad.
}
});
AdManagerからAdMobへ変換
- setAdSizes()をsetAdSize()へ
- com.google.android.gms.ads.doubleclick.PublisherAdView を com.google.android.gms.ads.AdView へ
- com.google.android.gms.ads.doubleclick.PublisherAdRequest を com.google.android.gms.ads.AdRequest へ
- PublisherAdRequestをAdRequestへ
- PublisherInterstitialAdをInterstitialAdへ
タブレットのサイズ
タブレット端末のディスプレイサイズのdisplaysize.y + 1まで広告は表示されるが、displaysize.y + 2で表示されなくなり、"Ad failed to load : 1"のエラーログが発生するようになる。
ディスプレイサイズの定義はここらへん参考に https://akira-watson.com/android/theme-notitlebar.html
TestDevice
テスト端末として認識させる。idは端末ごとに違う。admobに接続してlogcatで確認できる。
AdRequest request = new AdRequest.Builder()
.addTestDevice("33BE2250B43518CCDA7DE426D04Exxxx")
.build();
or
AdRequest.Builder adRequestBuilder = new AdRequest.Builder();
adRequestBuilder.addTestDevice("33BE2250B43518CCDA7DE426D04xxxx");
AdRequest adRequest = adRequestBuilder.build();
TestDevice(19.0.0以降)
List<String> testDevices = new ArrayList<>();
testDevices.add(AdRequest.DEVICE_ID_EMULATOR);
RequestConfiguration requestConfiguration
= new RequestConfiguration.Builder()
.setTestDeviceIds(testDevices)
.build();
MobileAds.setRequestConfiguration(requestConfiguration);
AdRequest.Builder().build();
"java.lang.IllegalStateException: The ad size can only be set once on AdView."エラーが出る場合
2回以上AdSizeを設定しているので、一度入れたら設定しないようにする。
mAdView = new AdView(this);
if (mAdView.getAdSize() == null) {
mAdView.setAdSize(AdSize.BANNER);
}
if (mAdView.getAdUnitId() == null) {
mAdView.setAdUnitId("ca-app-pub-1234hogehogehogehoge/1234hoge");
}