android 手柄sdk,android studio 手柄接入

一、关键词:android tv 手柄控制人物行走

二、关键词:android四大组件

Android四大组件、五大存储、六大布局、七大生命周期、八大基本数据类型

四大组件:Activity、BroadcastReceive、Service、Content Provider ;

五大存储: SharedPreferences、SDCard 、SQLite数据库存储数据、使用ContentProvider存储数据、IO存储 ;

六大布局 :LineartLayout 、FrameLayout 、TableLayout 、 RelativeLayout 、 AbsoluteLayout 、 GridLayout ;

七大生命周期 :onCrate 不可见不可交互、 onStart 可见不可交互 、 onResume 可见可交互 、 onPause 可见不可交互 、onStop  不可见不可交互 、 onDestroy 销毁了 、 onRestart 从不可见到可见 ;

八大基本数据类型 : short 短整型 、 int 整型 、 long 长整型 、 float 浮点型 、 char 字符型 、 boolean 布尔型 、 byte 字节型

————————————————

版权声明:本文为CSDN博主「懒笑翻」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/c_lanxiaofang/article/details/80602840

三、关键词:activity_main.xml

onCreate方法主要是初次启动(指使用这个类)首先加载的方法。看清楚一个关键词:首先。也就是这个方法具有以下特点:就运行一次,而且是最先运行。

做个对比,其实就是写java练习代码里面的main方法,首次加载进入的入口就在这里。其实可以想到,开发这个SDK的人,肯定就是封装了main方法,被他封装了成在android [email protected],在java里面我们继承来的,我们要使用就要重写,也就是重写嘛。覆盖掉原来的oncreate方法,我们帮他重写一个oncreate,按照我的想法去执行这个方法。//意思着我们要先调用一个对象的父对象上的函数,也就是AppCompatActivity super.onCreate(savedInstanceState);现在才讲到正轨:

MainActivity.java和activity_main.xml如何建立联系:

setContentView(R.layout.activity_main);

方法名setContentView的意思看的出来,启动内容视图“用”布局文件activity_main.xml。

四、关键词:savedInstanceState

在activity的生命周期中,只要离开了可见阶段,或者说失去了焦点,activity就很可能被进程终止了!,被KILL掉了,,这时候,就需要有种机制,能保存当时的状态,这就是savedInstanceState的作用。

当一个Activity在PAUSE时,被kill之前,它可以调用onSaveInstanceState()来保存当前activity的状态信息(在paused状态时,要被KILLED的时候)。用来保存状态信息的Bundle会同时传给两个method,即onRestoreInstanceState() and onCreate().

Button btn2=(Button)findViewById(R.id.button2);

btn2.setOnClickListener(new MyListener());

以上放入ON create中,以下是内部类

1 classMyListener implements View.OnClickListener{2 @Override3 public voidonClick(View v) {4 Toast.makeText(MainActivity.this,"you have clicked Button2",Toast.LENGTH_SHORT).show();5 }6 }

六、失败的教训

1.内部类不可用于Activity的这种情况,U2A沟通失败

publicmylibrary1(String appid, MyAct act) {this.activity =act;

StringBuffer param= newStringBuffer();

param.append("appid=" +appid);

param.append(",");

param.append("engine_mode=msc");

SpeechUtility.createUtility(this.activity.getApplicationContext(), param.toString());this.mToast = Toast.makeText(this.activity, "欢迎来到智慧乐园!", Toast.LENGTH_SHORT);this.mToast.show();

}abstract classMyAct extends Activity{

@Overridepublic boolean dispatchKeyEvent(KeyEvent event) {if(event.getRepeatCount() > 0){

UnityPlayer.UnitySendMessage("Canvas","TU2A","你,按了好多次了!!!");return true;

}return super.dispatchKeyEvent(event);

}

@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {//当按下返回键时所执行的命令

if (keyCode ==KeyEvent.KEYCODE_DPAD_UP) {//此处写你按返回键之后要执行的事件的逻辑

UnityPlayer.UnitySendMessage("Canvas","TU2A","你,按了,UP好多次了!!!");return super.onKeyDown(keyCode, event);

}return super.onKeyDown(keyCode, event);

}

}

只有当

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

jo = jc.GetStatic("currentActivity");

jo1 = new AndroidJavaObject("com.unity3d.player.mylibrary1", "5b508fb6", jo);

public mylibrary1(String appid, Activity act) {

this.activity = act;

StringBuffer param = new StringBuffer();

param.append("appid=" + appid);

param.append(",");

param.append("engine_mode=msc");

SpeechUtility.createUtility(this.activity.getApplicationContext(), param.toString());

this.mToast = Toast.makeText(this.activity, "欢迎大涛、二涛来到智慧乐园!", Toast.LENGTH_SHORT);

this.mToast.show();

}

二者平级,同为android.app.Activity的类时,方可U2A沟通有效。

2.通过直接导出Activity类未成功。后增加空的Activity,重新打包,出现错误,提示:

error: invalid file path ‘C:\Users\n1781\MyApplication3\mylibrary\build\intermediates\manifests\aapt\release\AndroidManifest.xml‘.

查阅:https://blog.csdn.net/weixin_39513118/article/details/84971693的博文,删除了app下的build文件夹,果然成功!

原文:https://www.cnblogs.com/guaike01/p/13192184.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值