2017-03-17 8 views
-1

アンドロイドゲームで編集中で、メインXMLがなく、インタースティシャル広告を画面に表示したいと思います。 string.xmlを、単位広告IDを入れて..しかし、任意のAD を示していないと私は広告のFirebaseスタッフのパットが、私はこのエラーエラー:(125,25)エラー:AdRequest()がAdRequestでプライベートアクセスを持っています

Error:(125, 25) error: AdRequest() has private access in AdRequest 

に直面し、これが私のメインのjavaです:

package com.mogames.beachguard; 

import java.util.ArrayList; 

import android.content.ActivityNotFoundException; 
import android.content.Intent; 
import android.content.pm.ActivityInfo; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.LinearGradient; 
import android.graphics.Paint; 
import android.graphics.Path; 
import android.graphics.PointF; 
import android.graphics.Shader; 
import android.graphics.Typeface; 
import android.media.AudioManager; 
import android.media.MediaPlayer; 
import android.media.SoundPool; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.MotionEvent; 
import android.widget.Toast; 

import com.google.ads.Ad; 
import com.google.ads.AdListener; 
import com.google.ads.AdRequest; 
import com.google.ads.InterstitialAd; 
import com.google.ads.AdRequest.ErrorCode; 
import com.mogames.nudge.Button; 
import com.mogames.nudge.HighScoreManager; 
import com.mogames.nudge.Instance; 
import com.mogames.nudge.ObjectManager; 
import com.mogames.nudge.Physics; 
import com.mogames.nudge.Screen; 
import com.mogames.nudge.Sprite; 


public class MainGame extends Screen { 

    //paints 
    Paint background_shader = new Paint(); 
    Paint Title_Paint = new Paint(); 
    Paint SubTitle_Paint = new Paint(); 
    Paint Score_Paint = new Paint(); 
    Paint Instruction_Paint = new Paint(); 
    Paint Sand_shader = new Paint(); 

    //background 
    Bitmap background; 

    //instances 
    ArrayList<Instance> bubbles = new ArrayList<Instance>(); 
    Sprite bubble_sprite, bubble_sprite2; 

    //physics 
    Physics physics = new Physics(); 

    //states 
    final int MENU = 0, GAMEPLAY = 1, HIGHSCORES = 2, GAMEOVER = 3; 
    int state = MENU; 
    boolean pause = false, notstarted = true; 

    //menu buttons 
    Button btn_Play, btn_Highscores, btn_Exit, btn_Home, btn_facebook, btn_Replay, btn_sound_mute, btn_music_mute, btn_pause, btn_rate; 
    Sprite play_btn_sprite, pause_btn_sprite, beach_sprite, bottle_sprite, grass_sprite; 

    //score 
    int score = 0; 
    HighScoreManager highscoreManager; 
    HighScoreManager.Highscore[] highscore_list; 
    Sprite score_cup; 

    //sound 
    SoundPool sp; 
    MediaPlayer music; 
    int sound_beep, sound_bubble, sound_gameover; 
    boolean sound_muted = false, music_muted = false; 
    Sprite sound_on, sound_off, music_on, music_off; 

    //Colors 
    //TODO: Feel free to change these colors 
    final int BLACK = Color.argb(255, 51, 51, 51); 
    final int RED = Color.argb(255, 255, 112, 80); 
    final int WHITE = Color.argb(255, 255, 255, 255); 
    final int YELLOW = Color.argb(255, 255, 237, 90); 
    final int PEACH = Color.argb(255, 204, 196, 168);//sand color 

    //ad 
    private InterstitialAd interstitial; 
    int ad_counter = 0; 

    //game over counter 
    int gameover_counter = 0; 
    boolean game_over = false; 

    //TODO: variables you can change to control game speed, delays... 
    int gameover_delay = 20; 
    int sand_height = 50; 

