少し前に、iOSでNendのアイコン広告を設定する方法をブログで書きました。 今回は、その続きAndroid編です。
相変わらず、Android側に広告を配置するには一筋縄ではいかずとても苦労しました。これが正しい方法かは別として、一応表示ができているので、もし参考になる部分があれば幸いです。
準備:SDKをプロジェクトに追加
NendのホームページからダウンロードしたSDKから、「nendSDK.jar」を、プロジェクトのlibsに追加します。
「プロパティ」にある「Javaのビルド・パス」から、「nendSDK.jar」を読み込めるようにします。
チェックのつけ忘れに注意。
最後に、Android.Manifestに以下の記述をして完了です。 [c]
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" />
[/c]
ここまでは、SDK付属のマニュアル通りなので大丈夫でしょう。
実装
Cocos2dActivity内に記述をします。 必要なフレームワークをインポートし、下記のようにコードを書けばcocos2dxで表示できます。 [c]
public class AdApp extends Cocos2dxActivity{
private static Cocos2dxActivity me = null;
private static NendAdIconLayout iconLayout;
private final int WC = FrameLayout.LayoutParams.WRAP_CONTENT;
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
me = this;
//Nendアイコン表示
iconLayout = new NendAdIconLayout(getApplicationContext(),101282, "0c734134519f25412ae9a9bff94783b81048ffbe",4);//本番のID
iconLayout.setTitleColor(Color.WHITE);
final FrameLayout.LayoutParams adParams = new FrameLayout.LayoutParams(WC,WC);
adParams.gravity = (Gravity.BOTTOM|Gravity.CENTER);
WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE);
Display disp = wm.getDefaultDisplay();
int yPos = (disp.getHeight() * 60) / 480;
adParams.setMargins(0, 0, 0, yPos);
addContentView(iconLayout, adParams);
iconLayout.loadAd();
//iconLayout.setVisibility(View.INVISIBLE);
}
[/c]
アイコンの位置
今回説明する方法は、アイコンを横に並べる方法です。 NendAdIconLayoutクラスを初期化する際に、アイコンの数を決めています。 これ以外にも、マニュアルには個別にアイコンの位置を設定できる方法もあるみたいですが、今回は説明していません。
アイコンの高さ
アイコンを一番上に表示するときには、以下のようにして下さい。
[c]
final FrameLayout.LayoutParams adParams = new FrameLayout.LayoutParams(WC,WC); addContentView(iconLayout, adParams);
[/c]
アイコンを一番下に表示するときには、以下のようにして下さい。 [c]
final FrameLayout.LayoutParams adParams = new FrameLayout.LayoutParams(WC,WC); adParams.gravity = (Gravity.BOTTOM|Gravity.CENTER); addContentView(iconLayout, adParams);
[/c]
アイコン位置を調整する場合は、以下のようにして下さい。 [c]
final FrameLayout.LayoutParams adParams = new FrameLayout.LayoutParams(WC,WC); adParams.gravity = (Gravity.BOTTOM|Gravity.CENTER); WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE); Display disp = wm.getDefaultDisplay();
//ここの数字を変えて下さい。 int yPos = (disp.getHeight() * 60) / 480; adParams.setMargins(0, 0, 0, yPos); addContentView(iconLayout, adParams);
[/c]
アイコンの表示・非表示
SceneやLayerによって、広告を出す出さないがあると思います。 その際は、以下のようにすれば、上手く調整ができました。[c]
public static void showIconAd(){
me.runOnUiThread(new Runnable(){
public void run(){
if(iconLayout != null){
Log.d("Cocos2s Activity", " アイコン広告表示");
iconLayout.setVisibility(View.VISIBLE);
}
}
});
}
public static void hideIconAd(){
me.runOnUiThread(new Runnable(){
public void run(){
if(iconLayout != null){
Log.d("Cocos2s Activity", " アイコン広告非表示");
iconLayout.setVisibility(View.INVISIBLE);
}
}
});
}
[/c]