标签: qtandroidextras

如何在Qt中为Android保持屏幕?

我在Java中找到了几个解决方法,但是我没有找到如何在QML或Qt中完成它.我知道首先我应该设置WAKE_LOCK权限AndroidManifest.xml.我该怎么做才能在运行时打开和关闭Qt的屏幕锁定?

c++ java qt android qtandroidextras

7
推荐指数
2
解决办法
2713
查看次数

从QT app(com.android.settings)打开android设置

我在QT有一个Android应用程序.我想从一个按钮调用android设置.

我在Java中使用了这段代码:

public void usb(View v){
    Intent intent = new Intent();  
    intent.setClassName("com.android.settings", "com.android.settings.DevelopmentSettings");  
    startActivity(intent);  
} 
Run Code Online (Sandbox Code Playgroud)

有没有办法使用QT C++调用android设置?

c++ qt android android-settings qtandroidextras

6
推荐指数
1
解决办法
2621
查看次数

将jstring转换为QString

我正在调用一个返回字符串的Java函数:

QAndroidJniObject obj = QAndroidJniObject::callStaticObjectMethod<jstring>("HelloJava", "getString");
jstring jstr = obj.object<jstring>();
QString str = jstr; // This doesn't work, obviously, compiler-error.
Run Code Online (Sandbox Code Playgroud)

它返回一个jstring,对我来说不是很有用.如何将其转换为a QString,以便我可以在我的代码中使用它?

c++ qstring qt android qtandroidextras

6
推荐指数
1
解决办法
3495
查看次数

Qt android,新的qml窗口无法正常工作

我有这个主窗口:

ApplicationWindow {
    id : mainWindow
    width: 640
    height: 480
    visible: true

    Button{
        text: "go back to form 1"
        onClicked: {
            form2.visible = true;
        }
    }

    SecondForm{
        id: form2
    }
}
Run Code Online (Sandbox Code Playgroud)

第二个窗口是:

