Проблемы с интеграцией AdMob в приложение для Android

1

Я новичок в Java и Android-приложениях, поэтому, хотя это может быть торт для других, это дает мне некоторую головную боль. Приложение должно загружать, воспроизводить звуковой файл и закрываться. И он отлично работает без AdMob. С AdMob он запускается, вибрирует один раз (он не работает в нормальной версии), работает нормально, а затем застревает, вибрирует 3 раза и закрывается, бросая "Извините! Приложение NAME (процесс PROCESS.NAME) неожиданно остановилось. повторите попытку".

Я использую второе приложение и свою первую интеграцию с AdMob.

Следуя инструкциям SDK: http://www.admob.com/docs/AdMob_Android_SDK_Instructions.pdf

Что я сделал:
- Зарегистрированный - Получил SDK
- Добавлен .jar
- Добавлен код идентификатор папок, AdMobActivity и Track Market Installs из инструкций SDK в конце AndroidManifest.xml и отредактирован идентификатор pub
- Добавлено разрешение интернета - Добавлено "ADMOB_ALLOW_LOCATION_FOR_ADS" тоже
- Добавлен атрибут AdMob AdView для attrs.xml(я использую Eclipse, поэтому я сначала попытался добавить это к res/values ​​/strings.xml, затем создал новый xml и добавил к нему код)



Если вам нужен полный код, я отредактирую этот пост. Любая помощь приветствуется. Заранее благодарю вас Chris


(LogCat выбрасывает две небольшие ошибки без файлов AdMob (I//- ed import и AdView))
(LogCat WITH AdMob вызывает это)

12-11 14:50:00.266: ERROR/beep(284): started0
12-11 14:50:00.346: ERROR/AndroidRuntime(284): Uncaught handler: thread main exiting due to uncaught exception
12-11 14:50:00.368: ERROR/AndroidRuntime(284): java.lang.RuntimeException: Unable to start activity ComponentInfo{seven.kitty.purr/seven.kitty.purr.KittyPurr}: java.lang.NullPointerException
12-11 14:50:00.368: ERROR/AndroidRuntime(284):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
12-11 14:50:00.368: ERROR/AndroidRuntime(284):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
12-11 14:50:00.368: ERROR/AndroidRuntime(284):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
12-11 14:50:00.368: ERROR/AndroidRuntime(284):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
12-11 14:50:00.368: ERROR/AndroidRuntime(284):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-11 14:50:00.368: ERROR/AndroidRuntime(284):     at android.os.Looper.loop(Looper.java:123)
12-11 14:50:00.368: ERROR/AndroidRuntime(284):     at android.app.ActivityThread.main(ActivityThread.java:4363)
12-11 14:50:00.368: ERROR/AndroidRuntime(284):     at java.lang.reflect.Method.invokeNative(Native Method)
12-11 14:50:00.368: ERROR/AndroidRuntime(284):     at java.lang.reflect.Method.invoke(Method.java:521)
12-11 14:50:00.368: ERROR/AndroidRuntime(284):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
12-11 14:50:00.368: ERROR/AndroidRuntime(284):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
12-11 14:50:00.368: ERROR/AndroidRuntime(284):     at dalvik.system.NativeStart.main(Native Method)
12-11 14:50:00.368: ERROR/AndroidRuntime(284): Caused by: java.lang.NullPointerException
12-11 14:50:00.368: ERROR/AndroidRuntime(284):     at seven.kitty.purr.KittyPurr.onCreate(KittyPurr.java:20)
12-11 14:50:00.368: ERROR/AndroidRuntime(284):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
12-11 14:50:00.368: ERROR/AndroidRuntime(284):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
12-11 14:50:00.368: ERROR/AndroidRuntime(284):     ... 11 more
12-11 14:50:00.407: ERROR/dalvikvm(284): Unable to open stack trace file '/data/anr/traces.txt': Permission denied



Редактирование с полными .java и XML-кодами. Я сосать на Java, это так отличается от AS, PHP, JavaScript и других веб-языков, которые я обычно использую

KittyPurr.java

package seven.kitty.purr;

import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import com.admob.android.ads.AdManager;
import com.admob.android.ads.AdView;

public class KittyPurr extends Activity
{
  private MediaPlayer mMediaPlayer;
  public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
   playAudio();



  }

  private void playAudio () {
    try {
    mMediaPlayer = MediaPlayer.create(this, R.raw.purrr);
    mMediaPlayer.setLooping(false);
    Log.e("beep","started0");
    mMediaPlayer.start();

    AdView adView = (AdView)findViewById(R.id.ad);
    adView.requestFreshAd();

    mMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
            public void onCompletion(MediaPlayer arg0) {
         finish();
      }
    });
    } catch (Exception e) {
    Log.e("beep", "error: " + e.getMessage(), e);
    }
  }

  @Override
  protected void onDestroy() {
    super.onDestroy();
    if (mMediaPlayer != null) {
    mMediaPlayer.release();
    mMediaPlayer = null;
    }
  }
}



main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:myapp="http://schemas.android.com/apk/res/seven.kitty.purr"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<com.admob.android.ads.AdView
android:id="@+id/ad"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>



attrs.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="com.admob.android.ads.AdView">
<attr name="backgroundColor" format="color" />
<attr name="primaryTextColor" format="color" />
<attr name="secondaryTextColor" format="color" />
<attr name="keywords" format="string" />
<attr name="refreshInterval" format="integer" />
</declare-styleable>
</resources>
  • 0
    Пожалуйста, оставьте вывод logcat.
Теги:
admob
sdk
instructions

2 ответа

0
you need to add the following this in xml and if you want to test it in emulator
  then u need to set the **adrequest.setTestDevice(true)**

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        **xmlns:myapp="http://schemas.android.com/apk/libs/com.google.ads"**
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <com.google.ads.AdView
    android:id="@+id/ad"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    **myapp:adUnitId="Your Admob ID"
    myapp:adSize="BANNER"**
    />
    </LinearLayout>


in the AndroidManifest.xml you need to add the following thing

<activity android:name="com.google.ads.AdActivity"        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>

and one thing you need to consider that u need to compile project with android 3.2 or above
0

Добавлена ​​банка

означает, что вы добавляете файл в /libs? Если нет, сделайте это.

EDIT:

Вы используете неправильный onCreate. Это должно быть:

@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 ...
}
  • 0
    да, я добавил это в / libs и также добавил .jar в проект. так же, как это сказано в .pdf
  • 0
    Я только что отредактировал свой ответ. твое создание выглядит неправильно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню