Могу ли я использовать NativeActivity с ActivityGroup?

Я знаю, что ActivityGroup устарел.

Но я пытаюсь объединить пользовательский интерфейс NativeActivty с некоторыми API Java/Android View.

Я пытаюсь сделать один гибридный пользовательский интерфейс, где часть экрана из NativeActivity.

Я использовал этот пример и пробовал ActivityGroup с некоторыми простыми действиями.

Это прекрасно работает с любым Activity (даже если я воспроизвожу видео с помощью VideoView).

Но когда я попытался загрузить NativeActivity, это не сработало. (Я попробовал демонстрацию Teapot из образцов NDK).

Под «не работает» я подразумеваю window.getDecorView() из собственной активности, он всегда возвращает прозрачный вид, а не фактический вид контента.

Как я должен это делать? Пожалуйста помогите.


person Vaibhav Jani    schedule 06.10.2014    source источник


Ответы (1)


На этот раз я нашел обходной путь для этого, и работает нормально. но только для демонстраций ndk.

в методе onCreate подкласса ActivityGroup напишите следующий код.

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    LocalActivityManager lam = getLocalActivityManager();

    Intent intent = new Intent();
    intent.setClass(this, TeapotNativeActivity.class);

    Window window = lam.startActivity("xxx", intent);

    // reflect call "willYouTakeTheSurface"
    NativeActivity callback = JavaCalls.callMethod(window.getDecorView(), "willYouTakeTheSurface");
    if (callback != null) {
        window.takeSurface(null);
        getWindow().takeSurface(callback);
        getWindow().takeInputQueue(callback);
    }


    setContentView(window.getDecorView());

}
person Haitao    schedule 18.12.2014