Window{
    id: main
    width: 640
    height: 480
    x: 0
    y: 0
    visible: false;
    Button{
        text: "go back to form 1"
        onClicked: {
            main.visible = false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

桌面版本是好的,但在Android运行应用程序时,它的行为很奇怪!当我单击mainWindow中的按钮时会发生此错误:W/Qt ( 8903): (null):0 ((null)): QEGLPlatformContext::swapBuffers(): eglError: 12301, this: 0x6b46e7c0虽然似乎调用了第二个窗体并且主窗口变为非活动状态.但第二个窗口不可见.虽然我看不到内部的按钮和按钮,当我触摸按钮预期位于的区域时,显然它可以工作,第二个窗口消失,然后第一个窗口再次激活.当我尝试通过单击android后退按钮返回mainWindow时,它会返回到mainWindow并发出此警告:W/Qt ( 8903): (null):0 ((null)): Can't find surface …

qt android qtandroidextras

6
推荐指数
1
解决办法
2555
查看次数

.pro 文件中的未知模块 - 无法构建包含 androidextras 模块的应用程序

我正在开发一些将部署到 Android 操作系统的 Qt/QML 应用程序。现在,我需要模块,androidextras但如果我按如下方式放入androidextras我的.pro文件中

QT += qml quick widgets sql core bluetooth printsupport androidextras
Run Code Online (Sandbox Code Playgroud)

然后我重新运行qmake,出现以下错误:

项目错误:QT 中的未知模块:androidextras

我还尝试打开并运行示例项目Qt Notifier,但发生了同样的错误,因此我无法构建我的应用程序或示例,这应该是开箱即用的。

我使用KUbuntu 15.04gcc version 4.9.2 (Ubuntu 4.9.2-10ubuntu13)编译器和Desktop Qt 5.5.0 GCC 64bitQt的版本。我如何构建这个androidextras模块?Android arm v7正如您从维护工具屏幕截图中看到的那样,我已经安装了套件:

在此处输入图片说明

我用 重新编译了整个 Qt clear && ./configure -opensource -confirm-license -verbose -cups -plugin-sql-mysql -android-sdk /opt/android-sdk-linux -android-ndk /opt/android-ndk-r10d && make && make install,在 QtCreator 中设置了 Qt 版本和 Qt 套件,更改了构建套件,但仍然弹出相同的错误。为什么?

installation qt qtandroidextras

5
推荐指数
1
解决办法
3093
查看次数

错误:对'_jstring * QAndroidJniObject :: callStaticMethod &lt;_jstring *&gt;(char const *,char const *)'的未定义引用

我正在尝试使用QAndroidJniObject。作为测试,我只调用2个Java函数,一个返回一个int,另一个返回一个字符串。

返回int时,此代码可正常编译:

jint a = QAndroidJniObject::callStaticMethod<jint>("HelloJava", "getInt");
Run Code Online (Sandbox Code Playgroud)

但是,如果我将其更改为调用返回字符串的函数,它将失败:

jstring b = QAndroidJniObject::callStaticMethod<jstring>("HelloJava", "getString");
Run Code Online (Sandbox Code Playgroud)

它失败了

错误:对'_jstring * QAndroidJniObject :: callStaticMethod <_jstring *>(char const *,char const *)'的未定义引用

既然QAndroidJniObject::callStaticMethod是模板函数,那么如何为一种类型定义它却为另一种类型定义它呢?

编辑:其实,我只是测试jobjectjbyteArrayjbooleanArrayjbytejboolean,等,这是我发现了什么-只有整数类型,如jshortjintjlongjboolean工作,同时字符串,数组和对象都给出一个undefined reference错误。

c++ qt android linker-errors qtandroidextras

4
推荐指数
1
解决办法
1566
查看次数

在Qt Quick中的Android上的常规共享按钮

在我的Qt基于Quick的应用程序中,其第一个目标平台是Android,我需要让用户共享图像.我的意思是Android上的一般分享行动,不仅限于任何特定的社交网络:

在此输入图像描述

我确实找到了一些关于在Qt上分享FB和Twitter的线索,但他们直接使用Facebook/Twitter API,这不是我想要的.

从我到目前为止发现,似乎没有跨平台的方法来做这个,我的应用程序可能必须包含一些Java代码.如果这是正确的,那么目前在Android上编写特定于平台的代码的正确方法是什么?喜欢这个

另一个想法是,可以通过在WebView中加载的网站中运行的Javascript来调用共享操作.由于网络应用程序具有共享功能,因此这应该是可能的,可能更具跨平台性.这看起来合情合理吗?

qt android qtquick2 qtandroidextras

4
推荐指数
1
解决办法
1382
查看次数

在android中更改特定页面的方向

我正在使用 Qt 和 C++ 开发一个 android 应用程序。我的整个应用程序都有纵向。但是当我播放视频时,我想将方向更改为横向,视频结束后它应该再次更改为纵向。

所以问题是如何在适用于 Android 的 Qt/C++ 应用程序中将屏幕设置为横向或纵向模式。

c++ java qt android qtandroidextras

2
推荐指数
1
解决办法
848
查看次数

使用字符串参数调用 AndroidJni 静态方法

我试图使用带有字符串参数的 QAndroidJniObject 来调用 Qt C++ 类中的 Java 静态函数。

这是我的 Java 类,具有我正在调用的函数

        public class StatusBar{

        public static void setStatusBarBackgroundColor(Activity activity,String colorPref) {

// My code


         }  
        }
Run Code Online (Sandbox Code Playgroud)

我从 C++ 调用这个函数

void ECApplicationInfo::changeStatusBarColor(QString color)
{
  QAndroidJniObject::callStaticMethod<void>( 
                  "com/ezeecube/ezeesync/StatusBar",
                  "setStatusBarBackgroundColor",
                  "(Landroid/app/Activity;)V",
                   activity,color);
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

错误:无法通过“...”活动传递非平凡可复制类型“QString”类型的对象,颜色);

我怎样才能摆脱这个错误

c++ java qt android qtandroidextras

1
推荐指数
1
解决办法
2495
查看次数