AdMob2014. 8. 14. 19:16

세로모드에서 사라지는 광고

세로모드에서 사라지는 구글 광고

세로모드에서 사라지는 구글 애드몹

세로모드에서 사라지는 구글 AddMob

세로모드에서 사라지는 Google AddMob

portrait에서 사라지는 Google AddMob

AdMob disappear in  portrait mode

AdMob disappear in  portrait orientation

Google AdMob disappear in portrait orientation



애드몹을 어플리케이션에 띄우려고 약 2일 보냈습니다. 이렇게 저렇게 해도 애드몹(AdMob)이 나오지 않더군요. 처음 시작할 때 아래 구글 애드몹 개발자 사이트(Google Developers)에 있는 코드를 따라 쳤는데 광고는 보이지 않았습니다. 


https://developers.google.com/mobile-ads-sdk/docs

https://developers.google.com/mobile-ads-sdk/docs/admob/fundamentals



인터넷 사이트와 블로그를 뒤져보아도 거의 모두가 위와 같습니다. 간단하게 위와 같이 하면 애드몹이 뜬다고만 나옵니다. 2일간 같은 일을 조금씩 다르게 여러 가지로 반복했습니다. 결과가 약간 달라졌습니다. 광고가 가로모드에서만 뜨더군요.

구글 플레이 서비스(Google Play service)에 있는 샘플 프로젝트 GoogleAdsSampleActivity를 들여다 보아도 광고가 세로모드에서 작동하지 않았습니다.



이클립스가 생성한 activity_tst.xml 부분은 이렇습니다.

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/mainLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#000000" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="hyun.esim.esimlight.ESImLightActivity" >

위 코드는 이클립스에서 만들어주는 가장 간단한 안드로이드 프로젝트입니다. 아무것도 추가 하지 않은 액티비트(Activity) 하나만 가지는 것입니다. 이것이 눈으로는 차이가 없어 보이나 제거해도 큰 차이가 없는 줄(Line)이 있었습니다.



패딩(padding)에 관련한 부분을 지원주면 광고가 이상없이 작동합니다.


    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"




영문 구글링을 하면서 발견한 문구가 해결책이었습니다. 

AdMob AdView only appearing in landscape orientation

you should check if the parent container is padded


구글 광고를 자작 앱에 올리려고 2일 간 이것 저것 건드리면서 몇 가지를 수확한 가치있는 시간이었습니다.

 가로모드에서 뜨는 애드몹| 가로모드에서만 보이는 광고| Landscape에서 보이는 광고| Landscape에서 보이는 애드몹

Landscape에서 보이는 AddMob| AddMob shows up in Landscape orientation |AddMob shows up in Landscape mode

Posted by 코드버무려
AdMob2014. 8. 13. 12:57


안드로이드 매너패스트(AndroidManifest.xml) 요소 내에  meta-data 태그를 추가


    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
<!-- AdMob -->
        <meta-data android:name="com.google.android.gms.version"
               android:value="@integer/google_play_services_version"/>
        
        <activity



AndroidManifest.xml에 com.google.android.gms.ads.AdActivity를 선언


<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- AdMob --> <activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/> </application>




AndroidManifest.xml에 권한을 선언

INTERNET ; 필수. 인터넷에 액세스하여 광고를 요청하는 데 사용됩니다.

ACCESS_NETWORK_STATE ; 선택사항. 광고를 요청하기 전에 인터넷 연결을 사용할 수 있는지 확인하는 데 사용됩니다.


</application> <!-- AdMob --> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> </manifest>



이것으로 프로젝트를 매끄럽게 빌드할 수 있습니다.

애드몹 AddMob이 이클립스 프로젝트에 오류없이 통합 완료되었습니다.

광고 배너를 코드에 추가하지 않아 앱을 실행하였을 때 겉으로 보이는 차이점은 없어요.

다음에서 원하는 액티비티에  AdMob 광고 단위를 붙여 화면에 쫙 뜨도록 해보겠습니다.





