编程谷歌播放服务插件的问题统一

时间:2014-07-14 09:28:32

标签: android eclipse plugins unity3d google-play-services

在尝试构建我的第一个游戏应用程序时,我遇到了一些超出我编程知识的问题。

我使用Unity制作游戏,并使用eclipse制作了一个有效的admob插件,用于统一使用。我按照this教程进行了操作。

到目前为止没有任何问题,而且根据我对制作统一插件的新知识,我决定根据google found here的教程制作第二个插件。

然而,为了我的插件工作,我不能"扩展"插件的类。这让我感到困惑,因为如果我不使用"延伸"我没有onCreate,onActivityResult等等。回调。

我知道必须有办法让这项工作,但我对java的了解太少,无法解决这个问题。

我已经尝试了各种各样的事情,至少要编译代码,但基本上我只是在黑暗中摇摆不定。

我的代码已经走了这么远,不用说它只是让我的游戏崩溃,当我调用Test()时:

package google.signin;

import com.google.android.gms.ads.*;
import com.google.example.games.basegameutils.GameHelper;
import com.google.example.games.basegameutils.GameHelper.GameHelperListener;
import com.unity3d.player.UnityPlayer;

import android.app.Activity;
import android.os.Bundle;
import android.content.Intent;

public class SignIn {

    private Activity activity; //Store the android main activity

    private GameHelper mHelper;

    public SignIn()
    {
        activity = UnityPlayer.currentActivity;


        activity.runOnUiThread(new Runnable() {
            public void run(){

                Activity subactivity = new Activity() {

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

                        // create game helper with all APIs (Games, Plus, AppState):
                        mHelper = new GameHelper(this, GameHelper.CLIENT_ALL);

                        GameHelperListener listener = new GameHelper.GameHelperListener() {
                            @Override
                            public void onSignInSucceeded() {
                                // handle sign-in success
                            }
                            @Override
                            public void onSignInFailed() {
                                // handle sign-in failure (e.g. show Sign In button)
                            }

                        };
                        mHelper.setup(listener);
                    }

                    @Override
                    protected void onStart() {
                        super.onStart();
                        mHelper.onStart(this);
                    }

                    @Override
                    protected void onStop() {
                        super.onStop();
                        mHelper.onStop();
                    }

                    @Override
                    protected void onActivityResult(int request, int response, Intent data) {
                        super.onActivityResult(request, response, data);
                        mHelper.onActivityResult(request, response, data);
                    }
                };
            }
        });
    }

    public void Test()
    {
        activity.runOnUiThread(new Runnable() {
            public void run(){

                mHelper.beginUserInitiatedSignIn();

            }
        });
    }
}

Logcat说这是问题所在:

07-14 11:19:10.786: E/AndroidRuntime(31262): FATAL EXCEPTION: main
07-14 11:19:10.786: E/AndroidRuntime(31262): Process: com.ChocolatePinecone.PrincessRescueRun, PID: 31262
07-14 11:19:10.786: E/AndroidRuntime(31262): java.lang.Error: FATAL EXCEPTION [main]
07-14 11:19:10.786: E/AndroidRuntime(31262): Unity version     : 4.3.4f1
07-14 11:19:10.786: E/AndroidRuntime(31262): Device model      : samsung GT-I9505
07-14 11:19:10.786: E/AndroidRuntime(31262): Device fingerprint: samsung/jfltexx/jflte:4.4.2/KOT49H/I9505XXUGNF1:user/release-keys
07-14 11:19:10.786: E/AndroidRuntime(31262): Caused by: java.lang.NullPointerException
07-14 11:19:10.786: E/AndroidRuntime(31262):    at google.signin.SignIn$2.run(SignIn.java:78)
07-14 11:19:10.786: E/AndroidRuntime(31262):    at android.os.Handler.handleCallback(Handler.java:733)
07-14 11:19:10.786: E/AndroidRuntime(31262):    at android.os.Handler.dispatchMessage(Handler.java:95)
07-14 11:19:10.786: E/AndroidRuntime(31262):    at android.os.Looper.loop(Looper.java:157)
07-14 11:19:10.786: E/AndroidRuntime(31262):    at android.app.ActivityThread.main(ActivityThread.java:5356)
07-14 11:19:10.786: E/AndroidRuntime(31262):    at java.lang.reflect.Method.invokeNative(Native Method)
07-14 11:19:10.786: E/AndroidRuntime(31262):    at java.lang.reflect.Method.invoke(Method.java:515)
07-14 11:19:10.786: E/AndroidRuntime(31262):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
07-14 11:19:10.786: E/AndroidRuntime(31262):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
07-14 11:19:10.786: E/AndroidRuntime(31262):    at dalvik.system.NativeStart.main(Native Method)

我认为它崩溃是因为onStart并且没有调用来自subactivity的所有东西。 我不知道我在这里做的事情是否正在解决这个问题的正确方向。在我继续采取波动之前,我希望有人可以启发我,或者至少给我一些指示去哪里......

1 个答案:

答案 0 :(得分:0)

无论你的mHelper对象是什么,你都没有从我看到的东西中创建它。我之前从未使用过这门课,所以我不知道这个宣言是否合适,而是一个例子

mHelper = new GameHelper();