Java Android Google play games服务登录失败并循环
我对谷歌游戏服务有一个很大的问题。事实上,在一些设备中,当我尝试启动游戏时,api尝试连接到服务:游戏窗口出现,然后我们看到加载图像一圈,最后出现错误消息不幸的是,谷歌服务已经停止。当我们单击OK时,进程将重新启动加载映像,消息 我们使用GameHepler来实现Google游戏服务 以下是AndroidLauncher类:Java Android Google play games服务登录失败并循环,java,android,libgdx,google-play-services,google-play-games,Java,Android,Libgdx,Google Play Services,Google Play Games,我对谷歌游戏服务有一个很大的问题。事实上,在一些设备中,当我尝试启动游戏时,api尝试连接到服务:游戏窗口出现,然后我们看到加载图像一圈,最后出现错误消息不幸的是,谷歌服务已经停止。当我们单击OK时,进程将重新启动加载映像,消息 我们使用GameHepler来实现Google游戏服务 以下是AndroidLauncher类: public class AndroidLauncher extends AndroidApplication implements AdControl, Acti
public class AndroidLauncher extends AndroidApplication implements
AdControl, ActionResolver,
GameHelperListener, MultiplayerInterface, RoomUpdateListener,
RealTimeMessageReceivedListener, RoomStatusUpdateListener,
View.OnClickListener, OnInvitationReceivedListener {
protected AdView adView;
private GameHelper gameHelper;
private MonJeu monJeu;
private static final String AD_UNIT_ID = "XXXXXXXXXXXXXXXXXXXXX";
private final int SHOW_ADS = 1;
private final int HIDE_ADS = 0;
// Request codes for the UIs that we show with startActivityForResult:
final static int RC_SELECT_PLAYERS = 19070;
final static int RC_INVITATION_INBOX = 19071;
final static int RC_WAITING_ROOM = 19072;
final static int MAIN_SCREEN = 29070;
final static int GAME_SCREEN = 29071;
final static int POPUP_INVIT = 29072;
final static int LOADING_SCREEN = 29073;
// The participants in the currently active game
ArrayList<Participant> mParticipants = null;
String creatorId;
// Room ID where the currently active game is taking place; null if we're
// not playing.
String mRoomId = null;
// My participant ID in the currently active game
String mMyId = null;
// If non-null, this is the id of the invitation we received via the
// invitation listener
String mIncomingInvitationId = null;
// Are we playing in multiplayer mode?
boolean mMultiplayer = false;
protected Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case SHOW_ADS: {
adView.setVisibility(View.VISIBLE);
break;
}
case HIDE_ADS: {
adView.setVisibility(View.GONE);
break;
}
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Create the layout
RelativeLayout layout = new RelativeLayout(this);
// Do the stuff that initialize() would do for you
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().clearFlags(
WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
cfg.numSamples = 5;
monJeu = new MonJeu(this, this, this);
View gameView = initializeForView(monJeu, cfg);
// Create and setup the AdMob view
adView = new AdView(this);
adView.setAdSize(AdSize.BANNER);
adView.setAdUnitId(AD_UNIT_ID);
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
.addTestDevice("XXXXXXXXXXXXXXXXXXXXX").build();
adView.loadAd(adRequest);
// Add the libgdx view
layout.addView(gameView);
// Add the AdMob view
RelativeLayout.LayoutParams adParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
adParams.addRule(RelativeLayout.CENTER_IN_PARENT);
layout.addView(adView, adParams);
// Hook it all up
setContentView(layout);
if (gameHelper == null) {
gameHelper = new GameHelper(this, GameHelper.CLIENT_GAMES);
gameHelper.enableDebugLog(true);
}
gameHelper.setup(this);
}
@Override
public void showAds(boolean show) {}
@Override
public void onStart() {
super.onStart();
gameHelper.onStart(this);
}
@Override
public void onStop() {
super.onStop();
gameHelper.onStop();
}
@Override
public void onActivityResult(int requestCode, int responseCode,
Intent intent) {
super.onActivityResult(requestCode, responseCode, intent);
switch (requestCode) {
case RC_SELECT_PLAYERS:
break;
case RC_INVITATION_INBOX:
break;
case RC_WAITING_ROOM:
break;
default:
gameHelper.onActivityResult(requestCode, responseCode, intent);
}
}
@Override
public boolean getSignedInGPGS() {
return gameHelper.isSignedIn();
}
@Override
public void loginGPGS() {
try {
runOnUiThread(new Runnable() {
public void run() {
gameHelper.beginUserInitiatedSignIn();
}
});
} catch (final Exception ex) {
}
}
@Override
public void submitScoreGPGS(int score) {}
@Override
public void submitScoreOnlineGPGS(int score) {}
@Override
public void unlockAchievementGPGS(String achievementId) {}
@Override
public void getLeaderboardGPGS() {
if(getSignedInGPGS())
startActivityForResult(
Games.Leaderboards.getLeaderboardIntent(
gameHelper.getApiClient(), "XXXXXXXXXXXXXXXXXXXXX"), 100);
else
loginGPGS();
}
@Override
public void getAchievementsGPGS() {
if(getSignedInGPGS())
startActivityForResult(
Games.Achievements.getAchievementsIntent(gameHelper
.getApiClient()), 100);
else
loginGPGS();
}
@Override
public void onSignInFailed() {
}
@Override
public void onSignInSucceeded() {
}
这是日志:
11-12 22:41:48.974: V/ActivityManager(1096): Moving to STOPPED: ActivityRecord{43834848 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608} (starting in stopped state)
11-12 22:41:49.624: D/GameHelper(26628): GameHelper: Debug log enabled.
11-12 22:41:49.624: D/GameHelper(26628): GameHelper: Setup: requested clients: 1
11-12 22:41:49.634: D/GameHelper(26628): GameHelper: onStart
11-12 22:41:49.634: D/GameHelper(26628): GameHelper: Connecting client.
11-12 22:41:49.744: V/WindowStateAnimator(1096): performShowLocked: mDrawState=HAS_DRAWN in WindowStateAnimator{4629d260 com.google.android.gms/com.google.android.gms.games.ui.signin.SignInActivity}
11-12 22:41:49.754: I/ActivityManager(1096): Displayed com.google.android.gms/.games.ui.signin.SignInActivity: +781ms
11-12 22:41:49.754: I/ActivityManager(1096): Timeline: Activity_windows_visible id: ActivityRecord{43834848 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608} time:522233174
11-12 22:41:49.944: D/GameHelper(26628): GameHelper: onConnectionFailed
11-12 22:41:49.944: D/GameHelper(26628): GameHelper: Connection failure:
11-12 22:41:49.944: D/GameHelper(26628): GameHelper: - code: SIGN_IN_REQUIRED(4)
11-12 22:41:49.944: D/GameHelper(26628): GameHelper: - resolvable: true
11-12 22:41:49.944: D/GameHelper(26628): GameHelper: - details: ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{438f22c8: android.os.BinderProxy@438f2268}}
11-12 22:41:49.954: D/GameHelper(26628): GameHelper: onConnectionFailed: WILL resolve because we have below the max# of attempts, 0 < 3
11-12 22:41:49.954: D/GameHelper(26628): GameHelper: onConnectionFailed: resolving problem...
11-12 22:41:49.954: D/GameHelper(26628): GameHelper: resolveConnectionResult: trying to resolve result: ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{438f22c8: android.os.BinderProxy@438f2268}}
11-12 22:41:49.954: D/GameHelper(26628): GameHelper: Result has resolution. Starting it.
11-12 22:41:49.954: I/ActivityManager(1096): START u0 {flg=0x4000000 cmp=com.google.android.gms/.games.ui.signin.SignInActivity (has extras)} from pid -1
11-12 22:41:49.964: I/ActivityManager(1096): ActivityRecord{43ef4e58 u0 com.google.android.gms/.games.ui.signin.SignInActivity t-1} Support Split:false Is ScreenFull:true
11-12 22:41:50.004: V/ActivityManager(1096): Moving to RESUMED: ActivityRecord{43834848 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608} (in existing)
11-12 22:41:50.004: V/ActivityManager(1096): Moving to PAUSING: ActivityRecord{43834848 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608}
11-12 22:41:50.004: D/ActivityManager(1096): resumeTopActivityLocked: Resumed ActivityRecord{43834848 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608}
11-12 22:41:50.014: D/ActivityManager(1096): allPausedActivitiesComplete: r=ActivityRecord{43834848 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608 f} state=PAUSING
11-12 22:41:50.014: D/ActivityManager(1096): allPausedActivitiesComplete: r=ActivityRecord{43834848 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608 f} state=PAUSING
11-12 22:41:50.044: D/GameHelper(26628): GameHelper: onStop
11-12 22:41:50.044: D/GameHelper(26628): GameHelper: Client already disconnected when we got onStop.
11-12 22:41:50.074: D/ActivityManager(1096): allPausedActivitiesComplete: r=ActivityRecord{43834848 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608 f} state=PAUSING
11-12 22:41:50.094: D/ActivityManager(1096): allPausedActivitiesComplete: r=ActivityRecord{43834848 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608 f} state=PAUSING
11-12 22:41:50.114: D/ActivityManager(1096): allPausedActivitiesComplete: r=ActivityRecord{43834848 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608 f} state=PAUSING
11-12 22:41:50.144: D/ActivityManager(1096): allPausedActivitiesComplete: r=ActivityRecord{43834848 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608 f} state=PAUSING
11-12 22:41:50.154: D/ActivityManager(1096): allPausedActivitiesComplete: r=ActivityRecord{43834848 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608 f} state=PAUSING
11-12 22:41:50.194: V/ActivityManager(1096): Moving to PAUSED: ActivityRecord{43834848 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608 f} (pause complete)
11-12 22:41:50.194: V/ActivityManager(1096): Moving to STOPPING: ActivityRecord{43834848 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608 f} (finish requested)
11-12 22:41:50.204: D/ActivityManager(1096): resumeTopActivityLocked: Restarting ActivityRecord{43ef4e58 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608}
11-12 22:41:50.204: V/ActivityManager(1096): Moving to RESUMED: ActivityRecord{43ef4e58 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608} (starting new instance)
11-12 22:41:50.204: V/ActivityManager(1096): Moving to PAUSING: ActivityRecord{43ef4e58 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608}
11-12 22:41:50.214: V/ActivityManager(1096): Moving to FINISHING: ActivityRecord{43834848 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608 f}
11-12 22:41:50.214: V/ActivityManager(1096): Moving to DESTROYING: ActivityRecord{43834848 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608 f} (destroy requested)
11-12 22:41:50.244: D/ActivityManager(1096): allPausedActivitiesComplete: r=ActivityRecord{43ef4e58 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608} state=PAUSING
11-12 22:41:50.244: D/ActivityManager(1096): allPausedActivitiesComplete: r=ActivityRecord{43ef4e58 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608} state=PAUSING
11-12 22:41:50.264: V/ActivityManager(1096): Moving to PAUSED: ActivityRecord{43ef4e58 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608} (pause complete)
11-12 22:41:50.264: V/ActivityManager(1096): Moving to STOPPING: ActivityRecord{43ef4e58 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608} (stop requested)
11-12 22:41:50.294: V/ActivityManager(1096): Moving to DESTROYED: ActivityRecord{43834848 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608 f} (removed from history)
11-12 22:41:50.354: V/ActivityManager(1096): Moving to STOPPED: ActivityRecord{43ef4e58 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608} (stop complete)
11-12 22:41:50.384: I/ActivityManager(1096): Displayed com.google.android.gms/.games.ui.signin.SignInActivity: +179ms (total +188ms)
11-12 22:41:50.384: I/ActivityManager(1096): Timeline: Activity_windows_visible id: ActivityRecord{43ef4e58 u0 com.google.android.gms/.games.ui.signin.SignInActivity t1608} time:522233808
11-12 22:41:50.384: V/WindowStateAnimator(1096): performShowLocked: mDrawState=HAS_DRAWN in WindowStateAnimator{460381b0 com.google.android.gms/com.google.android.gms.games.ui.signin.SignInActivity}
当我们出现弹出错误时,我们可以生成一个报告。这是google play崩溃的痕迹:
经过几天的研究,我终于找到了解决办法 主要问题是java.lang.outofmemory。 引发此异常是因为当同意屏幕出现时,google play service会在内存中加载存储在文件夹res中的应用程序图标。在我们的例子中,我们使用在internet中找到的Photoshop插件生成游戏图标,图标太大 所以我们使用这个网站来生成新图标:wich比photoshop插件更有效。新图标更亮,不再抛出异常
希望此解决方案能帮助其他人!: 我在你的cade中看到你进行了调试,日志中是否有任何可疑内容?我将编辑我的帖子并添加日志。崩溃日志显示设备内存不足。试图创建位图时,内存似乎不足;可能是用户的个人资料图像?这是在模拟器上吗?也许您只是没有为其配置正确的内存量。谢谢您的帮助!:在这种情况下,它在一个真正的设备LG G3上。我不知道这个异常的原因是什么。。。