接小米盒子Android SDK

大家好,我叫红定义,最几天接入小米盒子的SDK,费了点周折,多谢 Meteor℡、秋实、Feel、seav、小山、杨冬、小福贵!、 赵永鹏 的帮助才能顺利接通,下面我把具体操作步骤给大家梳理一遍,也好让大家少走弯路。

1.首先在小米开发者站注册账号

http://dev.xiaomi.com/

2.然后在电视应用中创建应用

 

3.选择配置,配置支付的商品

 

 

4.然后添加商品,添加完保存即可

 

5.打开unity新建一个工程,目录结构如下图,大小写和结构要对

 

6.解压缩SDK文件包

 

7.新建Eclipse工程,bundle要和unity的一致

 

8.导入apkjar文件,目录如下

 

9.Classes.jarunityAndroid

 

10.也一起导入进来

 

 

11.MainActivity.java 代码如下

package com.tantoo.CrazyGuess_TVP_xiaomi.mitv;

 

import java.util.UUID;

 

import android.content.Intent;

import android.os.Bundle;

 

import com.unity3d.player.UnityPlayer;

import com.unity3d.player.UnityPlayerActivity;

import com.xiaomi.gamecenter.sdk.MiCommplatform;

import com.xiaomi.gamecenter.sdk.MiErrorCode;

import com.xiaomi.gamecenter.sdk.OnLoginProcessListener;

import com.xiaomi.gamecenter.sdk.OnPayProcessListener;

import com.xiaomi.gamecenter.sdk.entry.MiAccountInfo;

import com.xiaomi.gamecenter.sdk.entry.MiAppInfo;

import com.xiaomi.gamecenter.sdk.entry.MiBuyInfoOffline;

import com.xiaomi.gamecenter.sdk.entry.MiGameType;

 

public class MainActivity extends UnityPlayerActivity implements

OnLoginProcessListener, OnPayProcessListener {

 

public static MiAppInfo appInfo;

 

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

appInfo = new MiAppInfo();

appInfo.setAppId("2882303761517236914");

appInfo.setAppKey("5211723634914");

appInfo.setAppType(MiGameType.offline);

MiCommplatform.Init(this, appInfo);

}

 

public void login_test(String m_str) {

UnityPlayer.UnitySendMessage("Main Camera", "messgae", "login0");

MiCommplatform.getInstance().miLogin(MainActivity.this,

MainActivity.this);

UnityPlayer.UnitySendMessage("Main Camera", "messgae", "login1");

}

 

public void buy_test(String m_str0, String m_str1, int m_int0) {

UnityPlayer.UnitySendMessage("Main Camera", "messgae", "buy_test");

MiBuyInfoOffline offline = new MiBuyInfoOffline();

offline.setCpOrderId(UUID.randomUUID().toString());

offline.setProductCode("CrazyGuess_Item_4");

offline.setCount(1);

try {

// 调用SDK执行购买操作

MiCommplatform.getInstance().miUniPayOffline(MainActivity.this,

offline, MainActivity.this);

} catch (Exception e) {

e.printStackTrace();

}

}

 

@Override

public void finishLoginProcess(int arg0, MiAccountInfo arg1) {

 

if (MiErrorCode.MI_XIAOMI_GAMECENTER_SUCCESS == arg0) {

UnityPlayer.UnitySendMessage("Main Camera", "messgae",

"GAMECENTER_SUCCESS");

} else if (MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_LOGINOUT_SUCCESS == arg0) {

UnityPlayer.UnitySendMessage("Main Camera", "messgae",

"ERROR_LOGINOUT_SUCCESS");

} else if (MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_LOGINOUT_FAIL == arg0) {

UnityPlayer.UnitySendMessage("Main Camera", "messgae",

"ERROR_LOGINOUT_FAIL");

} else if (MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_ACTION_EXECUTED == arg0) {

UnityPlayer.UnitySendMessage("Main Camera", "messgae",

"ERROR_ACTION_EXECUTED");

} else {

UnityPlayer.UnitySendMessage("Main Camera", "messgae", "else");

}

}

 

@Override

public void finishPayProcess(int arg0) {

if (arg0 == MiErrorCode.MI_XIAOMI_GAMECENTER_SUCCESS)// 成功

{

UnityPlayer.UnitySendMessage("Main Camera", "messgae",

"MI_XIAOMI_GAMECENTER_SUCCESS");

} else if (arg0 == MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_CANCEL

|| arg0 == MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_PAY_CANCEL)// 取消

{

UnityPlayer.UnitySendMessage("Main Camera", "messgae",

"MI_XIAOMI_GAMECENTER_ERROR_CANCEL");

} else if (arg0 == MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_PAY_FAILURE)// 失败

{

UnityPlayer.UnitySendMessage("Main Camera", "messgae",

"MI_XIAOMI_GAMECENTER_ERROR_PAY_FAILURE");

} else if (arg0 == MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_PAY_REPEAT) {

UnityPlayer.UnitySendMessage("Main Camera", "messgae",

"MI_XIAOMI_GAMECENTER_ERROR_PAY_REPEAT");

} else if (MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_ACTION_EXECUTED == arg0) {

UnityPlayer.UnitySendMessage("Main Camera", "messgae",

"MI_XIAOMI_GAMECENTER_ERROR_ACTION_EXECUTED");

} else if (arg0 == MiErrorCode.MI_XIAOMI_GAMECENTER_ERROR_LOGIN_FAIL) {

UnityPlayer.UnitySendMessage("Main Camera", "messgae",

"MI_XIAOMI_GAMECENTER_ERROR_LOGIN_FAIL");

}

}

 

}

 

12.AndroidManifest.xml的代码如下

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.tantoo.CrazyGuess_TVP_xiaomi.mitv"

    android:versionCode="1"

    android:versionName="1.0" >

 

    <uses-sdk

        android:minSdkVersion="11"

        android:targetSdkVersion="18" />

 

    <uses-permission android:name="android.permission.GET_TASKS" />

 

    <application

        android:allowBackup="true"

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:screenOrientation="landscape"

        android:theme="@style/AppTheme" >

        <activity

            android:name="com.tantoo.CrazyGuess_TVP_xiaomi.mitv.MainActivity"

            android:label="@string/app_name" >

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

 

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

    </application>

 

</manifest>

 

13.右键-工程在系统中的路径

 

14.Cmd-E:-cd E:\EclipseProjects\XiaomiSDKtest\bin\classes

 

15.jar -cvf reddefine.jar *

 

16.复制reddefine.jarunitybin文件夹中,也把SDK包丢到bin

 

17.回到Eclipse工程目录,拷贝这两项

 

18.到unitybin目录同级

 


19.Unitytest的代码

using UnityEngine;

using System.Collections;

 

 

public class Test : MonoBehaviour

    private string m_strss = "";

 

    void OnGUI()

    {

        if (GUI.Button(new Rect(505010050), "login_test")   )

        { 

            m_strss += " login ";

            using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))

            {

                using (AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"))

                {

                    jo.Call("login_test""hehe");

                }

            }

        }

        if (GUI.Button(new Rect(5015010050), "press") )

        {  

            m_strss += " buy ";

            using (AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))

            {

                using (AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity"))

                {

                    jo.Call("buy_test""hehe""00"1);

                }

            }

        }

        GUILayout.Label(m_strss);

    }

 

    public void messgae(string str)

    {

        m_strss += str + "   ";

    } 

}

 

20.Playersetting属性

 

21.Build出包

 

22.安装到小米盒子上,OK,大功告成,哈哈~

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值