MT6572 耳机驱动笔记
1.MTK平台耳机检测原理简介
1.1EINT+AuxADC
1.2.ACCDET
1.3.EINT_ACCDET
耳机按键
单键耳机实现播放,暂停
alps\mediatek\platform\mt6572\kernel\drivers\accdet下accdet.c 函数check_cable_type中case MIC_BIAS:下添加如下代码:
if(call_status == 0)
{
if(is_long_press())
{
ACCDET_DEBUG("[Accdet]send long press remote button event %d \n",ACC_END_CALL);
notify_sendKeyEvent(ACC_END_CALL);
} else {
ACCDET_DEBUG("[Accdet]send short press remote button event %d\n",ACC_MEDIA_PLAYPAUSE);
notify_sendKeyEvent(ACC_MEDIA_PLAYPAUSE);
}
}
if(call_status != 0)
{
if(is_long_press())
{
ACCDET_DEBUG("[Accdet]send long press remote button event %d \n",ACC_MEDIA_PREVIOUS);
notify_sendKeyEvent(ACC_MEDIA_PREVIOUS);
} else {
ACCDET_DEBUG("[Accdet]send short press remote button event %d\n",ACC_MEDIA_PLAYPAUSE);
notify_sendKeyEvent(ACC_MEDIA_PLAYPAUSE);
}
}
备注:KEY_****相关宏都定义在input.h文件中
KEY_PREVIOUSSONG:上一曲
实现下一曲(在框架层)
有些耳机只有一个按键, 需要通过一个按键来实现播放,暂停,下一首,上一首的功能
功能定义:
单击: 播放/暂停
双击: 下一首
三击: 上一首
[SOLUTION]
完整方案如下,只需要修改 phoneWindowManager.java
1: 加入定义:
<code class="hljs cs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">long</span> preLastHeadsethookDownTime=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>,preLastHeadsethookUpTime=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, lastHeadsethookDownTime = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, lastHeadsethookUpTime = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">long</span> thisHeadsethookDownTime = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>, thisHeadsethookUpTime = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">static</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> clickCount = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>
2:加入方法:
<code class="hljs cs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">private</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">sendHeadsetBroadcast</span>(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">int</span> clickCount){Log.d(TAG,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"clickCount="</span>+clickCount);KeyEvent <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">event</span>;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">switch</span>(clickCount){ <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">case</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>:<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">event</span> = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> KeyEvent(thisHeadsethookUpTime,thisHeadsethookDownTime, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PREVIOUS, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>);<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">break</span>;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">case</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>:<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">event</span> = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> KeyEvent(thisHeadsethookUpTime,thisHeadsethookDownTime,KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_NEXT,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>);<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">break</span>;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">case</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>:<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">default</span>:<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">event</span> = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> KeyEvent(thisHeadsethookUpTime,thisHeadsethookDownTime,KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HEADSETHOOK,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>);<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">break</span>;}Log.d(TAG,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"keycode = "</span>+<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">event</span>.getKeyCode());Intent intent = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> Intent();intent.setAction(Intent.ACTION_MEDIA_BUTTON);intent.putExtra(Intent.EXTRA_KEY_EVENT,<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">event</span>);mContext.sendBroadcast(intent);intent = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> Intent();<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">event</span> = <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">event</span>.changeAction(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">event</span>,KeyEvent.ACTION_UP);intent.setAction(Intent.ACTION_MEDIA_BUTTON);intent.putExtra(Intent.EXTRA_KEY_EVENT,<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">event</span>);mContext.sendBroadcast(intent); }</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li></ul>
3: interceptKeyBeforeQueueing 方法内
在参考行
int result;
之后加入如下语句:
<code class="hljs lasso has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span>(keyCode <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">==</span> KeyEvent<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>KEYCODE_HEADSETHOOK <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">/*KeyEvent.KEYCODE_VOLUME_DOWN*/</span>){ <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span>(down){<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//this is headsethook down </span>preLastHeadsethookDownTime <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span> lastHeadsethookDownTime;lastHeadsethookDownTime <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span> thisHeadsethookDownTime;thisHeadsethookDownTime <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span> event<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>getEventTime();}<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span>{preLastHeadsethookUpTime <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span> lastHeadsethookUpTime;lastHeadsethookUpTime <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span> thisHeadsethookUpTime;thisHeadsethookUpTime <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span> event<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>getEventTime();<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Log</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>d(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">TAG</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"thisHeadsethookUpTime="</span><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">+</span>thisHeadsethookUpTime<span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">+</span><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">",thisHeadsethookDownTime="</span><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">+</span>thisHeadsethookDownTime);<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Log</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>d(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">TAG</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"lastHeadsethookUpTime="</span><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">+</span>lastHeadsethookUpTime<span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">+</span><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">",lastHeadsethookDownTime="</span><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">+</span>lastHeadsethookDownTime);<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Log</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>d(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">TAG</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"preLastHeadsethookUpTime="</span><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">+</span>preLastHeadsethookUpTime<span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">+</span><span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">",preLastHeadsethookDownTime="</span><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">+</span>preLastHeadsethookDownTime);<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span>((thisHeadsethookUpTime <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">-</span> thisHeadsethookDownTime) <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;"><</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">500</span>){<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span>((thisHeadsethookDownTime<span class="hljs-attribute" style="box-sizing: border-box;">-lastHeadsethookDownTime</span>)<span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">></span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">500</span>){<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Log</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>d(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">TAG</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"new click serial detected"</span>);clickCount <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>;mHandler<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>postDelayed(<span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">new</span> Runnable(){<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">void</span> run() {<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Log</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>d(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">TAG</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"call sendHeadsetBroadcast clickCount="</span><span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">+</span>clickCount);sendHeadsetBroadcast(clickCount);}}, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1000</span>);}<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span>{<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Log</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>d(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">TAG</span>,<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"click serial runing"</span>);<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">if</span>((thisHeadsethookUpTime <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">-</span> preLastHeadsethookUpTime)<span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">></span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1000</span>){<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Log</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>d(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">TAG</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"double click detect"</span>);clickCount <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>;}<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">else</span>{<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">Log</span><span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">.</span>d(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">TAG</span>, <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"triple click detect"</span>);clickCount <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>;}}}}result <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">=</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span>;result <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">&=</span> ~ACTION_PASS_TO_USER;<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">return</span> result;}</code>
MT6572 耳机驱动笔记相关推荐
- mtk+android+之mt6577驱动笔记,MTK6577+Android之音频(audio)移植
MTK6577+Android之音频(audio)移植 备注:audio PA音频功放(power amplifier) 先借用<Y1MT6577 design notice V0.1>关 ...
- 嵌入式Linux驱动笔记(十八)------浅析V4L2框架之ioctl【转】
转自:https://blog.csdn.net/Guet_Kite/article/details/78574781 权声明:本文为 风筝 博主原创文章,未经博主允许不得转载!!!!!!谢谢合作 h ...
- 嵌入式Linux驱动笔记--转自风筝丶
为了阅读学习方便,将系列博客的网址进行粘贴,感谢原博客的分享. 嵌入式Linux驱动笔记(一)------第一个LED驱动程序 嵌入式Linux驱动笔记(二)------定时器 嵌入式Linux驱动笔 ...
- charging hw bq25601充电驱动笔记
charging hw bq25601充电驱动笔记 #include "../bq25601.h"/* ====================================== ...
- ALSA子系统(十七)------支持Type-C耳机驱动
你好!这里是风筝的博客, 欢迎和我一起交流. 之前讲解了耳机驱动: ALSA子系统(十六)------虚拟耳机驱动 Android音频子系统(四)------耳机拔插流程 那么必然少不了现在市场上较多 ...
- 耳机驱动调试(插拔检测与按键检测)
耳机驱动调试(插拔检测与按键检测) 小白一枚,欢各位大佬指出错误 耳机类型判断 三段和四段.欧标和美标 现在许多设备的耳机接口都采用3.5mm的耳机接口,其中终端就是,终端可以兼容三段和四段耳机:三段 ...
- Android 耳机驱动知识
https://yunzhi.github.io/headset_knowledge 工作以后接手的第一个驱动就是android平台下耳机的插拔检测和按键检测.这部分涉及的硬件知识比较简单,但是软件上 ...
- 嵌入式Linux驱动笔记(十六)------设备驱动模型(kobject、kset、ktype)
###你好!这里是风筝的博客, ###欢迎和我一起交流. 前几天去面试,被问到Linux设备驱动模型这个问题,没答好,回来后恶补知识,找了些资料,希望下次能答出个满意答案. Linux早期时候,一个驱 ...
- 嵌入式Linux驱动笔记(五)------学习platform设备驱动
你好!这里是风筝的博客, 欢迎和我一起交流. 设备是设备,驱动是驱动. 如果把两个糅合写一起,当设备发生变化时,势必要改写整个文件,这是非常愚蠢的做法.如果把他们分开来,当设备发生变化时,只要改写设备 ...
- Linux-USB驱动笔记(五)--主机控制器驱动框架
Linux-USB驱动笔记(五)--主机控制器驱动框架 1.前言 2.主机控制器框架 3.重要结构体 3.1.usb_hcd -- 主机控制器驱动 3.2.hc_driver -- 控制器操作函数 3 ...
最新文章
- 关于正则表达式 \1 \2之类的问题
- 2021深度学习的研究方向推荐!Transformer、Self-Supervised、Zero-Shot和多模态
- 如何用php向wsdl服务器发请求,知道服务器端Wsdl,不写服务端代码,仅写客户端代码能调用服务端的方法吗?...
- 倒计时321控制器设置
- boost::log::attributes相关用法的测试程序
- 反射获取空参数成员方法并运行
- 752. Open the Lock
- 6. Nginx + PHP + FastGCI安装
- mysql移动文件后打不开_Windows端MySQL data目录迁移(貌似会启动不了)
- 我用系统的思想来编程
- 论文阅读:Non-local Neural Networks
- Java基础提高学习笔记1
- 拓端tecdat|R语言中不同类型的聚类方法比较
- 人工智能中蕴含的情商
- 学北邮计算机未来四十岁,双非学渣如何上岸北邮计算机学院
- 各大组织大马默认密码
- Cesium地图不加载或者加载有问题怎么办
- Keil4 新建工程 和 烧录程序
- lisp 获取横断面数据_AutoCADLISP二次开发辅助道路横断面测量成果检查
- 重读“发展Linux,中日两国之比较”有感