mirror of
https://github.com/KDE/kdeconnect-android
synced 2025-08-29 13:17:43 +00:00
Control the volume of Android media players
This commit is contained in:
parent
abcb6cbf33
commit
a1905bd031
@ -30,7 +30,7 @@ import androidx.annotation.Nullable;
|
||||
import androidx.annotation.RequiresApi;
|
||||
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
|
||||
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP_MR1)
|
||||
class MprisReceiverCallback extends MediaController.Callback {
|
||||
|
||||
private static final String TAG = "MprisReceiver";
|
||||
@ -43,7 +43,6 @@ class MprisReceiverCallback extends MediaController.Callback {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
|
||||
@Override
|
||||
public void onPlaybackStateChanged(PlaybackState state) {
|
||||
plugin.sendMetadata(player);
|
||||
@ -54,4 +53,9 @@ class MprisReceiverCallback extends MediaController.Callback {
|
||||
plugin.sendMetadata(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAudioInfoChanged(MediaController.PlaybackInfo info) {
|
||||
//Note: not called by all media players
|
||||
plugin.sendMetadata(player);
|
||||
}
|
||||
}
|
||||
|
@ -147,9 +147,18 @@ class MprisReceiverPlayer {
|
||||
}
|
||||
|
||||
int getVolume() {
|
||||
if (controller.getPlaybackInfo() == null)
|
||||
return 0;
|
||||
return 100 * controller.getPlaybackInfo().getCurrentVolume() / controller.getPlaybackInfo().getMaxVolume();
|
||||
MediaController.PlaybackInfo info = controller.getPlaybackInfo();
|
||||
if (info == null) return 0;
|
||||
return 100 * info.getCurrentVolume() / info.getMaxVolume();
|
||||
}
|
||||
|
||||
void setVolume(int volume) {
|
||||
MediaController.PlaybackInfo info = controller.getPlaybackInfo();
|
||||
if (info == null) return;
|
||||
|
||||
//Use rounding for the volume, since most devices don't have a very large range
|
||||
double unroundedVolume = info.getMaxVolume() * volume / 100.0 + 0.5;
|
||||
controller.setVolumeTo((int) unroundedVolume, 0);
|
||||
}
|
||||
|
||||
long getPosition() {
|
||||
|
@ -134,6 +134,13 @@ public class MprisReceiverPlugin extends Plugin {
|
||||
player.setPosition(position);
|
||||
}
|
||||
|
||||
if (np.has("setVolume")) {
|
||||
int volume = np.getInt("setVolume", 100);
|
||||
player.setVolume(volume);
|
||||
//Setting volume doesn't seem to always trigger the callback
|
||||
sendMetadata(player);
|
||||
}
|
||||
|
||||
if (np.has("action")) {
|
||||
String action = np.getString("action");
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user