Вызов функций SDK Андроида

Программирование для iPhone & Android

Вызов функций SDK Андроида

Сообщение Андрей 16 дек 2011, 19:59

Приветствую всех и прошу помощи.

Я вообще новичок программирования и в Unity3D, и в Андроиде. Три месяца "купаюсь" в англ. доках по Unity 3D и всего лишь три дня в SDK для Андроид 3.1. Понял одно, что без доступа к SDK Андоид я не могу к примеру сделать нормальную связку работы Unity3D приложения и компонента WebView (но в этом вопросе я хочу разобраться сам)

Общие задачи, которые я не могу решить на простом конкретном примере.

1) Я не могу понять почему мой код не работает по чтению статического поля класса Toast:
Синтаксис:
Используется csharp
....
        void OnGUI(){
                if (GUI.Button(rectMainButton, strMainButton, GUI.skin.button)) {
                        strMainButton = "Buttun is Pressed";
                        strMainButton = (new AndroidJavaClass("android.widget.Toast")).GetStatic<int>("LENGTH_LONG").ToString();
                        strMainButton = "show";
                }
        }
....
 

Результат по нажатию на кнопку должен быть как надпись на копке числа "1", а показывается "Buttun is Pressed". Т.е. даже не показывается "show". Т.е. сработало исключение... и до "show" дело вообще не дошло.

2) Я не знаю как проверять(как логировать) ошибки типа той которая закралась в пункте 1. Я могу только использовать косвенный метод определения "работает, то что я хотел или нет" по происходящим действиям. Может быть класс "android.widget.Toast" не находится?! Как бы это проверить?!

3) Я почитал англоязычную статью из официальных доков по Unity3D по созданию плагинов. Там для разных задач предлагают делать плагины с возможной поддержкой на нескольких языках. Говорят типа вы можете написать свой плагин и "делать звонки" функций на свои плагины. Да, но я не хочу создавать плагин из-за трёх строчек кода в первом пункте. Может быть вся проблема в том что класс "android.widget.Toast" не найден и нужно обращение к нему реализовывать в плагине и это вынужденная мера? Придётся наверно более подробно читать как писать этот плагин.

Если кому-то не в лом, ткните пальцем что я не так делаю.

4) Некоторые из разработчиков Unity3D прекрасно знают вот это дело.
Синтаксис:
Используется csharp
AndroidJavaClass jo_player = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
jo_currentActivity = jo_player.GetStatic<AndroidJavaObject>("currentActivity");
context_obj = jo_currentActivity.Call<AndroidJavaObject>("getApplication");
 


По различным экспериментам я понял, что эти строки кода исполняются корректно. Всего в com.unity3d.player четыре штуки Активов и почему-то текущий всегда "com.unity3d.player.UnityPlayerNativeActivity"

//C:\Program Files\Unity\Editor\Data\PlaybackEngines\androidplayer\AndroidManifest.xml
Синтаксис:
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <manifest 
  3.   xmlns:android="http://schemas.android.com/apk/res/android" 
  4.   package="com.unity3d.player" 
  5.     android:installLocation="preferExternal" 
  6.   android:versionCode="1" 
  7.   android:versionName="1.0"> 
  8.   <supports-screens 
  9.     android:smallScreens="true" 
  10.     android:normalScreens="true" 
  11.     android:largeScreens="true" 
  12.     android:xlargeScreens="true" 
  13.     android:anyDensity="true"/> 
  14.  
  15.   <application 
  16.         android:icon="@drawable/app_icon" 
  17.     android:label="@string/app_name" 
  18.     android:debuggable="true"> 
  19.     <activity android:name="com.unity3d.player.UnityPlayerProxyActivity" 
  20.          android:label="@string/app_name" 
  21.          android:configChanges="keyboard|keyboardHidden|orientation"> 
  22.       <intent-filter> 
  23.         <action android:name="android.intent.action.MAIN" /> 
  24.         <category android:name="android.intent.category.LAUNCHER" /> 
  25.       </intent-filter> 
  26.     </activity> 
  27.     <activity android:name="com.unity3d.player.UnityPlayerActivity" 
  28.          android:label="@string/app_name" 
  29.          android:configChanges="keyboard|keyboardHidden|orientation"> 
  30.     </activity> 
  31.     <activity android:name="com.unity3d.player.UnityPlayerNativeActivity
  32.          android:label="@string/app_name" 
  33.          android:configChanges="keyboard|keyboardHidden|orientation"> 
  34.       <meta-data android:name="android.app.lib_name" android:value="unity" /> 
  35.     </activity> 
  36.     <activity android:name="com.unity3d.player.VideoPlayer" 
  37.          android:label="@string/app_name" 
  38.          android:configChanges="keyboard|keyboardHidden|orientation"> 
  39.     </activity> 
  40.   </application> 
  41. </manifest> 


Я не могу даже представить почему текущая Деятельность (Activity) в моем приложение имеет место быть (в приложении одна кнопка и камера). Смутно представляю в каких случаях применяются остальные Activity.true
Аватара пользователя
Андрей
UNIт
 
Сообщения: 89
Зарегистрирован: 06 окт 2011, 10:48

Вернуться в iPhone & Android

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3