diff --git a/.idea/misc.xml b/.idea/misc.xml
index 6f107f7..a995b43 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -23,7 +23,7 @@
-
+
diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/DetailActivity.java b/app/src/main/java/org/sifacai/vlcjellyfin/DetailActivity.java
index f9fcbc8..ff76cae 100644
--- a/app/src/main/java/org/sifacai/vlcjellyfin/DetailActivity.java
+++ b/app/src/main/java/org/sifacai/vlcjellyfin/DetailActivity.java
@@ -25,18 +25,14 @@ import com.owen.tvrecyclerview.widget.V7LinearLayoutManager;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
+import java.util.HashMap;
public class DetailActivity extends BaseActivity implements JAdapter.OnItemClickListener {
private String TAG = "详情:";
private String ItemId;
private ImageView tvCover;
private TextView tvTitle;
- private TextView tvGenres;
- private TextView tvRating;
- private TextView tvVideo;
- private TextView tvAudio;
- private TextView tvSubtitle;
- private TextView tvOverview;
+ private TextView tvDetails;
private ImageView tvPlay;
private JRecyclerView mGridView;
private JRecyclerView mPeopleGridView;
@@ -58,12 +54,7 @@ public class DetailActivity extends BaseActivity implements JAdapter.OnItemClick
private void init() {
tvCover = findViewById(R.id.tvCover);
tvTitle = findViewById(R.id.tvTitle);
- tvGenres = findViewById(R.id.tvGenres);
- tvRating = findViewById(R.id.tvRating);
- tvVideo = findViewById(R.id.tvVideo);
- tvAudio = findViewById(R.id.tvAudio);
- tvSubtitle = findViewById(R.id.tvSubtitle);
- tvOverview = findViewById(R.id.tvOverview);
+ tvDetails = findViewById(R.id.tvDetails);
tvPlay = findViewById(R.id.tvPlay);
mGridView = findViewById(R.id.mGridView);
tvPeopleLayout = findViewById(R.id.tvPersonLayout);
@@ -112,9 +103,11 @@ public class DetailActivity extends BaseActivity implements JAdapter.OnItemClick
String Overview = JfClient.strFromGson(detailObj, "Overview");
tvTitle.setText(Name);
- tvGenres.setText("年份:" + ProductionYear + " 风格:" + Genres);
- tvRating.setText("评分:" + CommunityRating + " 评级:" + OfficialRating);
- tvOverview.setText("简介: " + Overview);
+ tvDetails.append(ProductionYear.equals("") ? "" : "年份:" + ProductionYear + " ");
+ tvDetails.append(Genres.equals("") ? "" : "风格:" + Genres + "\n");
+ tvDetails.append(CommunityRating.equals("") ? "" : "评分:" + CommunityRating + " ");
+ tvDetails.append(OfficialRating.equals("") ? "" : "评级:" + OfficialRating + "\n");
+
JsonArray MediaStreams = null;
if (detailObj.has("MediaStreams")) {
@@ -135,13 +128,11 @@ public class DetailActivity extends BaseActivity implements JAdapter.OnItemClick
else subtitle += JfClient.strFromGson(ms, "Codec") + ";";
}
}
- String finalVideo = video;
- String finalAudio = audio;
- String finalSubtitle = subtitle;
- tvVideo.setText("视频:" + finalVideo);
- tvAudio.setText("音频:" + finalAudio);
- tvSubtitle.setText("字幕:" + finalSubtitle);
+ tvDetails.append(video.equals("") ? "" : "视频:" + video + "\n");
+ tvDetails.append(audio.equals("") ? "" : "音频:" + audio + "\n");
+ tvDetails.append(subtitle.equals("") ? "" : "字幕:" + subtitle + "\n");
}
+ tvDetails.append("简介: " + Overview );
//填充列表
String type = JfClient.strFromGson(detailObj, "Type");
@@ -156,47 +147,64 @@ public class DetailActivity extends BaseActivity implements JAdapter.OnItemClick
fillEpisodes(SeriesId, SeasonId);
} else if (type.equals("Movie")) {
fillMovie(detailObj);
+ } else if (type.equals("Person")){
+ JsonElement ProductionLocations = JfClient.jeFromGson(detailObj,"ProductionLocations");
+ String PremiereDate = JfClient.strFromGson(detailObj,"PremiereDate");
+ tvDetails.append("出生日期:" +PremiereDate+"\n");
+ tvDetails.append("出生地:" + ProductionLocations == null ? "" : ProductionLocations.toString());
+ fillItemsByPerson(Id);
}
JsonElement People = JfClient.jeFromGson(detailObj,"People");
if(People != null){
- fillPeople(People.getAsJsonArray());
+ JsonArray peoples = People.getAsJsonArray();
+ if(peoples.size() > 0) {
+ fillPeople(People.getAsJsonArray());
+ }
}
}
private void fillMovie(JsonObject item) {
- tvPlay.setVisibility(View.VISIBLE);
- tvPlay.setOnFocusChangeListener(new View.OnFocusChangeListener() {
- @Override
- public void onFocusChange(View view, boolean b) {
- if (view.hasFocus()) {
- view.animate().scaleX(1.05f).scaleY(1.05f).setDuration(300).setInterpolator(new BounceInterpolator()).start();
- } else {
- view.animate().scaleX(1.0f).scaleY(1.0f).setDuration(300).setInterpolator(new BounceInterpolator()).start();
- }
- }
- });
- tvPlay.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- JfClient.playList.clear();
- JfClient.playList.add(getMedia(item));
- JfClient.playIndex = 0;
- toVlcPlayer();
- }
- });
- tvPlay.requestFocus();
+// tvPlay.setVisibility(View.VISIBLE);
+// tvPlay.setOnFocusChangeListener(new View.OnFocusChangeListener() {
+// @Override
+// public void onFocusChange(View view, boolean b) {
+// if (view.hasFocus()) {
+// view.animate().scaleX(1.05f).scaleY(1.05f).setDuration(300).setInterpolator(new BounceInterpolator()).start();
+// } else {
+// view.animate().scaleX(1.0f).scaleY(1.0f).setDuration(300).setInterpolator(new BounceInterpolator()).start();
+// }
+// }
+// });
+// tvPlay.setOnClickListener(new View.OnClickListener() {
+// @Override
+// public void onClick(View view) {
+// JfClient.playList.clear();
+// JfClient.playList.add(getMedia(item));
+// JfClient.playIndex = 0;
+// toVlcPlayer();
+// }
+// });
+// tvPlay.requestFocus();
+ String Name = JfClient.strFromGson(item,"Name");
+ Name = "播放: " + Name;
+ item.remove("Name");
+ item.addProperty("Name" ,Name);
+
+ JsonArray plja = new JsonArray();
+ plja.add(item);
if (item.has("PartCount")) {
String Id = JfClient.strFromGson(item, "Id");
JfClient.GetAddPart(Id, new JfClient.JJCallBack() {
@Override
public void onSuccess(JsonArray parts) {
- fillItems(parts);
+ plja.addAll(parts);
+ fillItems(plja);
}
}, null);
} else {
- dismissLoadingDialog();
+ fillItems(plja);
}
}
@@ -241,6 +249,10 @@ public class DetailActivity extends BaseActivity implements JAdapter.OnItemClick
dismissLoadingDialog();
}
+ /**
+ * 填充定员表
+ * @param items
+ */
private void fillPeople(JsonArray items) {
tvPeopleLayout.setVisibility(View.VISIBLE);
JAdapter jAdapter = new JAdapter(items, false);
@@ -251,6 +263,37 @@ public class DetailActivity extends BaseActivity implements JAdapter.OnItemClick
mPeopleGridView.setAdapter(jAdapter);
}
+ /**
+ * 填充演员作品
+ * @param personid
+ */
+ private void fillItemsByPerson(String personid) {
+ String Term = "&SortBy=DateCreated&SortOrder=Descending&PersonIds=" + personid;
+ JfClient.GetItemsByTerm(Term,new JfClient.JJCallBack(){
+ @Override
+ public void onSuccess(JsonObject jsonObject) {
+ JsonArray items = jsonObject.get("Items").getAsJsonArray();
+ JAdapter jAdapter = new JAdapter(items, false);
+ V7GridLayoutManager layoutManager = new V7GridLayoutManager(mGridView.getContext(),4);
+ jAdapter.setOnItemClickListener(new JAdapter.OnItemClickListener() {
+ @Override
+ public void onClick(JsonObject jo) {
+ //点击
+ }
+ });
+ mGridView.setVisibility(View.VISIBLE);
+ mGridView.setLayoutManager(layoutManager);
+ mGridView.setAdapter(jAdapter);
+ dismissLoadingDialog();
+ }
+ },new JfClient.JJCallBack(){
+ @Override
+ public void onError(String str) {
+ dismissLoadingDialog();
+ }
+ });
+ }
+
@Override
public void onClick(JsonObject jo) {
String itemId = jo.get("Id").getAsString();
@@ -281,7 +324,9 @@ public class DetailActivity extends BaseActivity implements JAdapter.OnItemClick
JfClient.playIndex = 0;
toVlcPlayer();
}else if(type.equals("Actor")){
-
+ intent = new Intent(this, DetailActivity.class);
+ intent.putExtra("itemId", itemId);
+ startActivity(intent);
}
}
diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/JfClient.java b/app/src/main/java/org/sifacai/vlcjellyfin/JfClient.java
index 70e2205..5b68802 100644
--- a/app/src/main/java/org/sifacai/vlcjellyfin/JfClient.java
+++ b/app/src/main/java/org/sifacai/vlcjellyfin/JfClient.java
@@ -227,6 +227,28 @@ public class JfClient {
}, errcb);
}
+ /**
+ * 根据条件获取条目列表
+ * @param term 可以是 &Limit、&SortBy、&IncludeItemTypes、&PersonIds 等
+ * @param scb
+ * @param errcb
+ */
+ public static void GetItemsByTerm(String term,JJCallBack scb,JJCallBack errcb){
+ String BaseUrl = config.getJellyfinUrl() + "/Users/"+UserId+"/Items?Recursive=true&StartIndex=0&CollapseBoxSetItems=false";
+ BaseUrl += term;
+ SendGet(BaseUrl,new JJCallBack(){
+ @Override
+ public void onSuccess(String str) {
+ JsonObject items = strToGson(str,JsonObject.class);
+ if(items == null){
+ errcb.onError("内容空!");
+ }else{
+ scb.onSuccess(items);
+ }
+ }
+ },errcb);
+ }
+
/**
* 获取合集条目
*
diff --git a/app/src/main/res/layout/activity_detail.xml b/app/src/main/res/layout/activity_detail.xml
index f6950b3..c6fcfbf 100644
--- a/app/src/main/res/layout/activity_detail.xml
+++ b/app/src/main/res/layout/activity_detail.xml
@@ -48,55 +48,11 @@
android:textSize="30dp" />
-
-
-
-
-
-
-
-
-
-
+