Support media query

pull/586/head
FongMi 2 years ago
parent 206621eeca
commit 58a1047468
  1. 2
      app/src/main/java/com/fongmi/android/tv/server/Nano.java
  2. 86
      app/src/main/java/com/fongmi/android/tv/server/process/Media.java

@ -6,6 +6,7 @@ import com.fongmi.android.tv.bean.Device;
import com.fongmi.android.tv.server.process.Action;
import com.fongmi.android.tv.server.process.Cache;
import com.fongmi.android.tv.server.process.Local;
import com.fongmi.android.tv.server.process.Media;
import com.fongmi.android.tv.server.process.Process;
import com.github.catvod.utils.Asset;
import com.github.catvod.utils.Util;
@ -34,6 +35,7 @@ public class Nano extends NanoHTTPD {
process.add(new Action());
process.add(new Cache());
process.add(new Local());
process.add(new Media());
}
public static Response success() {

@ -0,0 +1,86 @@
package com.fongmi.android.tv.server.process;
import android.support.v4.media.MediaMetadataCompat;
import android.support.v4.media.session.PlaybackStateCompat;
import android.text.TextUtils;
import com.fongmi.android.tv.player.Players;
import com.fongmi.android.tv.server.Nano;
import com.fongmi.android.tv.server.Server;
import com.google.gson.JsonObject;
import java.util.Map;
import java.util.Objects;
import fi.iki.elonen.NanoHTTPD;
public class Media implements Process {
@Override
public boolean isRequest(NanoHTTPD.IHTTPSession session, String path) {
return "/media".equals(path);
}
@Override
public NanoHTTPD.Response doResponse(NanoHTTPD.IHTTPSession session, String path, Map<String, String> files) {
if (isNull()) return Nano.success("{}");
JsonObject result = new JsonObject();
result.addProperty("url", getUrl());
result.addProperty("title", getTitle());
result.addProperty("artist", getArtist());
result.addProperty("artwork", getArtUri());
result.addProperty("duration", getDuration());
result.addProperty("position", getPosition());
result.addProperty("speed", getSpeed());
result.addProperty("state", getState());
return Nano.success(result.toString());
}
private Players getPlayer() {
return Server.get().getPlayer();
}
private boolean isNull() {
return Objects.isNull(getPlayer()) || Objects.isNull(getPlayer().getSession());
}
private PlaybackStateCompat getPlaybackState() {
return getPlayer().getSession().getController().getPlaybackState();
}
private MediaMetadataCompat getMetadata() {
return getPlayer().getSession().getController().getMetadata();
}
private String getUrl() {
return TextUtils.isEmpty(getPlayer().getUrl()) ? "" : getPlayer().getUrl();
}
private String getTitle() {
return getMetadata() == null || getMetadata().getString(MediaMetadataCompat.METADATA_KEY_TITLE).isEmpty() ? "" : getMetadata().getString(MediaMetadataCompat.METADATA_KEY_TITLE);
}
private String getArtist() {
return getMetadata() == null || getMetadata().getString(MediaMetadataCompat.METADATA_KEY_ARTIST).isEmpty() ? "" : getMetadata().getString(MediaMetadataCompat.METADATA_KEY_ARTIST);
}
private String getArtUri() {
return getMetadata() == null ? "" : getMetadata().getString(MediaMetadataCompat.METADATA_KEY_ART_URI);
}
private long getDuration() {
return getMetadata() == null ? -1 : getMetadata().getLong(MediaMetadataCompat.METADATA_KEY_DURATION);
}
private int getState() {
return getPlaybackState() == null ? -1 : getPlaybackState().getState();
}
private long getPosition() {
return getPlaybackState() == null ? -1 : getPlaybackState().getPosition();
}
private float getSpeed() {
return getPlaybackState() == null ? 1 : getPlaybackState().getPlaybackSpeed();
}
}
Loading…
Cancel
Save