Open nx111 opened 11 years ago
I patched xbmcremote and jsonrpclib,Now,I can enter a directory and watch movie,but can't get movie's totaltime and percentage yet.
xbmcremote.diff:
diff --git a/src/org/xbmc/android/remote/business/cm/InfoManager.java b/src/org/xbmc/android/remote/business/cm/InfoManager.java
index bf9d3dd..eb2c06c 100644
--- a/src/org/xbmc/android/remote/business/cm/InfoManager.java
+++ b/src/org/xbmc/android/remote/business/cm/InfoManager.java
@@ -84,7 +84,7 @@ public class InfoManager extends AbstractManager implements IInfoManager {
public void getDirectory(DataResponse<ArrayList<FileLocation>> response,
String path, Context context, int mediaType) {
call(new Files.GetDirectory(path, MediaType.getName(mediaType),
- getSort(ListModel.Sort.Method.FILE), FileItem.MIMETYPE,
+ getSort(ListModel.Sort.Method.FILE),
FileItem.FILE),
new ApiHandler<ArrayList<FileLocation>, FileItem>() {
@Override
diff --git a/src/org/xbmc/api/info/FileTypes.java b/src/org/xbmc/api/info/FileTypes.java
index 9b6a908..432e4dd 100644
--- a/src/org/xbmc/api/info/FileTypes.java
+++ b/src/org/xbmc/api/info/FileTypes.java
@@ -31,7 +31,7 @@ public class FileTypes {
/**
* Audio file extensions
*/
- public final static String[] AUDIO = { "ac3", "flac", "m4a", "mp3", "mid", "ogg", "wav" };
+ public final static String[] AUDIO = { "ac3", "flac", "m4a", "mp3", "mid", "ogg", "wav", "rm", "wma" };
/**
* Playlist file extensions
@@ -41,7 +41,7 @@ public class FileTypes {
/**
* Video extensions
*/
- public final static String[] VIDEO = { "avi", "flv", "mkv", "mov", "mp4", "mpg", "mpeg", "ts", "wmv", "vob" };
+ public final static String[] VIDEO = { "avi", "flv", "mkv", "mov", "mp4", "mpg", "mpeg", "ts", "wmv", "vob", "rmvb" };
/**
* Image extensions
jsonrpclib.patch:
diff --git a/src/org/xbmc/android/jsonrpc/api/AbstractModel.java b/src/org/xbmc/android/jsonrpc/api/AbstractModel.java
index f74a215..e74c0dd 100644
--- a/src/org/xbmc/android/jsonrpc/api/AbstractModel.java
+++ b/src/org/xbmc/android/jsonrpc/api/AbstractModel.java
@@ -89,7 +89,9 @@ public abstract class AbstractModel implements JsonSerializable, Parcelable {
public static ArrayList<String> getStringArray(JsonNode node, String key) {
if (node.has(key)) {
- final ArrayNode a = (ArrayNode)node.get(key);
+ final ObjectMapper mapper = new ObjectMapper();
+ final ArrayNode a = mapper.createArrayNode();
+ a.add(node.get(key));
final ArrayList<String> l = new ArrayList<String>(a.size());
for (int i = 0; i < a.size(); i++) {
l.add(a.get(i).getTextValue());
@@ -101,7 +103,9 @@ public abstract class AbstractModel implements JsonSerializable, Parcelable {
public static ArrayList<Integer> getIntegerArray(JsonNode node, String key) {
if (node.has(key)) {
- final ArrayNode a = (ArrayNode)node.get(key);
+ final ObjectMapper mapper = new ObjectMapper();
+ final ArrayNode a = mapper.createArrayNode();
+ a.add(node.get(key));
final ArrayList<Integer> l = new ArrayList<Integer>(a.size());
for (int i = 0; i < a.size(); i++) {
l.add(a.get(i).getIntValue());
In addition,I patched it with the diff flowing, The problem what can't get movie's totaltime and percentage is fixed:
diff --git a/android-xbmcremote/src/org/xbmc/android/remote/business/NowPlayingPollerThread.java b/android-xbmcremote/src/org/xbmc/android/remote/business/NowPlayingPollerThread.java
index 462b6c5..1dc6b91 100644
--- a/android-xbmcremote/src/org/xbmc/android/remote/business/NowPlayingPollerThread.java
+++ b/android-xbmcremote/src/org/xbmc/android/remote/business/NowPlayingPollerThread.java
@@ -156,7 +156,7 @@ public class NowPlayingPollerThread extends Thread {
private boolean updateNowPlayingCover(ICurrentlyPlaying currPlaying) {
try {
String downloadURI = currPlaying.getThumbnail();
- if (downloadURI == null || downloadURI.length() == 0) {
+ if (downloadURI == null || downloadURI.length() == 0 || HostFactory.host == null) {
mCover = null;
String oldCoverPath = mCoverPath;
mCoverPath = null;
@@ -181,7 +181,7 @@ public class NowPlayingPollerThread extends Thread {
private boolean updateNowPlayingFanart(ICurrentlyPlaying currPlaying) {
try {
String downloadURI = currPlaying.getFanart();
- if (downloadURI == null || downloadURI.length() == 0) {
+ if (downloadURI == null || downloadURI.length() == 0 || HostFactory.host == null) {
mFanart = null;
String oldFanartPath = mFanartPath;
mFanartPath = null;
diff --git a/android-xbmcremote/src/org/xbmc/android/remote/business/cm/ControlManager.java b/android-xbmcremote/src/org/xbmc/android/remote/business/cm/ControlManager.java
index 825b229..93af406 100644
--- a/android-xbmcremote/src/org/xbmc/android/remote/business/cm/ControlManager.java
+++ b/android-xbmcremote/src/org/xbmc/android/remote/business/cm/ControlManager.java
@@ -164,7 +164,7 @@ public class ControlManager extends AbstractManager implements IControlManager {
GetActivePlayersResult result = results.get(results.size() - 1);
final int playerid = result.playerid;
callRaw(new Player.GetProperties(playerid, "time",
- "speed", "position", "percentage"),
+ "speed", "position","totaltime", "percentage"),
new ApiHandler<Boolean, PlayerModel.PropertyValue>() {
@Override
public Boolean handleResponse(
@@ -251,7 +251,7 @@ public class ControlManager extends AbstractManager implements IControlManager {
}
public int getDuration() {
- return item.runtime;
+ return parseTime(propertyValue.totaltime);
}
public String getArtist() {
Crash with getAlbum when path.length<2. Patch for src/org/xbmc/android/remote/business/cm/ControlManager.java is here:
@@ -290,6 +290,8 @@ public String getAlbum() {
}
}
String[] path = item.file.replaceAll("\\\\", "/").split("/");
+ if (path.length<2)
+ return "";
return path[path.length - 2];
}
when use jsonrpc , Movie directory can't be enter. Log message in xbmc.log as:
19:37:10 T:2758789952 DEBUG: JSONRPC: Incoming request: {"jsonrpc":"2.0","id":"3722001967211620453","method":"Files.GetDirectory","params":{"directory":"/media/diske/Media/","media":"video","sort":{"ignorearticle":false,"method":"file","order":"ascending"},"properties":["mimetype","file"]}} 19:37:10 T:2758789952 DEBUG: JSONRPC: Calling files.getdirectory 19:37:10 T:2758789952 DEBUG: JSONRPC: Value does not match any of the enum values in type 19:37:10 T:2758789952 DEBUG: JSONRPC: Array element at index 0 does not match in type properties