diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/DetailActivity.java b/app/src/main/java/org/sifacai/vlcjellyfin/DetailActivity.java
index 4025697..b70dc94 100644
--- a/app/src/main/java/org/sifacai/vlcjellyfin/DetailActivity.java
+++ b/app/src/main/java/org/sifacai/vlcjellyfin/DetailActivity.java
@@ -266,24 +266,7 @@ public class DetailActivity extends BaseActivity implements JAdapter.OnItemClick
});
}
- public Video getMedia(JsonObject item) {
- //String playUrl = Utils.JellyfinUrl + "/videos/" + id + "/stream.mp4?static=true&a";
- Video media = new Video();
- media.Id = Utils.getJsonString(item, "Id").getAsString();
- media.Name = Utils.getJsonString(item, "Name").getAsString();
- JsonObject ImageTags = item.get("ImageTags").getAsJsonObject();
- if (ImageTags.has("Primary")) {
- String imgid = ImageTags.get("Primary").getAsString();
- media.cover = Utils.getImgUrl(media.Id, imgid);
- }
- media.Url = Utils.config.getJellyfinUrl() + "/videos/" + media.Id + "/stream.mp4?static=true&a";
- if (item.has("UserData")) {
- JsonObject userdata = item.get("UserData").getAsJsonObject();
- media.startPositionTicks = userdata.get("PlaybackPositionTicks").getAsLong();
- }
- return media;
- }
@Override
public void onClick(JsonObject jo) {
@@ -317,6 +300,30 @@ public class DetailActivity extends BaseActivity implements JAdapter.OnItemClick
}
}
+ /**
+ * 组合播放媒体
+ * @param item
+ * @return
+ */
+ public Video getMedia(JsonObject item) {
+ //String playUrl = Utils.JellyfinUrl + "/videos/" + id + "/stream.mp4?static=true&a";
+ Video media = new Video();
+ media.Id = Utils.getJsonString(item, "Id").getAsString();
+ media.Name = Utils.getJsonString(item, "Name").getAsString();
+ JsonObject ImageTags = item.get("ImageTags").getAsJsonObject();
+ if (ImageTags.has("Primary")) {
+ String imgid = ImageTags.get("Primary").getAsString();
+ media.cover = Utils.getImgUrl(media.Id, imgid);
+ }
+ media.Url = Utils.config.getJellyfinUrl() + "/videos/" + media.Id + "/stream.mp4?static=true&a";
+ if (item.has("UserData")) {
+ JsonObject userdata = item.get("UserData").getAsJsonObject();
+ media.startPositionTicks = userdata.get("PlaybackPositionTicks").getAsLong();
+ }
+
+ return media;
+ }
+
public void toVlcPlayer() {
Intent intent = new Intent(this, VlcPlayerActivity.class);
this.startActivity(intent);
diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/MainActivity.java b/app/src/main/java/org/sifacai/vlcjellyfin/MainActivity.java
index f984f21..3bc4bfc 100644
--- a/app/src/main/java/org/sifacai/vlcjellyfin/MainActivity.java
+++ b/app/src/main/java/org/sifacai/vlcjellyfin/MainActivity.java
@@ -107,7 +107,6 @@ public class MainActivity extends BaseActivity {
* 添加类别行
*/
private void addRowTvRecyclerView(String title, JsonArray data, boolean horizon) {
- Log.d(TAG, "addRowTvRecyclerView: " + data.toString());
JRecyclerView tvRecyclerView = (JRecyclerView) LayoutInflater.from(this)
.inflate(R.layout.home_horizon_tvrecycler, null);
((V7LinearLayoutManager) tvRecyclerView.getLayoutManager()).setOrientation(V7LinearLayoutManager.HORIZONTAL);
diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/SearchActivity.java b/app/src/main/java/org/sifacai/vlcjellyfin/SearchActivity.java
index 9f6f3cd..c920d61 100644
--- a/app/src/main/java/org/sifacai/vlcjellyfin/SearchActivity.java
+++ b/app/src/main/java/org/sifacai/vlcjellyfin/SearchActivity.java
@@ -1,6 +1,9 @@
package org.sifacai.vlcjellyfin;
+import android.content.Intent;
import android.os.Bundle;
+import android.telecom.Call;
+import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
@@ -13,8 +16,8 @@ import com.google.gson.JsonObject;
import com.owen.tvrecyclerview.widget.TvRecyclerView;
import com.owen.tvrecyclerview.widget.V7GridLayoutManager;
-public class SearchActivity extends BaseActivity{
- private TvRecyclerView mGridContiner;
+public class SearchActivity extends BaseActivity implements JAdapter.OnItemClickListener {
+ private TvRecyclerView mGridView;
private JAdapter adapter;
private final int limit = 24;
private String BaseUrl;
@@ -33,26 +36,27 @@ public class SearchActivity extends BaseActivity{
}
ActionBar actionBar = getSupportActionBar();
- if(null != actionBar){
+ if (null != actionBar) {
ImageView acb = actionBar.getCustomView().findViewById(R.id.activeBar_searchBtn);
- if(null != acb){
+ if (null != acb) {
acb.setVisibility(View.GONE);
}
}
- mGridContiner = findViewById(R.id.mGridView);
- V7GridLayoutManager v7GridLayoutManager = new V7GridLayoutManager(this,6);
- mGridContiner.setLayoutManager(v7GridLayoutManager);
- mGridContiner.setItemAnimator(null); //防崩溃
+ mGridView = findViewById(R.id.mGridView);
+ V7GridLayoutManager v7GridLayoutManager = new V7GridLayoutManager(this, 6);
+ mGridView.setLayoutManager(v7GridLayoutManager);
+ mGridView.setItemAnimator(null); //防崩溃
adapter = new JAdapter(new JsonArray());
- mGridContiner.setAdapter(adapter);
+ adapter.setOnItemClickListener(this);
+ mGridView.setAdapter(adapter);
- BaseUrl = "/Users/"+Utils.UserId+"/Items?";
+ BaseUrl = "/Users/" + Utils.UserId + "/Items?";
BaseUrl += "Fields=PrimaryImageAspectRatio,CanDelete,BasicSyncInfo,MediaSourceCount";
BaseUrl += "&Recursive=true&EnableTotalRecordCount=false&ImageTypeLimit=1&IncludePeople=false";
BaseUrl += "&IncludeMedia=true&IncludeGenres=false&IncludeStudios=false&IncludeArtists=false";
- BaseUrl += "&Limit="+limit;
+ BaseUrl += "&Limit=" + limit;
searchTermEdit = findViewById(R.id.searchTermEdit);
searchBtn = findViewById(R.id.searchBtn);
@@ -60,7 +64,8 @@ public class SearchActivity extends BaseActivity{
@Override
public void onClick(View view) {
String st = searchTermEdit.getText().toString().trim();
- if(st.length()>0){
+ if (st.length() > 0) {
+ adapter.clearItems();
Search(st);
}
}
@@ -70,9 +75,9 @@ public class SearchActivity extends BaseActivity{
}
private void Search(String searchTerm) {
- String movieUrl = BaseUrl + "&searchTerm="+searchTerm+"&IncludeItemTypes=Movie";
- String seriesUrl = BaseUrl + "&searchTerm="+searchTerm+"&IncludeItemTypes=Series";
- String episodeUrl = BaseUrl + "&searchTerm="+searchTerm+"&IncludeItemTypes=Episode";
+ String movieUrl = BaseUrl + "&searchTerm=" + searchTerm + "&IncludeItemTypes=Movie";
+ String seriesUrl = BaseUrl + "&searchTerm=" + searchTerm + "&IncludeItemTypes=Series";
+ String episodeUrl = BaseUrl + "&searchTerm=" + searchTerm + "&IncludeItemTypes=Episode";
new Thread(new Runnable() {
@Override
@@ -80,8 +85,8 @@ public class SearchActivity extends BaseActivity{
showLoadingDialog("搜索中………………");
String movieStr = Utils.okhttpSend(movieUrl);
String seriesStr = Utils.okhttpSend(seriesUrl);
- JsonObject moviejob = Utils.JsonToObj(movieStr,JsonObject.class);
- JsonObject seriesjob = Utils.JsonToObj(seriesStr,JsonObject.class);
+ JsonObject moviejob = Utils.JsonToObj(movieStr, JsonObject.class);
+ JsonObject seriesjob = Utils.JsonToObj(seriesStr, JsonObject.class);
JsonArray movieItems = moviejob.get("Items").getAsJsonArray();
JsonArray seriesItems = seriesjob.get("Items").getAsJsonArray();
movieItems.addAll(seriesItems);
@@ -91,13 +96,32 @@ public class SearchActivity extends BaseActivity{
}).start();
}
- private void fillItems(JsonArray items){
+ private void fillItems(JsonArray items) {
mAA.runOnUiThread(new Runnable() {
@Override
public void run() {
- adapter.clearItems();
adapter.addItems(items);
}
});
}
+
+ @Override
+ public void onClick(JsonObject jo) {
+ String itemId = jo.get("Id").getAsString();
+ String type = jo.get("Type").getAsString();
+ Intent intent = null;
+ switch (type) {
+ case "Series":
+ case "Season":
+ case "Episode":
+ case "Movie":
+ case "Video":
+ intent = new Intent(this, DetailActivity.class);
+ intent.putExtra("itemId", itemId);
+ this.startActivity(intent);
+ break;
+ default:
+ ShowToask("未知媒体类型!");
+ }
+ }
}
diff --git a/app/src/main/java/org/sifacai/vlcjellyfin/VlcPlayerActivity.java b/app/src/main/java/org/sifacai/vlcjellyfin/VlcPlayerActivity.java
index e1c7c46..898def2 100644
--- a/app/src/main/java/org/sifacai/vlcjellyfin/VlcPlayerActivity.java
+++ b/app/src/main/java/org/sifacai/vlcjellyfin/VlcPlayerActivity.java
@@ -5,20 +5,15 @@ import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
-import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
-import android.widget.PopupMenu;
import android.widget.RelativeLayout;
import android.widget.SeekBar;
import android.widget.TextView;
-import android.widget.Toast;
import org.videolan.libvlc.LibVLC;
-import org.videolan.libvlc.Media;
import org.videolan.libvlc.MediaPlayer;
-import org.videolan.libvlc.interfaces.IMedia;
import org.videolan.libvlc.util.VLCVideoLayout;
import java.util.Timer;
@@ -275,7 +270,7 @@ public class VlcPlayerActivity extends BaseActivity implements MediaPlayer.Event
public void onClick(View view) {
playListMenu.dismiss();
if (m.id != Utils.playIndex) {
- ReportPlayState(Utils.ReportType.stop,Utils.playList.get(Utils.playIndex).Id);
+ ReportPlayState(Utils.ReportType.stop, Utils.playList.get(Utils.playIndex).Id);
Utils.playIndex = m.id;
play();
}
@@ -412,7 +407,7 @@ public class VlcPlayerActivity extends BaseActivity implements MediaPlayer.Event
* 播放下一集
*/
public void playNext() {
- if(Utils.playIndex < (Utils.playList.size() - 1)){
+ if (Utils.playIndex < (Utils.playList.size() - 1)) {
ReportPlayState(Utils.ReportType.stop, Utils.playList.get(Utils.playIndex).Id);
Utils.playIndex += 1;
play();
@@ -439,7 +434,7 @@ public class VlcPlayerActivity extends BaseActivity implements MediaPlayer.Event
progressTime.cancel();
progressTime = null;
}
- if (reportProcessTime != null){
+ if (reportProcessTime != null) {
reportProcessTime.cancel();
progressTime = null;
}
diff --git a/app/src/main/res/layout/activity_search.xml b/app/src/main/res/layout/activity_search.xml
index 02b23de..d9a37fd 100644
--- a/app/src/main/res/layout/activity_search.xml
+++ b/app/src/main/res/layout/activity_search.xml
@@ -6,37 +6,32 @@
android:orientation="vertical">
-
-
+ android:tooltipText="关键字" />
+ android:src="@drawable/ic_outline_search_48" />
-
+
\ No newline at end of file