簡體   English   中英

錯誤:(125、25)錯誤:AdRequest()在AdRequest中具有私有訪問權限

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

我正在android游戲中進行編輯,它沒有主要的XML,我想在屏幕上放一個插頁式廣告。.開發人員說,將廣告單元id放到String.Xml中..但不顯示任何廣告,我為廣告投放了Firebase的東西,但遇到了這個錯誤

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) {
                    }
                });
            }
        });
    }
......................

這是我的屏幕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>

所以請有人幫我在每次游戲結束后在游戲中放置一個插頁式廣告

嘗試這個:

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);

在游戲停止的地方(游戲結束)添加以下內容:

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

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM