Unity3D與Android專案互動中無法監聽back鍵返回的解決辦法
這兩天為解決unity3d與android專案整合中出現的無法監聽真機back實體鍵的問題找了很多資料,網上也有很多人遇到了這個問題,但是似乎都沒找到有效的解決方法。
實現的效果是從A_Activity跳轉到UnityPlayerNativeActivity,傳入引數載入對應的三維圖,按返回鍵或home鍵分別返回上一個activity和返回桌面。預設情況下按home鍵會返回桌面,但是按back鍵則無法監聽到,沒有任何反應。
===========UnityPlayer相關==============================
UnityPlayer裡有三個類,分別是UnityPlayerProxyActivity、UnityPlayerActivity、UnityPlayerNativeActivity。
UnityPlayerProxyActivity用來判斷手機的系統版本,從而確定啟動UnityPlayerActivity還是UnityPlayerNativeActivity。所以UnityPlayerProxyActivity這個類自己就直接去掉不用了。
UnityPlayerNativeActivity這個類的載入速率據說會比較快,系統版本要求2.3以上,之前也一直用這個類整合使用。但是這兩天在使用這個類時一直沒法解決實體按鍵事件的問題,具體可以看下這段介紹:
UnityPlayerNativeActivity
同樣我們可以建立UnityPlayerNativeActivity的子類,這與建立UnityPlayerActivity的子類具有相同的效果,但是會有較小的輸入延遲。但是,需要明白的是,NativeActivity是在Gingerbread中引入的(即android
2.3),老的android版本沒有這個特性,因為在NativeActivity中,觸控事件都是在native程式碼中處理的,java檢視正常情況下是無法獲取這些事件的,不過在unity3d中,有允許將事件傳到DalvikVM的轉發機制,要應用這個轉發機制,必須修改manifest檔案如下:
01.
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
03.
<
application
android:icon
=
"@drawable/app_icon"
android:label
=
"@string/app_name"
>
04.
<
activity
android:name
=
".OverrideExampleNative"
05.
android:label
=
"@string/app_name"
06.
android:configChanges
=
"fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"
>
07.
<
meta-data
android:name
=
"android.app.lib_name"
android:value
=
"unity"
/>
08.
<
meta-data
android:name
=
"unityplayer.ForwardNativeEventsToDalvik"
android:value
=
"true"
/>
09.
<
intent-filter
>
10.
<
action
android:name
=
"android.intent.action.MAIN"
/>
11.
<
category
android:name
=
"android.intent.category.LAUNCHER"
/>
12.
</
intent-filter
>
13.
</
activity
>
14.
</
application
>
15.
</
manifest
>
即使按照上述的xml配置後,進入三維圖的UnityPlayerNativeActivity後,除home鍵外,其他按鍵都沒法監聽到。
======================在Unity中捕捉Android的常用按鈕返回事件=============
另有一種辦法是可以在jni指令碼檔案裡監聽到實體按鍵,可以在指令碼檔案裡對按鍵事件進行處理。不過針對返回鍵只有一個方法可以呼叫,即Application.Quit();但是這個方法會退出整個application,按下返回鍵後,三維圖頁面退出了,同時其他頁面也閃退了,無法返回到上一個activity的頁面。
01.
#pragma
strict
02.
function
Start () {
03.
}
04.
function
Update () {
05.
if
(Input.GetKey(KeyCode.Escape)){
06.
Application.Quit();
07.
}
08.
}
09.
function
OnGUI () {
10.
}
於是改用UnityPlayerActivity這個類進行嘗試,通過測試終於發現可以直接在這個類裡監聽到按鍵,但是卻無法識別按鍵。
01.
//
Pass any keys not handled by (unfocused) views straight to UnityPlayer
02.
public
boolean
onKeyMultiple(
int
keyCode,
int
count,
KeyEvent event)
03.
{
04.
return
mUnityPlayer.onKeyMultiple(keyCode,
count, event);
05.
}
06.
public
相關推薦
Unity3D與Android專案互動中無法監聽back鍵返回的解決辦法
這兩天為解決unity3d與android專案整合中出現的無法監聽真機back實體鍵的問題找了很多資料,網上也有很多人遇到了這個問題,但是似乎都沒找到有效的解決方法。
實現的效果是從A_Activity跳轉到UnityPlayerNativeActi
專案總結之 jquery中,使用append增加新元素時,新增元素的繫結監聽事件失效的解決辦法
$(“outerSelector”).on(“eventType”,“innerSelector”,function(){});
舉例:如果在一個
中,通過append新增一個id="demo"的按鈕,常用的直接$(“Selector”).on(“eventType”,function
android 在fragment中如何監聽返回鍵,home鍵
在activity中用keydown很容易實現對返回鍵的監聽,但是這個函式不能再fragment中過載。
通過我嘔心瀝血的尋找,終於找到了解決辦法,對其他物理按鍵的監聽也同理。
Java程式碼
public class phonerecorder exten
Android在Service中全域性監聽輸入法的三種可實現方式
在Service中全域性監聽輸入法意思就是可以在任何介面都可以監聽輸入法,不侷限於自己的APP。
方法一:根據切換輸入法會在通知欄顯示通知實現
優點:簡單高效
缺點:手機必須安裝兩個以上輸入法
通常語言為中文的情況下切換輸入法的通知欄標題有”選擇輸
Fragment中載入網頁(WebView)監聽Back鍵 ,實現返回上一頁的功能
首先建立一個抽象類BackHandledFragment,該類有一個抽象方法onBackPressed(),所有BackHandledFragment的子類在onBackPressed方法中處理各自對Back事件的消費邏輯。onBackPressed返回布林值,宿主Acti
vmware中無法檢測網絡卡的解決辦法
當用ifconfig -a或者ip addr檢視物理網絡卡時,發現無法檢測到所有的網絡卡。這種問題是因為建立的虛擬網絡卡沒有被連線虛擬主機上導致的,這裡找到了兩種辦法:方法一: 在vmx字尾的文件中新增enthernet1.virtualDev=“e1000”方法二:
postgresql數據庫安裝後的pgadmin4中無法加載本地連接解決辦法
9.png exe data esql 重裝 解決 分享圖片 卸載 安裝過程 postgresql 在安裝最後一步提示the database cluster initialisation failed, 而後點開pgadmin4發現如下圖所示
經過百度搜索找出問題原
Hbase shell 輸入無法使用退格鍵刪除解決辦法
今天在進入hbase shell終端進行資料查詢和新增時,發現輸入的命令無法撤回,現將解決辦法寫下:
1.使用Ctrl + Backspace或Shift + Backspace組合鍵刪除
2.(SecureCRT)
選項--會話選項--模擬--終端--選擇Linux
選項
BrowserSync的大坑,監聽不起作用解決辦法,附gulp瀏覽器同步自動重新整理部署方法
能將本地伺服器代理到localhost:3000/localhsot:3001的操作:按照官網來操作的程式碼是不起作用的:browser-sync start --proxy "127.0.0.1:8081" "E:/newcrm/trunk/4_Tools/crm/**/*.
使用PL/SQL Developer 遠端連線Oracle資料庫出現 “無監聽程式“錯誤 的解決辦法
今天在使用PLSQL遠端連線ORACLE資料庫的時候,突然報錯,無監聽程式,出現這個錯誤 我首先第一反應是開啟 服務 看了一下 Oracle常用的幾個服務是否正常啟動,監聽服務是否啟動,打開發現ORACLE的 所必須開的的服務 都已經正常執行, 然後我又嘗試連線了一下本
Unity與Android的互動之專案結構
概述
為什麼會寫這樣的文章,原因是我們在使用Unity做開發的時候少不了跟其它平臺做互動,特別是當前流行的Android和iOS。但是由於Unity官方文件缺少這方便詳細的資料,以及每個人的開發水平也參差不齊,再加上涉及到多平臺的互動(不同平臺的開發者不甚瞭解
Unity3D與Android(eclipse和AndroidStudio)互動問題
1.
Android包名與unity的Android平臺簽名一致
2.
如果開發AndroidSDK Android支援版本和unity支援最低版本一致
3.
5.x 搜尋Classes.jar (找到unity安裝路徑 搜尋)
Unity\Editor\Data\PlaybackEngines\Androi
android 專案開發中遇到app主題無法指向style
今天換了主機,將原來程式碼遷移到新的主機上,通過行動硬碟開,不知道為何出現部分class亂碼的問題,通過github實現程式碼移植,直接打開出現app無法執行,類似app主題要加Base的這種問題,在清單檔案中發現,app主題無法指向style,解決方法,close proj
unity3d與android互動
簡述
實現unity3d匯出到android studio工程並封裝為library,供其他工程匯入module直接使用。
最終效果:
- 點選ZoomIn、ZoomOut的按鈕,通過android端呼叫unity中方法,進行放大放小;
- 觸控unit
unity3d-與Android互動(unity5、android studio)
unity-與Android互動(unity5、android studio)
使用的是工具是 unity5.4,Android Studio 2.0(後面簡稱 AS)
網上找到的教程大部分都是匯出jar給unity呼叫,極少是用AS匯出 aar 包給uni
Android開發中執行方法中含有監聽時的處理
以WifiP2pManager. requestPeers()為例
方法一:直接新建一個監聽例項,然後新增監聽後的回撥方法
manager.requestPeers(channel, new WifiP2pManager.PeerListListener() {
React Native與Android的互動
在使用RN進行跨平臺開發的過程中,經常會設計到跨平臺呼叫相關的內容,而在於RN進行互動的時候,最核心的就是RN提供的Component和Module。
其中,Component是專門將Native的UI暴露出來供JS呼叫的,而Native Module則是將N
React Native與Android通訊互動
剛建立的React Native 微信公眾號,歡迎微信掃描關注訂閱號,每天定期會分享react
native 技術文章,移動技術乾貨,精彩文章技術推送。同時可以掃描我的微信加入react-native技術交流微信群。歡迎各位大牛,React
Native技術愛好者加入
Android中ActivityLifecycleCallbacks監聽Activity們的生命週期
如果你還在Activity的宣告周期函式(onCreate、onStart)列印log來看activity的宣告週期,那麼你就out了!
今天樓主叫你用ActivityLifecycleCallbacks來監聽activity們的宣告週期。
接下來上程式碼:
Android
Android中如何監聽手機電話狀態
問題描述:當應用中需要對來電這一狀態進行處理時(例如來電時顯示來電話號碼歸屬地等),就需要對電話狀態進行監聽。
解決步驟:1.對電話狀態的監聽最好是放在服務中,因為有一種服務的啟動方式可以不依賴於activity的生命週期,即使activity被銷燬,服務依然在後臺執行。因