diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 06d621016..4cd8e83f9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -35,12 +35,6 @@
-
-
@@ -183,6 +177,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java
index c683f1af7..e20d6bad3 100644
--- a/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java
+++ b/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java
@@ -39,6 +39,7 @@ import org.schabi.newpipe.extractor.StreamingService;
import org.schabi.newpipe.extractor.exceptions.ParsingException;
import org.schabi.newpipe.extractor.search.SearchExtractor;
import org.schabi.newpipe.extractor.search.SearchInfo;
+import org.schabi.newpipe.util.FireTvUtils;
import org.schabi.newpipe.fragments.BackPressable;
import org.schabi.newpipe.fragments.list.BaseListFragment;
import org.schabi.newpipe.local.history.HistoryRecordManager;
@@ -454,6 +455,9 @@ public class SearchFragment
if (isSuggestionsEnabled && errorPanelRoot.getVisibility() != View.VISIBLE) {
showSuggestionsPanel();
}
+ if(FireTvUtils.isFireTv()){
+ showKeyboardSearch();
+ }
});
searchEditText.setOnFocusChangeListener((View v, boolean hasFocus) -> {
@@ -504,7 +508,9 @@ public class SearchFragment
if (DEBUG) {
Log.d(TAG, "onEditorAction() called with: v = [" + v + "], actionId = [" + actionId + "], event = [" + event + "]");
}
- if (event != null
+ if(actionId == EditorInfo.IME_ACTION_PREVIOUS){
+ hideKeyboardSearch();
+ } else if (event != null
&& (event.getKeyCode() == KeyEvent.KEYCODE_ENTER
|| event.getAction() == EditorInfo.IME_ACTION_SEARCH)) {
search(searchEditText.getText().toString(), new String[0], "");
@@ -546,7 +552,7 @@ public class SearchFragment
if (searchEditText.requestFocus()) {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(
Context.INPUT_METHOD_SERVICE);
- imm.showSoftInput(searchEditText, InputMethodManager.SHOW_IMPLICIT);
+ imm.showSoftInput(searchEditText, InputMethodManager.SHOW_FORCED);
}
}
@@ -556,8 +562,7 @@ public class SearchFragment
InputMethodManager imm = (InputMethodManager) activity.getSystemService(
Context.INPUT_METHOD_SERVICE);
- imm.hideSoftInputFromWindow(searchEditText.getWindowToken(),
- InputMethodManager.HIDE_NOT_ALWAYS);
+ imm.hideSoftInputFromWindow(searchEditText.getWindowToken(), InputMethodManager.RESULT_UNCHANGED_SHOWN);
searchEditText.clearFocus();
}
diff --git a/app/src/main/java/org/schabi/newpipe/player/PopupVideoPlayer.java b/app/src/main/java/org/schabi/newpipe/player/PopupVideoPlayer.java
index f5c731ed9..8ea3d509c 100644
--- a/app/src/main/java/org/schabi/newpipe/player/PopupVideoPlayer.java
+++ b/app/src/main/java/org/schabi/newpipe/player/PopupVideoPlayer.java
@@ -626,6 +626,7 @@ public final class PopupVideoPlayer extends Service {
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
super.onLoadingComplete(imageUri, view, loadedImage);
+ if (playerImpl == null) return;
// rebuild notification here since remote view does not release bitmaps,
// causing memory leaks
resetNotification();
diff --git a/app/src/main/java/org/schabi/newpipe/player/helper/AudioReactor.java b/app/src/main/java/org/schabi/newpipe/player/helper/AudioReactor.java
index 46d20c7e1..f148aed27 100644
--- a/app/src/main/java/org/schabi/newpipe/player/helper/AudioReactor.java
+++ b/app/src/main/java/org/schabi/newpipe/player/helper/AudioReactor.java
@@ -131,7 +131,7 @@ public class AudioReactor implements AudioManager.OnAudioFocusChangeListener,
private void onAudioFocusLossCanDuck() {
Log.d(TAG, "onAudioFocusLossCanDuck() called");
// Set the volume to 1/10 on ducking
- animateAudio(player.getVolume(), DUCK_AUDIO_TO);
+ player.setVolume(DUCK_AUDIO_TO);
}
private void animateAudio(final float from, final float to) {
diff --git a/app/src/main/java/org/schabi/newpipe/util/FireTvUtils.java b/app/src/main/java/org/schabi/newpipe/util/FireTvUtils.java
new file mode 100644
index 000000000..69666463e
--- /dev/null
+++ b/app/src/main/java/org/schabi/newpipe/util/FireTvUtils.java
@@ -0,0 +1,10 @@
+package org.schabi.newpipe.util;
+
+import org.schabi.newpipe.App;
+
+public class FireTvUtils {
+ public static boolean isFireTv(){
+ final String AMAZON_FEATURE_FIRE_TV = "amazon.hardware.fire_tv";
+ return App.getApp().getPackageManager().hasSystemFeature(AMAZON_FEATURE_FIRE_TV);
+ }
+}
diff --git a/app/src/main/res/layout/toolbar_search_layout.xml b/app/src/main/res/layout/toolbar_search_layout.xml
index 797eea48e..9e9e51442 100644
--- a/app/src/main/res/layout/toolbar_search_layout.xml
+++ b/app/src/main/res/layout/toolbar_search_layout.xml
@@ -30,7 +30,9 @@
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="right|center_vertical"
- tools:ignore="RtlHardcoded">
+ android:focusable="true"
+ tools:ignore="RtlHardcoded"
+ android:background="?attr/selectableItemBackground">