Войти
AndroidФорумОбщее

Полностью нативное приложение (2 стр)

Страницы: 1 2
#15
14:22, 9 июля 2013

=A=L=X=
Ок.

А про повороты экрана... обрабатываются же нормально? Я косяков не замечал, они разве есть?


#16
7:10, 10 июля 2013

Роман Шувалов
> А про повороты экрана... обрабатываются же нормально? Я косяков не замечал, они
> разве есть?

Я по памяти. Тарас пару месяцев назад с этим сталкивался, я забыл с чем именно уже, но если склероз не изменяет то с поворотом экрана. Суть в том что в где то здесь:

void ANativeActivity_onCreate(ANativeActivity* activity,
        void* savedState, size_t savedStateSize) {
    LOGV("Creating: %p\n", activity);
    activity->callbacks->onDestroy = onDestroy;
    activity->callbacks->onStart = onStart;
    activity->callbacks->onResume = onResume;
    activity->callbacks->onSaveInstanceState = onSaveInstanceState;
    activity->callbacks->onPause = onPause;
    activity->callbacks->onStop = onStop;
    activity->callbacks->onConfigurationChanged = onConfigurationChanged;
    activity->callbacks->onLowMemory = onLowMemory;
    activity->callbacks->onWindowFocusChanged = onWindowFocusChanged;
    activity->callbacks->onNativeWindowCreated = onNativeWindowCreated;
    activity->callbacks->onNativeWindowDestroyed = onNativeWindowDestroyed;
    activity->callbacks->onInputQueueCreated = onInputQueueCreated;
    activity->callbacks->onInputQueueDestroyed = onInputQueueDestroyed;

    activity->instance = android_app_create(activity, savedState, savedStateSize);
}
Чего то не хватает. Это код из native_app_glue.
P.S.
Вот здесь этот случай рассмотрен http://www.gamedev.ru/mobile/forum/?id=171633 . Речь о windowResized. Они просто не сделали его поддержку в многопоточное native_app_glue (в однопоточном должно работать). Просто не вставили несколько строк.

#17
11:42, 10 июля 2013

=A=L=X=
> Но на деле нейтив активити это просто явовский класс поставляемый по умолчанию

Нет.
Если ты посмотришь на androidmanifest.xml, то увидишь там hasCode = false. То бишь жабы нет вообще.
Нативный код на C/C++ компилится в либу, которую дальвик вытаскивает из apk и передает управление на точку входа (android_start).
Перевороты экрана нужно обрабатывать ручками. Тупо опрашиваешь акселерометр и обновляешь 3d-вектор положения смартфона в пространстве.
Повороты на ogl вручную. Доступ к файловой системе - вручную.

А вообще, гуголь, подложил свинью, не реализовав возможность получения результатов от активностей вызываемых через интенты прямо в сишном коде.
Это охренительное свинство. И сделано это было специально, потому что нормальные конторы и программеры просто бы тупо забили на жабу совсем.

#18
11:59, 10 июля 2013

rustamx
> Действительно ли возможно создать полноценную игру(например) используя только С++?

Можно.
Будет просто код на C/C++ без единой строчки на жабе.
Андроид - это в первую очередь кастрированный Линукс.
Поэтому все, что предоставляет Линукс - все будет доступно: OpenGL, доступ к файловой системе, сокеты и т.д.
Можно даже из жабовских классов создавать объекты (локальные и глобальные) и дергать ихние методы, типа BitmapFactory.decodeFile() и т.д.

Что нельзя делать?
Например можно запустить активити типа галереи, но получить результат в виде имени выбранного файла нельзя, потому что гугол не предоставил такую возможность.
Не предоставил доступ к некоторым обработчикам сообщений и возвращаемым данным.

Я склоняюсь больше к той мысли, что даже это сделать можно, просто никто пока не знает как, а те кто знает - помалкивают :)

#19
9:23, 11 июля 2013

kerosene

Твой скилл в андроиде слаб.

An application would not have any code of its own only if it's using nothing but built-in component classes

Коим и является класс NativeActivity.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.native_plasma"
    android:versionCode="1"
    android:versionName="1.0">

    <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="15" />

    <application android:label="@string/app_name"
        android:icon="@drawable/ic_launcher"
        android:theme="@style/AppTheme">

        <activity android:name="android.app.NativeActivity"
                  android:label="@string/app_name">
            <meta-data android:name="android.app.lib_name"
                    android:value="native-plasma" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

</manifest>

Страницы: 1 2
AndroidФорумОбщее

Тема в архиве.