Posted by 코드버무려
AdMob2014. 8. 13. 12:53


 AdMob을 안드로이드 앱에 달기

구글 애드몹 앱에 설치

어플리케이션에 구글 애드몹 달기

앱에 애드몹 달기

이클립스에 애드몹 설정



안드로이드 어플리케이션(Application)에 애드몹(AdMob)를 사용하려면 SDK를 업그레이드해 Google Play 서비스(Google Play Services)를 사용해야합니다. 기존에 시용하던 애드몹 SDK v6.4.1과 그 이전 버전으로는 2014년 8월 31일 일요일 부터는 사용할 수 없습니다. 구글 플레이 (Google Play)와 합쳐져 새롭게 출시된 구글 애드몹 사용법을 알아보겠습니다.



  • google-play-services_lib를 이클립스에 import하면 Package Explorer에 프로젝트로 등록.
    1. File > Import... > Android 폴더 > Existing Android Code Into workspace >Browerse...
  • 이클립스와 안드로이드 SDK를 설치한 폴더에서 google-play-services_lib를 선택하고 Copy projects into workspace체크하고 확인.
    1. adt-bundle-windows-x86-20140702\sdk\extras\google\google_play_services\libproject



  • File > New > Android Application Prooject > 에서 프로젝트를 만듭니다. 여기서는 TstAdMob!
  • Package Explorer에서 TstAdMob 프로젝트를 우클릭 > Properties > Android > 오른쪽 아래 Add 버튼 > 위에서 추가한 google-play-services_lib를 선택해 추가함.


이것으로 프로젝트 외부 설정은 모두 끝났습니다.

다음 부터는 AdMob을 앱에 달기위한 java와 xml를 수정하는 내용입니다.


Posted by 코드버무려
Android 안드로이드2014. 8. 13. 12:41

안드로이드 액티비티 타이틀바 없에기

안드로이드 액티비티 타이틀바 삭제

안드로이드 액티비티 타이틀바 제거

안드로이드 Activity의 Title bar 제거하기

안드로이드 Activity의 Title bar 삭제하기

액티비티 타이틀바 제거하기

액티비티 타이틀바 삭제

Removing the title bar from some Activity




크게 3가지로 Activity에서 타이틀바를 보이지 않게 할 수 있다.


ㅁ 1. manifest 파일에서 타이틀바를 제거하려는 activity element의 속성에 추가

    android:theme="@android:style/Theme.NoTitleBar"




ㅁ2. 매니페스트 메인액티비티 윗 부분에 android:theme = "@android:style/Theme.NoTitleBar" 추가하세요 

<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme = "@android:style/Theme.NoTitleBar.Fullscreen">

....

</application>



<application android:allowbackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@android:style/Theme.Black.NoTitleBar">

.....

</application>




ㅁ3. 프로그램 코드로 삽입

    requestWindowFeature(Window.FEATURE_NO_TITLE);


삽입 위치는 onCreate() 내부에 setContentView(R.layout.acty_mnlivememo) 코드 전에 호출하고

import android.view.Window를 임포트 해준다.


protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE); 

setContentView(R.layout.acty_mnlivememo);




manifest 파일로 타이틀바 삭제를 권장합니다. 매너페스트 파일에 titlebar 소거를 설정할 경우 처음부터 타이틀바가 존재하지 않는다. 코드로 쓸 경우는 사람이 인지할 수 없을 정도로 타이틀바를 가져오고 requestWindowFeature(Window.FEATURE_NO_TITLE);를 만나면 비로서 타이틀바를 삭제한다. 속도 차이는 미세하나 manifest  쪽이 더 빠르다. 동적으로 타이틀바를 보이게 보이지 않게하려면 코드에 쓰는 방식이 필요하다.


Posted by 코드버무려
Android 안드로이드2014. 8. 12. 18:13

안드로이드 개발자 콘솔에 APK 파일을 업로드 실패


Adam.Eve.appname 이라고 패키지를 정했던 것이 오류를 유발했다.

패키지 이름은 모두 소문자로 이루어져야 한다.




Posted by 코드버무려