    //Fish 
    ObjectManager fishManager; 
    final int JELLYFISH = 0, SPICKY = 1, PIRANHA = 2, SWORDY = 3, SHARK = 4; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
     //setDebugMode(true); 
     //initialiseAccelerometer(); 

     //highscores 
     highscoreManager = new HighScoreManager(this, savedInstanceState, layout); 

     // Create the interstitial 
     interstitial = new InterstitialAd(this, getResources().getString(R.string.InterstitialAd_unit_id)); 

    } 

    public void openAd() { 
     runOnUiThread(new Runnable() { 
      public void run() { 
       // Create ad request 
       AdRequest request = new AdRequest(); 

       // Begin loading your interstitial 
       interstitial.loadAd(request); 

       // Set Ad Listener to use the callbacks below 
       interstitial.setAdListener(new AdListener() { 

        @Override 
        public void onReceiveAd(Ad arg0) { 
         if (interstitial.isReady()) { 
          interstitial.show(); 
         } 
        } 

        @Override 
        public void onPresentScreen(Ad arg0) { 
        } 

        @Override 
        public void onLeaveApplication(Ad arg0) { 
        } 

        @Override 
        public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) { 
        } 

        @Override 
        public void onDismissScreen(Ad arg0) { 
        } 
       }); 
      } 
     }); 
    } 
...................... 

これはMy Screen Javaコードです:

package com.mogames.nudge; 

import com.google.ads.AdRequest; 
import com.google.ads.AdSize; 
import com.google.ads.AdView; 

import android.app.Activity; 
import android.content.Context; 
import android.content.pm.ActivityInfo; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.graphics.PointF; 
import android.hardware.Sensor; 
import android.hardware.SensorEvent; 
import android.hardware.SensorEventListener; 
import android.hardware.SensorManager; 
import android.os.Bundle; 
import android.os.SystemClock; 
import android.view.Display; 
import android.view.DragEvent; 
import android.view.KeyEvent; 
import android.view.MotionEvent; 
import android.view.Surface; 
import android.view.SurfaceHolder; 
import android.view.SurfaceView; 
import android.view.View; 
import android.view.View.OnDragListener; 
import android.view.Window; 
import android.view.WindowManager; 
import android.view.View.OnTouchListener; 
import android.widget.RelativeLayout; 
import android.widget.RelativeLayout.LayoutParams; 

public class Screen extends Activity implements Runnable, OnTouchListener, SensorEventListener { 
    private SurfaceHolder holder; 
    private boolean locker = true, initialised = false; 
    private Thread thread; 
    //public WakeLock WL; 
    private int width = 0, height = 0; 
    public float cameraX = 0, cameraY = 0; 

    public Activity activity = this; 
    public boolean debug_mode = false; 
    private long now = SystemClock.elapsedRealtime(), lastRefresh, lastfps; 
    public SurfaceView surface; 
    private int fps = 0, frames = 0, runtime = 0, drawtime = 0; 

    //sensor 
    SensorManager sm; 
    Sensor s; 
    float sensorx, calibratex = 0; 
    float sensory, calibratey = 0; 
    private boolean default_lanscape = false; 
    private int default_lanscape_rotation = 0; 

    //world origin 
    public final int TOP_LEFT = 0, BOTTOM_LEFT = 1; 
    public int origin = TOP_LEFT; 

    //layout 
    public RelativeLayout layout; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     activity = this; 

     //full screen 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

     //create surface 
     layout = new RelativeLayout(this); 
     surface = new SurfaceView(this); 

     //TODO:MAKE SURE TO REMOVE INTERSTATIAL ADs BY GOING TO MAINGAME.JAVA LINE 595 AND REMOVING openAd(); 
       //AdView ad = new AdView(this, AdSize.BANNER, "ca-app-pub-9058687372170937/9187964203"); //make sure id is of banner ad. 
       //layout 
//    RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
//    params1.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
//    params1.addRule(RelativeLayout.CENTER_HORIZONTAL); 
//    ad.setLayoutParams(params1); 
//    layout.addView(ad); 
//    AdRequest request = new AdRequest(); 
//    ad.loadAd(request); 
     //TODO :---------------------------------------------------------------------------------------------------------------------------------------------- 

