libGDX谷歌玩游戏服务 - 安卓 [英] libGDX Google Play Game Services - Android

查看:319
本文介绍了libGDX谷歌玩游戏服务 - 安卓的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想实现谷歌玩游戏服务到libGDX项目。 在我的Andr​​oid项目中,MainActivity看起来是这样的:

 公共类MainActivity扩展AndroidApplication工具
    GameHelper.GameHelperListener,ActionResolver {

GameHelper gameHelper;


@覆盖
公共无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);

    gameHelper =新GameHelper(这一点,GameHelper.CLIENT_ALL);
    gameHelper.enableDebugLog(真正的);

    。getWindow()addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);

    AndroidApplicationConfiguration CFG =新AndroidApplicationConfiguration();
    cfg.useGL20 = FALSE;

    初始化(新CJSGame(本),CFG);
    gameHelper.setup(本);

}

@覆盖
公共无效的OnStart(){
    super.onStart();
    gameHelper.onStart(本);
}

@覆盖
公共无效的onStop(){
    super.onStop();
    gameHelper.onStop();
}

    @覆盖
保护无效onActivityResult(INT申请code,INT结果code,意图数据){
    // TODO自动生成方法存根
    super.onActivityResult(要求code,因此code,数据);
    gameHelper.onActivityResult(要求code,因此code,数据);
}

@覆盖
公共布尔getSignedInGPGS(){
    // TODO自动生成方法存根
    返回gameHelper.isSignedIn();
}

@覆盖
公共无效loginGPGS(){
    // TODO自动生成方法存根
    尝试 {
        runOnUiThread(新的Runnable(){
            公共无效的run(){
                gameHelper.beginUserInitiatedSignIn();
            }
        });
    }赶上(最终例外前){
    }
}

@覆盖
公共无效submitScoreGPGS(INT得分){
    // TODO自动生成方法存根
    Games.Leaderboards.submitScore(gameHelper.getApiClient(),
            的getString(R.string.leaderboard1_id),得分);
}

@覆盖
公共无效unlockAchievementGPGS(字符串achievementId){
    // TODO自动生成方法存根
    Games.Achievements.unlock(gameHelper.getApiClient(),achievementId);
}

@覆盖
公共无效getLeaderboardGPGS(){
    // TODO自动生成方法存根
    startActivityForResult(
            Games.Leaderboards.getLeaderboardIntent(
                    gameHelper.getApiClient(),
                    的getString(R.string.leaderboard1_id)),100);
}

@覆盖
公共无效getAchievementsGPGS(){
    // TODO自动生成方法存根
    startActivityForResult(
            Games.Achievements.getAchievementsIntent(gameHelper
                    .getApiClient()),101);
}

@覆盖
公共无效onSignInFailed(){
    // TODO自动生成方法存根
    的System.out.println(登录失败);
}

@覆盖
公共无效onSignInSucceeded(){
    // TODO自动生成方法存根
    的System.out.println(登录成功);
}
}
 

当我尝试运行在Android设备的应用程序,我结束了在logcat中IllegalStateException异常错误:

  10月3日至13号:23:40.766:E / AndroidRuntime(31339):致命异常:主要
10月三号至13号:23:40.766:E / AndroidRuntime(31339):java.lang.IllegalStateException:发生致命开发商错误。检查日志以获取更多信息。
10月三号至13号:23:40.766:E / AndroidRuntime(31339):在com.google.android.gms.internal.dw $ HB(来源不明)
10月三号至13号:23:40.766:E / AndroidRuntime(31339):在com.google.android.gms.internal.dw $ HB(来源不明)
10月三号至13号:23:40.766:E / AndroidRuntime(31339):在com.google.android.gms.internal.dw $ b.bR(来源不明)
10月三号至13号:23:40.766:E / AndroidRuntime(31339):在com.google.android.gms.internal.dw $ a.handleMessage(来源不明)
10月三号至13号:23:40.766:E / AndroidRuntime(31339):在android.os.Handler.dispatchMessage(Handler.java:99)
10月三号至13号:23:40.766:E / AndroidRuntime(31339):在android.os.Looper.loop(Looper.java:137)
10月三号至13号:23:40.766:E / AndroidRuntime(31339):在android.app.ActivityThread.main(ActivityThread.java:5419)
10月三号至13号:23:40.766:E / AndroidRuntime(31339):在java.lang.reflect.Method.invokeNative(本机方法)
10月三号至13号:23:40.766:E / AndroidRuntime(31339):在java.lang.reflect.Method.invoke(Method.java:525)
10月三号至13号:23:40.766:E / AndroidRuntime(31339):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1187)
10月三号至13号:23:40.766:E / AndroidRuntime(31339):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
10月三号至13号:23:40.766:E / AndroidRuntime(31339):在dalvik.system.NativeStart.main(本机方法)
 

任何帮助,请??

