summaryrefslogtreecommitdiffstats
path: root/src/plugins/android/jar/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/android/jar/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java')
-rw-r--r--src/plugins/android/jar/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java42
1 files changed, 41 insertions, 1 deletions
diff --git a/src/plugins/android/jar/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java b/src/plugins/android/jar/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java
index 647cc7fe0..5a0462338 100644
--- a/src/plugins/android/jar/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java
+++ b/src/plugins/android/jar/src/org/qtproject/qt5/android/multimedia/QtAndroidMediaPlayer.java
@@ -41,11 +41,13 @@ package org.qtproject.qt5.android.multimedia;
import java.io.IOException;
import java.lang.String;
+import java.util.HashMap;
import java.io.FileInputStream;
// API is level is < 9 unless marked otherwise.
import android.content.Context;
import android.media.MediaPlayer;
+import android.media.AudioAttributes;
import android.net.Uri;
import android.util.Log;
import java.io.FileDescriptor;
@@ -65,6 +67,8 @@ public class QtAndroidMediaPlayer
native public void onStateChangedNative(int state, long id);
private MediaPlayer mMediaPlayer = null;
+ private AudioAttributes mAudioAttributes = null;
+ private HashMap<String, String> mHeaders = null;
private Uri mUri = null;
private final long mID;
private final Context mContext;
@@ -235,6 +239,7 @@ public class QtAndroidMediaPlayer
setState(State.Idle);
// Make sure the new media player has the volume that was set on the QMediaPlayer
setVolumeHelper(mMuted ? 0 : mVolume);
+ setAudioAttributes(mMediaPlayer, mAudioAttributes);
}
}
@@ -341,6 +346,16 @@ public class QtAndroidMediaPlayer
}
}
+ public void initHeaders()
+ {
+ mHeaders = new HashMap<String, String>();
+ }
+
+ public void setHeader(final String header, final String value)
+ {
+ mHeaders.put(header, value);
+ }
+
public void setDataSource(final String path)
{
if ((mState & State.Uninitialized) != 0)
@@ -378,7 +393,10 @@ public class QtAndroidMediaPlayer
FileDescriptor fd = fis.getFD();
mMediaPlayer.setDataSource(fd);
} else {
- mMediaPlayer.setDataSource(path);
+ if (mHeaders.isEmpty())
+ mMediaPlayer.setDataSource(path);
+ else
+ mMediaPlayer.setDataSource(mContext, mUri, mHeaders);
}
setState(State.Initialized);
} catch (final IOException e) {
@@ -547,4 +565,26 @@ public class QtAndroidMediaPlayer
setState(State.Uninitialized);
}
+
+ public void setAudioAttributes(int type, int usage)
+ {
+ mAudioAttributes = new AudioAttributes.Builder()
+ .setUsage(usage)
+ .setContentType(type)
+ .build();
+
+ setAudioAttributes(mMediaPlayer, mAudioAttributes);
+ }
+
+ static private void setAudioAttributes(MediaPlayer player, AudioAttributes attr)
+ {
+ if (player == null || attr == null)
+ return;
+
+ try {
+ player.setAudioAttributes(attr);
+ } catch (final IllegalArgumentException e) {
+ Log.d(TAG, "" + e.getMessage());
+ }
+ }
}