     layout.addView(surface); 
     setContentView(layout); 
     holder = surface.getHolder(); 

     //listeners 
     surface.setOnTouchListener(this); 

     // start game loop 
     thread = new Thread(this); 
     thread.start(); 

     onCreate(); 

    } 

    /* Main game loop.......................................................... */ 
    @Override 
    public void run() { 
     //int rand = (int) (Math.random() * 100); 
     synchronized (ACCESSIBILITY_SERVICE) { 

      while (locker) { 
       //System.out.println("start-"); 

       now = SystemClock.elapsedRealtime(); 
       if (now - lastRefresh > 37) {//limit 35fps - 28 
        lastRefresh = SystemClock.elapsedRealtime(); 
        if (!holder.getSurface().isValid()) { 
         continue; 
        } 

        //fps 
        if (now - lastfps > 1000) { 
         fps = frames; 
         frames = 0; 
         lastfps = SystemClock.elapsedRealtime(); 
        } else { 
         frames++; 
        } 

        //step 
        if (initialised) 
         Step(); 
        //take run time 
        runtime = (int) (SystemClock.elapsedRealtime() - lastRefresh); 

        //draw screen 
        Canvas canvas = holder.lockCanvas(); 
        if (initialised) 
         Draw(canvas); 
        else { 
         //initialise game 
         width = canvas.getWidth(); 
         height = canvas.getHeight(); 
         Start(); 
         initialised = true; 
        } 
        holder.unlockCanvasAndPost(canvas); 
        //take render time 
        drawtime = (int) (SystemClock.elapsedRealtime() - lastRefresh) - runtime; 
       } 
       //System.out.println("finish-----"); 
       //try { 
       // Thread.sleep(10); 
       //} catch (InterruptedException e) { 
       // e.printStackTrace(); 
       //} 
      } 
     } 
    } 

    /* Detect and override back press */ 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     super.onKeyDown(keyCode, event); 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      BackPressed(); 
      return false; 
     } 

     return false; 
    } 

    /* Events.................................................................. */ 
    public void onCreate() { 

    } 

    public void Start() { 

    } 

    synchronized public void Step() { 

    } 

    public void Draw(Canvas canvas) { 
     if (debug_mode) { 
      Paint paint = new Paint(); 
      paint.setColor(Color.BLACK); 
      paint.setTextSize(dpToPx(20)); 
      canvas.drawText("Width: " + width + ", Height: " + height, 5, dpToPx(20), paint); 
      canvas.drawText("default landscape: " + default_lanscape + " Rotation: " + default_lanscape_rotation, 5, 5 + dpToPx(20) * 2, paint); 
      canvas.drawText("FPS: " + fps + "run_time: " + runtime + "draw_time: " + drawtime, 5, 5 + dpToPx(20) * 3, paint); 
     } 

    } 

    public void Finish() { 

    } 

    public void Pause() { 
     locker = false; 

     while (true) { 
      try { 
       thread.join(); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
      break; 
     } 
     thread = null; 
    } 

    public void Resume() { 
     locker = true; 
     thread = new Thread(this); 
     thread.start(); 
    } 

    public synchronized void BackPressed() { 

    } 

    public synchronized void onTouch(float TouchX, float TouchY, MotionEvent event) { 
    } 

    public synchronized void onAccelerometer(PointF point) { 
    } 

    /* Functions............................................................... */ 
    public void Exit() { 
     locker = false; 

     while (true) { 
      try { 
       thread.join(); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
      break; 
     } 
     thread = null; 

     System.exit(0); 
     activity.finish(); 
    } 

    public Activity getActivity() { 
     return activity; 
    } 

    public void setDebugMode(boolean debugModeOn) { 
     debug_mode = debugModeOn; 
    } 

    //screen related 
    public int ScreenWidth() { 
     return width; 
    } 

    public int ScreenHeight() { 
     return height; 
    } 

    /** 
    * World X to Screen X 
    * 
    * @param worldX 
    *   The x-coordinate relative to the world 
    */ 
    public int ScreenX(float worldX) { 
     return (int) (worldX - cameraX); 
    } 

    /** 
    * World Y to Screen Y 
    * 
    * @param worldY 
    *   The Y-coordinate relative to the world 
    */ 
    public int ScreenY(float worldY) { 
     if (origin == TOP_LEFT) 
      return (int) (worldY - cameraY); 
     else 
      return ScreenHeight() - (int) (worldY - cameraY); 
    } 

    /** 
    * World origin (0,0) 
    * 
    * @param origin 
    *   TOP_LEFT or BOTTOM_LEFT 
    */ 
    public void setOrigin(int origin) { 
     this.origin = origin; 
    } 

    public boolean inScreen(float x, float y) { 
     return ((ScreenY(y) > 0 && ScreenY(y) < ScreenHeight()) && (ScreenX(x) > 0 && ScreenX(x) < ScreenWidth())); 
    } 

    public int dpToPx(int dp) { 
     float density = getApplicationContext().getResources().getDisplayMetrics().density; 
     return Math.round((float) dp * density); 
    } 

    //sensor related 
    public void initialiseAccelerometer() { 
     //device has its default landscape or portrait 
     Display display = ((WindowManager) activity.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); 
     int rotation = display.getRotation(); 
     if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) { 
      //portrait 
      if (rotation == Surface.ROTATION_0) 
       default_lanscape = false; 
      if (rotation == Surface.ROTATION_180) 
       default_lanscape = false; 
      if (rotation == Surface.ROTATION_90) 
       default_lanscape = true; 
      if (rotation == Surface.ROTATION_270) 
       default_lanscape = true; 
     } else { 
      //landscape 
      if (rotation == Surface.ROTATION_0) 
       default_lanscape = true; 
      if (rotation == Surface.ROTATION_180) 
       default_lanscape = true; 
      if (rotation == Surface.ROTATION_90) 
       default_lanscape = false; 
      if (rotation == Surface.ROTATION_270) 
       default_lanscape = false; 
     } 
     default_lanscape_rotation = rotation; 

     sm = (SensorManager) activity.getSystemService(Context.SENSOR_SERVICE); 
     if (sm.getSensorList(Sensor.TYPE_ACCELEROMETER).size() != 0) { 
      s = sm.getSensorList(Sensor.TYPE_ACCELEROMETER).get(0); 
      sm.registerListener(this, s, SensorManager.SENSOR_DELAY_NORMAL); 
     } 

    } 

    public void CalibrateAccelerometer() { 
     calibratex = sensorx * Math.abs(sensorx); 
     calibratey = sensory * Math.abs(sensory); 
    } 

    public PointF getAccelerometer() { 
     return new PointF((sensorx * Math.abs(sensorx) - calibratex), (sensory * Math.abs(sensory) - calibratey)); 
    } 

    /* Touch events.......................................................... */ 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if (initialised) { 
      onTouch(event.getX(), event.getY(), event); 
     } 
     return true; 
    } 

    @Override 
    public void onAccuracyChanged(Sensor sensor, int accuracy) { 
    } 

    @Override 
    public void onSensorChanged(SensorEvent event) { 
     if (initialised) { 
      //read values 
      if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) { 
       if (default_lanscape) { 
        sensorx = -event.values[1]; 
        sensory = -event.values[0]; 
       } else { 
        sensory = event.values[1]; 
        sensorx = -event.values[0]; 
       } 
      } else { 
       if (default_lanscape) { 
        sensory = event.values[1]; 
        sensorx = -event.values[0]; 
       } else { 
        sensorx = event.values[1]; 
        sensory = event.values[0]; 
       } 
      } 

      //call accelerometer event 
      onAccelerometer(new PointF((sensorx - calibratex), (sensory - calibratey))); 

     } 
     //sleep for a while 
     try { 
      Thread.sleep(16); 
     } catch (InterruptedException ex) { 
      ex.printStackTrace(); 
     } 
    } 

    /* pause, destroy, resume................................................ */ 
    @Override 
    protected void onResume() { 
     super.onResume(); 
     Resume(); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     Pause(); 

    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     Finish(); 
    } 

} 