编辑:我已经有元数据标签清单文件

 <元数据的android:NAME =com.google.android.gms.games.APP_ID
    机器人:值=@字符串/ APP_ID/>
 

解决方案

解决了,我启用了亚行logcat,发现还有另外一个元数据标签清单文件丢失:

 <元数据的android:NAME =com.google.android.gms.appstate.APP_ID
    机器人:值=@字符串/ APP_ID/>
 

刚刚加入这个标记,它工作正常。

I am trying to implement Google play Game Services into libGDX project. In my android project, the MainActivity looks like this:

public class MainActivity extends AndroidApplication implements
    GameHelper.GameHelperListener, ActionResolver {

GameHelper gameHelper;


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

    gameHelper = new GameHelper(this, GameHelper.CLIENT_ALL);
    gameHelper.enableDebugLog(true);

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);

    AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
    cfg.useGL20 = false;

    initialize(new CJSGame(this), cfg);
    gameHelper.setup(this);

}

@Override
public void onStart() {
    super.onStart();
    gameHelper.onStart(this);
}

@Override
public void onStop() {
    super.onStop();
    gameHelper.onStop();
}

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    gameHelper.onActivityResult(requestCode, resultCode, data);
}

@Override
public boolean getSignedInGPGS() {
    // TODO Auto-generated method stub
    return gameHelper.isSignedIn();
}

@Override
public void loginGPGS() {
    // TODO Auto-generated method stub
    try {
        runOnUiThread(new Runnable() {
            public void run() {
                gameHelper.beginUserInitiatedSignIn();
            }
        });
    } catch (final Exception ex) {
    }
}

@Override
public void submitScoreGPGS(int score) {
    // TODO Auto-generated method stub
    Games.Leaderboards.submitScore(gameHelper.getApiClient(),
            getString(R.string.leaderboard1_id), score);
}

@Override
public void unlockAchievementGPGS(String achievementId) {
    // TODO Auto-generated method stub
    Games.Achievements.unlock(gameHelper.getApiClient(), achievementId);
}

@Override
public void getLeaderboardGPGS() {
    // TODO Auto-generated method stub
    startActivityForResult(
            Games.Leaderboards.getLeaderboardIntent(
                    gameHelper.getApiClient(),
                    getString(R.string.leaderboard1_id)), 100);
}

@Override
public void getAchievementsGPGS() {
    // TODO Auto-generated method stub
    startActivityForResult(
            Games.Achievements.getAchievementsIntent(gameHelper
                    .getApiClient()), 101);
}

@Override
public void onSignInFailed() {
    // TODO Auto-generated method stub
    System.out.println("Sign in failed");
}

@Override
public void onSignInSucceeded() {
    // TODO Auto-generated method stub
    System.out.println("Sign in succeeded");
}
}

When I try to run the application on android device, I end up with IllegalStateException error in the logcat:

03-13 10:23:40.766: E/AndroidRuntime(31339): FATAL EXCEPTION: main
03-13 10:23:40.766: E/AndroidRuntime(31339): java.lang.IllegalStateException: A fatal developer error has occurred. Check the logs for further information.
03-13 10:23:40.766: E/AndroidRuntime(31339):    at com.google.android.gms.internal.dw$h.b(Unknown Source)
03-13 10:23:40.766: E/AndroidRuntime(31339):    at  com.google.android.gms.internal.dw$h.b(Unknown Source)
03-13 10:23:40.766: E/AndroidRuntime(31339):    at com.google.android.gms.internal.dw$b.bR(Unknown Source)
03-13 10:23:40.766: E/AndroidRuntime(31339):    at com.google.android.gms.internal.dw$a.handleMessage(Unknown Source)
03-13 10:23:40.766: E/AndroidRuntime(31339):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-13 10:23:40.766: E/AndroidRuntime(31339):    at android.os.Looper.loop(Looper.java:137)
03-13 10:23:40.766: E/AndroidRuntime(31339):    at android.app.ActivityThread.main(ActivityThread.java:5419)
03-13 10:23:40.766: E/AndroidRuntime(31339):    at java.lang.reflect.Method.invokeNative(Native Method)
03-13 10:23:40.766: E/AndroidRuntime(31339):    at java.lang.reflect.Method.invoke(Method.java:525)
03-13 10:23:40.766: E/AndroidRuntime(31339):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
03-13 10:23:40.766: E/AndroidRuntime(31339):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
03-13 10:23:40.766: E/AndroidRuntime(31339):    at dalvik.system.NativeStart.main(Native Method)

Any Help please??

Edit: I already have the meta-data tag in the manifest file

<meta-data android:name="com.google.android.gms.games.APP_ID"
    android:value="@string/app_id" />

解决方案

Solved, I enabled adb logcat and found that there is another metadata tag missing in the manifest file:

<meta-data android:name="com.google.android.gms.appstate.APP_ID"
    android:value="@string/app_id" />

Just added this tag and it is working properly.

这篇关于libGDX谷歌玩游戏服务 - 安卓的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