Последнее обновление:
August 9, 2018

Есть мысль... Жми, напиши!
Что имеем: Постов : 178 Авторов: 1 Категорий: 38

Android Автозапуск планшета/телефона при подключении зарядки/питания

Когда хочется использовать Андроид планшет как car-pc, или панель управления для станка, или просто как фоторамку, необходимо что бы он автоматически включался при подачи питания / зарядки.

Делается это просто:

    1. Рутуем девайс.
    2. Качаем root browser или total commander.
    3. Переходим в корневой каталог, ищем файл init.rc открываем на редактирование
    4. Находим в нём такую строчку:  «on charger«, а ниже будет команда, которая будет выполняться при подключении зарядки.
      По умолчанию, это «class_start charger«
    5. Заменяем эту строчку на такую:  «class_start autoOn«
    6. В каталоге «/system/bin/« создаём файлик  «autoOn» и прописываем в нём:
      #!/system/bin/sh
      su
      /system/bin/reboot
    7. Сохраняем, и изменяем права на 0755
    8. Выключаем девайс, подключаем зарядку. Через пару секунд начнётся запуск =)

Вот впринципе и всё =)

 

Views :

11239

Qt Android JNI преобразование QByteArray в jbytearray и обратно, а так же получение и передача в jni функцию

Подребовалось мне из Java класса вызвать функцию, наподобии этой:

public int send(byte[] data)
{     
....
}

Ну а что бы её вызвать из C++ нужно было преобразовать QByteArray в jbytearray
делается это так:

    jbyteArray QByteArray2jbyteArray(QByteArray buf)
    {
     QAndroidJniEnvironment env;
     jbyteArray array = env->NewByteArray(buf.length());
     env->SetByteArrayRegion (array, 0, buf.length(), reinterpret_cast<jbyte*>(buf.data()));
     return array;
    }

если нужно обратное преобразование, то делается так:

QByteArray jbyteArray2QByteArray(jbyteArray buf)
    {
       QAndroidJniEnvironment env;
       int len = env->GetArrayLength(buf);
       QByteArray array;
       array.resize(len);
       env->GetByteArrayRegion (buf, 0, len, reinterpret_cast<jbyte*>(array.data()));
       return array;
    }

ну а саму функцию из Java класса с помощью JNI можно вызвать так:

QAndroidJniObject myActivity=  QtAndroid::androidActivity();
myActivity.callMethod<int>("send", "([B)I", QByteArray2jbytearray(myByteArray));

Если нужно наоборот вернуть из функции jbytearray, то тут немного по сложнее:

QAndroidJniObject myActivity=  QtAndroid::androidActivity();
QAndroidJniObject readData = myActivity.callObjectMethod("read", "(V)[B");
jbyteArray array =readData.object<jbyteArray>();

Кстати, не забываем подключать заголовочники:

#include <QtAndroid>
#include <QAndroidJniEnvironment>
#include <QAndroidJniObject>

И в *.pro файле добавлять

QT +=  androidextras

Вот как то так =)

Views :

702