summaryrefslogtreecommitdiffstats
path: root/src/plugins/android/src/wrappers
diff options
context:
space:
mode:
authorVal Doroshchuk <valentyn.doroshchuk@qt.io>2019-03-07 12:53:45 +0100
committerVaL Doroshchuk <valentyn.doroshchuk@qt.io>2019-03-25 08:42:06 +0000
commit1057d6a89ab4c19825ab2d5d12aed31496b89423 (patch)
treebf45508e49297398d75eeb7966cf2a608c723e68 /src/plugins/android/src/wrappers
parent95b7fc4950c1f0d895896cf3086c69126d45e061 (diff)
Android: Introduce HTTP headers to MediaPlayer
Added using the headers from QNetworkRequest to be sent together with the request for the data in MediaPlayer::setDataSource. The MediaPlayer requires also a Context object, together with headers, to resolve the Uri. It will try to find a content provider. Since no content providers are implemented, this produces a warning: "MediaPlayer: Couldn't open file on client side; trying server side: java.io.FileNotFoundException: No content provider" Task-number: QTBUG-74073 Change-Id: I1566953b523e84400882ba9d3a968cec6b4a61cf Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Diffstat (limited to 'src/plugins/android/src/wrappers')
-rw-r--r--src/plugins/android/src/wrappers/jni/androidmediaplayer.cpp12
-rw-r--r--src/plugins/android/src/wrappers/jni/androidmediaplayer.h3
2 files changed, 12 insertions, 3 deletions
diff --git a/src/plugins/android/src/wrappers/jni/androidmediaplayer.cpp b/src/plugins/android/src/wrappers/jni/androidmediaplayer.cpp
index 79685e16f..f899481f0 100644
--- a/src/plugins/android/src/wrappers/jni/androidmediaplayer.cpp
+++ b/src/plugins/android/src/wrappers/jni/androidmediaplayer.cpp
@@ -166,9 +166,17 @@ void AndroidMediaPlayer::setMuted(bool mute)
mMediaPlayer.callMethod<void>("mute", "(Z)V", jboolean(mute));
}
-void AndroidMediaPlayer::setDataSource(const QString &path)
+void AndroidMediaPlayer::setDataSource(const QNetworkRequest &request)
{
- QJNIObjectPrivate string = QJNIObjectPrivate::fromString(path);
+ QJNIObjectPrivate string = QJNIObjectPrivate::fromString(request.url().toString(QUrl::FullyEncoded));
+
+ mMediaPlayer.callMethod<void>("initHeaders", "()V");
+ for (auto &header : request.rawHeaderList()) {
+ auto value = request.rawHeader(header);
+ mMediaPlayer.callMethod<void>("setHeader", "(Ljava/lang/String;Ljava/lang/String;)V",
+ QJNIObjectPrivate::fromString(header).object(), QJNIObjectPrivate::fromString(value).object());
+ }
+
mMediaPlayer.callMethod<void>("setDataSource", "(Ljava/lang/String;)V", string.object());
}
diff --git a/src/plugins/android/src/wrappers/jni/androidmediaplayer.h b/src/plugins/android/src/wrappers/jni/androidmediaplayer.h
index 14cbf49bc..37c7456f7 100644
--- a/src/plugins/android/src/wrappers/jni/androidmediaplayer.h
+++ b/src/plugins/android/src/wrappers/jni/androidmediaplayer.h
@@ -41,6 +41,7 @@
#define ANDROIDMEDIAPLAYER_H
#include <QObject>
+#include <QNetworkRequest>
#include <QtCore/private/qjni_p.h>
#include <QAudio>
@@ -112,7 +113,7 @@ public:
void stop();
void seekTo(qint32 msec);
void setMuted(bool mute);
- void setDataSource(const QString &path);
+ void setDataSource(const QNetworkRequest &request);
void prepareAsync();
void setVolume(int volume);
bool setPlaybackRate(qreal rate);