2015-06-10 4 views
3

Я пробовал форумы Qt, но безрезультатно. Я пытаюсь разработать приложение для Android, что одна из функций изменяет яркость подсветки планшета. Я успешно написал две программы в Android Studio (на Java), используя яркость системы LayoutParams и Android putInt, чтобы изменить яркость. Проблема возникает, когда я пытаюсь переместить код в приложение Qt. У меня работает JNI-код, и он выполняет мои функции, но когда я вставляю код яркости для изменения метода яркости, приложение не работает.Управление яркостью планшета с Qt Android

Из того, что я понимаю из Android и операторов ошибок, моя проблема (я думаю), я не запускаю код в потоке пользовательского интерфейса. Я пытался заставить свой Java-метод быть Runnable и использовать runonUiThread, но это не поддерживает ContentResolver или Window, потому что это не Activity.

У кого-нибудь есть опыт в этом, что может мне помочь? Или у вас есть какой-либо опыт в работе над настройками Android?

Я ценю каждый помогал, Эндрю

ответ

2

Вы могли бы иметь его в статический метод Java как:

package com.MyApp; 

public class BrightnessChanger 
{ 
    public static int change(int n) 
    { 
     float brightness = n/(float)255; 
     WindowManager.LayoutParams lp = getWindow().getAttributes(); 
     lp.screenBrightness = brightness; 
     getWindow().setAttributes(lp); 
    } 
} 

Вы можете вызывать эту статическую функцию Java из вашей C++ код:

bool retVal = QAndroidJniObject::callStaticMethod<jint> 
         ("com/MyApp/BrightnessChanger" // class name 
         , "change" // method name 
         , "(I)I" // signature 
         , 50); 

Здесь вы передаете значение от 1 и 255 к функции.

Смежные вопросы