layout.xmlでAdMob
制作中のテキストエディターも概ね完成してきたんで、AdMobつけてみたのだが、
前にブログエディターにAdMobをつけた際は、layout.xmlで設置するのがうまく行かなかったんだが、できた。
ググってもEclipseでのやり方ばかり出てきて、コマンドライン開発でのやり方が出てこないんだよね・・・
手元の開発環境では、
/opt/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib
にAdMobのライブラリが存在するが、まず開発用のディレクトリにまるごとコピーする。
コピー先のディレクトリに対して、プロジェクトのアップデートを行う。
元のプロジェクトが「target=android-9」になってるんで、ターゲットAPIレベルを変更しないとダメぽい。
AndroidManifest.xmlの変更
layout.xmlの編集
LinearLayoutでコンテンツと並べて下にAdMobを設置しているが、AdMobは十分な領域サイズがないと表示されないので、
LinearLayoutで縦に並べる場合はLinearLayoutの子要素全てがandroid:layout_height="wrap_content"でないと表示されないので注意。
MainActivity.javaの編集
ブログエディターの時はonCreate以外にonDestroyとかにも処理を書いたんだが、どうもonCreateだけでいいみたい。
これで表示された。
前にブログエディターにAdMobをつけた際は、layout.xmlで設置するのがうまく行かなかったんだが、できた。
ググってもEclipseでのやり方ばかり出てきて、コマンドライン開発でのやり方が出てこないんだよね・・・
手元の開発環境では、
/opt/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib
にAdMobのライブラリが存在するが、まず開発用のディレクトリにまるごとコピーする。
コピー先のディレクトリに対して、プロジェクトのアップデートを行う。
android update project -t 5 -p lib/google-play-services_lib
こんな感じで、-pオプションでコピー先のディレクトリを指定して、-tオプションでターゲットAPIレベルを変更する。元のプロジェクトが「target=android-9」になってるんで、ターゲットAPIレベルを変更しないとダメぽい。
AndroidManifest.xmlの変更
<manifest>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application>
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
<activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:theme="@android:style/Theme.Translucent"/>
</application>
</manifest>
変更箇所のみでこんな感じ。<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application>
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
<activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:theme="@android:style/Theme.Translucent"/>
</application>
</manifest>
layout.xmlの編集
<LinearLayout
xmlns:ads="http://schemas.android.com/apk/res-auto"
>
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="SMART_BANNER"
ads:adUnitId="AdMobのID"
/>
</LinearLayout>
ルート要素(ルートじゃなくても良いのかな?)でxmlnsを追加して、AdViewを設置。xmlns:ads="http://schemas.android.com/apk/res-auto"
>
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="SMART_BANNER"
ads:adUnitId="AdMobのID"
/>
</LinearLayout>
LinearLayoutでコンテンツと並べて下にAdMobを設置しているが、AdMobは十分な領域サイズがないと表示されないので、
LinearLayoutで縦に並べる場合はLinearLayoutの子要素全てがandroid:layout_height="wrap_content"でないと表示されないので注意。
MainActivity.javaの編集
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
public void onCreate(Bundle savedInstanceState){
AdView mAdView=(AdView)findViewById(R.id.adView);
mAdView.loadAd(new AdRequest.Builder().addTestDevice(AdRequest.DEVICE_ID_EMULATOR).build());
}
変更箇所のみでこんな感じ。import com.google.android.gms.ads.AdView;
public void onCreate(Bundle savedInstanceState){
AdView mAdView=(AdView)findViewById(R.id.adView);
mAdView.loadAd(new AdRequest.Builder().addTestDevice(AdRequest.DEVICE_ID_EMULATOR).build());
}
ブログエディターの時はonCreate以外にonDestroyとかにも処理を書いたんだが、どうもonCreateだけでいいみたい。
これで表示された。