AndroidSurfaceTexture::AndroidSurfaceTexture(unsigned int texName) : QObject() , m_texID(int(texName)) { // API level 11 or higher is required if (QtAndroidPrivate::androidSdkVersion() < 11) { qWarning("Camera preview and video playback require Android 3.0 (API level 11) or later."); return; } QJNIEnvironmentPrivate env; m_surfaceTexture = QJNIObjectPrivate("android/graphics/SurfaceTexture", "(I)V", jint(texName)); if (env->ExceptionCheck()) { #ifdef QT_DEBUG env->ExceptionDescribe(); #endif // QT_DEBUG env->ExceptionClear(); } if (m_surfaceTexture.isValid()) g_objectMap.insert(int(texName), this); QJNIObjectPrivate listener(QtSurfaceTextureListenerClassName, "(I)V", jint(texName)); m_surfaceTexture.callMethod<void>("setOnFrameAvailableListener", "(Landroid/graphics/SurfaceTexture$OnFrameAvailableListener;)V", listener.object()); }
void AndroidMediaRecorder::setOutputFormat(OutputFormat format) { QJNIEnvironmentPrivate env; m_mediaRecorder.callMethod<void>("setOutputFormat", "(I)V", int(format)); if (env->ExceptionCheck()) { #ifdef QT_DEBUG env->ExceptionDescribe(); #endif env->ExceptionClear(); } }
void AndroidMediaRecorder::setVideoSource(VideoSource source) { QJNIEnvironmentPrivate env; m_mediaRecorder.callMethod<void>("setVideoSource", "(I)V", int(source)); if (env->ExceptionCheck()) { #ifdef QT_DEBUG env->ExceptionDescribe(); #endif env->ExceptionClear(); } }
void AndroidMediaRecorder::setOrientationHint(int degrees) { QJNIEnvironmentPrivate env; m_mediaRecorder.callMethod<void>("setOrientationHint", "(I)V", degrees); if (env->ExceptionCheck()) { #ifdef QT_DEBUG env->ExceptionDescribe(); #endif env->ExceptionClear(); } }
void AndroidMediaRecorder::setVideoSize(const QSize &size) { QJNIEnvironmentPrivate env; m_mediaRecorder.callMethod<void>("setVideoSize", "(II)V", size.width(), size.height()); if (env->ExceptionCheck()) { #ifdef QT_DEBUG env->ExceptionDescribe(); #endif env->ExceptionClear(); } }
void AndroidMediaRecorder::setVideoFrameRate(int rate) { QJNIEnvironmentPrivate env; m_mediaRecorder.callMethod<void>("setVideoFrameRate", "(I)V", rate); if (env->ExceptionCheck()) { #ifdef QT_DEBUG env->ExceptionDescribe(); #endif env->ExceptionClear(); } }
void AndroidMediaRecorder::setAudioEncoder(AudioEncoder encoder) { QJNIEnvironmentPrivate env; m_mediaRecorder.callMethod<void>("setAudioEncoder", "(I)V", int(encoder)); if (env->ExceptionCheck()) { #ifdef QT_DEBUG env->ExceptionDescribe(); #endif env->ExceptionClear(); } }
void AndroidMediaRecorder::stop() { QJNIEnvironmentPrivate env; m_mediaRecorder.callMethod<void>("stop"); if (env->ExceptionCheck()) { #ifdef QT_DEBUG env->ExceptionDescribe(); #endif env->ExceptionClear(); } }
void AndroidMediaRecorder::setOutputFile(const QString &path) { QJNIEnvironmentPrivate env; m_mediaRecorder.callMethod<void>("setOutputFile", "(Ljava/lang/String;)V", QJNIObjectPrivate::fromString(path).object()); if (env->ExceptionCheck()) { #ifdef QT_DEBUG env->ExceptionDescribe(); #endif env->ExceptionClear(); } }
bool AndroidMediaRecorder::start() { QJNIEnvironmentPrivate env; m_mediaRecorder.callMethod<void>("start"); if (env->ExceptionCheck()) { #ifdef QT_DEBUG env->ExceptionDescribe(); #endif env->ExceptionClear(); return false; } return true; }