-1
我在安卓遊戲中編輯,它沒有主要的XML,我想在屏幕上放置一個插頁式廣告..開發人員說把單位的廣告ID在String.Xml ..但不會表現出任何AD 和我的推杆的火力地堡的東西的廣告,但我面對這個錯誤錯誤:(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) {
}
});
}
});
}
......................
這是我的屏幕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>
所以請誰能幫我把插頁式廣告遊戲中的每個遊戲結束後
試試這可能會幫助你:對於插頁廣告: - http://stackoverflow.com/a/43237197/6096821 –