そして、これは私のstring.xmlを次のとおりです。

<?xml version="1.0" encoding="utf-8"?> 

<!-- TO MODIFY MOST OF THE COLORS AND VARIABLES OPEN MAINGAME.JAVA AND SEARCH FOR TODO TAGS. THEY INDICATE THINGS YOU NEED TO CHANGE --> 
<!-- App Name --> 
<string name="app_name">Beach Guard</string> 

<!-- Game Over --> 
<string name="game_over">Game Over</string> 

<!-- Top scores menu --> 
<string name="Highscores">Top Scores</string> 
<string name="Enter_highscore_comment">Congrats! Enter your name</string> 
<string name="Default_topscore_name">LifeGuard</string> 

<!-- Game Play --> 
<string name="Paused">Paused</string> 
<string name="Tap_to_start">The Beach is Being Invaded.</string> 
<string name="Tap_to_start2">Tap On All Fish Fast!</string> 

<!-- Main Menu --> 
<string name="Play">Play</string> 

<!-- Facebook settings_________________________________________________________________________________________________________________ --> 
<!-- Create a new app on facebook, give it the hash of this App and the package name, then put the id here --> 
<string name="app_facebook_id">194556057705301</string> 
<string name="Error_no_facebook_app_installed">Facebook not installed on your Device.</string> 
<string name="facebook_share_description">Check out my score on Sea Defense!</string> 
<string name="facebook_share_title">My Score: </string> 
<string name="facebook_share_picture_url">https://farm8.staticflickr.com/7363/12801590414_6e08bfb9c8_o.png</string> 
<string name="facebook_share_link">https://play.google.com/store/apps/details?id=com.mogames.beachguard</string> 

<!-- Admob settings____________________________________________________________________________________________________________________ --> 
<!-- Add unit id - you should get the interstatial ad unit id from admob --> 
<string name="InterstitialAd_unit_id">ca-app-pub-9058687372170937/8167059404</string> 
<!-- The add can be shown once every 2 gameovers. replace with 1 to show it after every gameover --> 
<integer name="add_shows_every_X_gameovers">1</integer> 

<!-- Rate button settings__________________________________________________________________________________________________ --> 
<!-- link is created automatically from package. Make sure package id is the same as the one used in google play --> 
<string name="unable_to_reach_market">Error reaching market. Please check your internet connection</string> 

はそう誰もが

以上のすべてのゲームの後にゲーム内でインタースティシャル広告を置くために私を助けることができるしてください
+0

お試しください:インタースティシャル広告の場合: - http://stackoverflow.com/a/43237197/6096821 –

答えて

0

試用:

private InterstitialAd interstitial; 


//Create the interstitial Ad. 
    interstitial = new InterstitialAd(this); 

    //Set unit id. 
    interstitial.setAdUnitId("ca-app-pub-3940256099942544/1033173712"); //test interstitial AD 

    //Create request. 
    AdRequest adRequest = new AdRequest.Builder().build(); 

    //Start loading... 
    interstitial.loadAd(adRequest); 

そして、あなたのゲームが(OVER GAME)を停止しますが、これを追加します。

//Interstitial AD 
     if(interstitial.isLoaded()) { 
      interstitial.show(); 
     } 
     else { 
      AdRequest interstitialRequest = new AdRequest.Builder().build(); 
      interstitial.loadAd(interstitialRequest); 
     } 

を、それが役に立てば幸い!

関連する問題