From 907b52a7001dc4f4c8df9577130391baec1b18bc Mon Sep 17 00:00:00 2001
From: MUQING <1966944300@qq.com>
Date: Sun, 31 Dec 2023 19:02:57 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=86=E6=90=9C=E7=B4=A2,?=
=?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E8=8B=A5=E5=B9=B2=E9=80=9A=E7=9F=A5?=
=?UTF-8?q?=E6=A0=8FBUG?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/debug/output-metadata.json | 4 +-
app/src/main/AndroidManifest.xml | 5 +-
app/src/main/java/com/muqingbfq/MP3.java | 6 ++
.../main/java/com/muqingbfq/MediaPlayer.java | 18 ++--
.../java/com/muqingbfq/{xm.java => XM.java} | 6 +-
.../java/com/muqingbfq/activity_search.java | 85 ++++++++++---------
.../com/muqingbfq/api/FileDownloader.java | 20 ++---
.../main/java/com/muqingbfq/api/resource.java | 16 ++--
app/src/main/java/com/muqingbfq/api/url.java | 4 -
app/src/main/java/com/muqingbfq/bfq.java | 6 +-
app/src/main/java/com/muqingbfq/bfqkz.java | 70 +++++++--------
.../java/com/muqingbfq/fragment/Media.java | 5 +-
.../java/com/muqingbfq/fragment/bfq_db.java | 4 -
.../main/java/com/muqingbfq/fragment/gd.java | 22 ++---
.../com/muqingbfq/fragment/gd_adapter.java | 4 +-
.../main/java/com/muqingbfq/fragment/mp3.java | 1 -
.../java/com/muqingbfq/fragment/search.java | 8 +-
.../java/com/muqingbfq/fragment/wode.java | 6 +-
app/src/main/java/com/muqingbfq/home.java | 9 +-
.../main/java/com/muqingbfq/list/yylb.java | 21 -----
.../muqingbfq/mq/FloatingLyricsService.java | 6 +-
.../mq/NotificationManagerCompat.java | 70 ++++++++-------
app/src/main/java/com/muqingbfq/mq/wl.java | 6 +-
.../main/java/com/muqingbfq/view/LrcView.java | 10 +++
app/src/main/res/layout/activity_search.xml | 3 +-
app/src/main/res/layout/float_lrcview.xml | 1 -
app/src/main/res/layout/list_gd_b.xml | 3 +-
27 files changed, 210 insertions(+), 209 deletions(-)
rename app/src/main/java/com/muqingbfq/{xm.java => XM.java} (66%)
diff --git a/app/debug/output-metadata.json b/app/debug/output-metadata.json
index 73f4637..222f507 100644
--- a/app/debug/output-metadata.json
+++ b/app/debug/output-metadata.json
@@ -12,8 +12,8 @@
"filters": [],
"attributes": [],
"versionCode": 1,
- "versionName": "1.7.8",
- "outputFile": "Cloud_music-debug-v1.7.8.apk"
+ "versionName": "1.8.0",
+ "outputFile": "Cloud_music-debug-v1.8.0.apk"
}
],
"elementType": "File"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 5ccfa37..302517c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -24,7 +24,6 @@
-
+ android:exported="true"
+ tools:ignore="ExportedService">
+
diff --git a/app/src/main/java/com/muqingbfq/MP3.java b/app/src/main/java/com/muqingbfq/MP3.java
index 1bf0f65..45a1749 100644
--- a/app/src/main/java/com/muqingbfq/MP3.java
+++ b/app/src/main/java/com/muqingbfq/MP3.java
@@ -1,5 +1,11 @@
package com.muqingbfq;
+import static android.support.v4.media.session.MediaSessionCompat.*;
+
+import android.support.v4.media.session.MediaSessionCompat;
+
import java.util.Objects;
+import java.util.Queue;
+
public class MP3 {
public String id, name, zz;
// 音乐的贴图
diff --git a/app/src/main/java/com/muqingbfq/MediaPlayer.java b/app/src/main/java/com/muqingbfq/MediaPlayer.java
index cdcbfa3..2f1eda9 100644
--- a/app/src/main/java/com/muqingbfq/MediaPlayer.java
+++ b/app/src/main/java/com/muqingbfq/MediaPlayer.java
@@ -138,7 +138,8 @@ public class MediaPlayer extends android.media.MediaPlayer {
.listener(new RequestListener() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model,
- @NonNull Target target, boolean isFirstResource) {
+ @NonNull Target target,
+ boolean isFirstResource) {
bfq.bitmap = null;
try {
Mp3File mp3file = new Mp3File(wj.mp3 + bfqkz.xm.id);
@@ -151,15 +152,22 @@ public class MediaPlayer extends android.media.MediaPlayer {
} catch (Exception a) {
gj.sc("yc:"+a);
}
- bfqkz.notify.setBitmap();
+ if (bfqkz.notify != null) {
+ bfqkz.notify.tzl();
+ }
+ Media.setImageBitmap();
return false;
}
@Override
public boolean onResourceReady(@NonNull Bitmap bitmap, @NonNull Object model, Target target,
- @NonNull DataSource dataSource, boolean isFirstResource) {
+ @NonNull DataSource dataSource,
+ boolean isFirstResource) {
bfq.bitmap = bitmap;
- bfqkz.notify.setBitmap();
+ if (bfqkz.notify != null) {
+ bfqkz.notify.tzl();
+ }
+ Media.setImageBitmap();
return false;
}
})
@@ -167,8 +175,8 @@ public class MediaPlayer extends android.media.MediaPlayer {
}
@SuppressLint("NotifyDataSetChanged")
public void bfui() {
- setTX();
String name = xm.name, zz = bfqkz.xm.zz;
+ setTX();
if (bfq.view != null) {
Media.setProgress(0);
bfq.setname(name);
diff --git a/app/src/main/java/com/muqingbfq/xm.java b/app/src/main/java/com/muqingbfq/XM.java
similarity index 66%
rename from app/src/main/java/com/muqingbfq/xm.java
rename to app/src/main/java/com/muqingbfq/XM.java
index 6d3133c..6f8c74e 100644
--- a/app/src/main/java/com/muqingbfq/xm.java
+++ b/app/src/main/java/com/muqingbfq/XM.java
@@ -1,14 +1,14 @@
package com.muqingbfq;
-public class xm {
+public class XM {
public String id, name;
public Object picurl;
- public xm(String id, String name, String picurl) {
+ public XM(String id, String name, String picurl) {
this.id = id;
this.name = name;
this.picurl = picurl;
}
- public xm(String id, String name, int picurl) {
+ public XM(String id, String name, int picurl) {
this.id = id;
this.name = name;
this.picurl = picurl;
diff --git a/app/src/main/java/com/muqingbfq/activity_search.java b/app/src/main/java/com/muqingbfq/activity_search.java
index 7ba8561..5548035 100644
--- a/app/src/main/java/com/muqingbfq/activity_search.java
+++ b/app/src/main/java/com/muqingbfq/activity_search.java
@@ -25,6 +25,8 @@ import com.google.android.flexbox.FlexDirection;
import com.google.android.flexbox.FlexWrap;
import com.google.android.flexbox.FlexboxLayoutManager;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
import com.muqingbfq.databinding.ActivitySearchBinding;
import com.muqingbfq.fragment.search;
import com.muqingbfq.mq.FragmentActivity;
@@ -33,7 +35,6 @@ import com.muqingbfq.mq.wj;
import com.muqingbfq.mq.wl;
import org.json.JSONArray;
-import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
@@ -42,28 +43,25 @@ import java.util.List;
public class activity_search extends FragmentActivity {
private EditText editText;
private ArrayAdapter adapter;
- private SearchRecordAdapter recordAdapter;
- private JSONObject json = new JSONObject();
- private final List json_list = new ArrayList<>();
+ private List json_list = new ArrayList<>();
private final List list = new ArrayList<>();
ListView listPopupWindow;
- ActivitySearchBinding inflate;
+ ActivitySearchBinding binding;
+
@SuppressLint("NotifyDataSetChanged")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- inflate = ActivitySearchBinding.inflate(getLayoutInflater());
- setContentView(inflate.getRoot());
- RecyclerView recyclerView = findViewById(R.id.list_recycler);
+ binding = ActivitySearchBinding.inflate(getLayoutInflater());
+ setContentView(binding.getRoot());
FlexboxLayoutManager manager = new FlexboxLayoutManager(this);
//设置主轴排列方式
manager.setFlexDirection(FlexDirection.ROW);
//设置是否换行
manager.setFlexWrap(FlexWrap.WRAP);
manager.setAlignItems(AlignItems.STRETCH);
- recyclerView.setLayoutManager(manager);
- new SearchRecordAdapter();
- recyclerView.setAdapter(recordAdapter);
+ binding.listRecycler.setLayoutManager(manager);
+ binding.listRecycler.setAdapter(new SearchRecordAdapter());
editText = findViewById(R.id.editview);
editText.setOnEditorActionListener((v, actionId, event) -> {
@@ -75,15 +73,15 @@ public class activity_search extends FragmentActivity {
}
return false;
});
- inflate.deleat.setOnClickListener(v -> new MaterialAlertDialogBuilder(v.getContext())
+ binding.deleat.setOnClickListener(v -> new MaterialAlertDialogBuilder(
+ activity_search.this)
.setTitle("删除")
.setMessage("清空历史记录?")
.setNegativeButton("取消", null)
.setPositiveButton("确定", (dialogInterface, i) -> {
wj.sc(wj.filesdri + wj.lishi_json);
- json = new JSONObject();
json_list.clear();
- recordAdapter.notifyDataSetChanged();
+ binding.listRecycler.getAdapter().notifyDataSetChanged();
findViewById(R.id.xxbj1).setVisibility(View.GONE);
})
.show());
@@ -150,38 +148,32 @@ public class activity_search extends FragmentActivity {
}
});
- inflate.editview.requestFocus();//获取焦点
+ binding.editview.requestFocus();//获取焦点
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
//if (!imm.isActive()) //没有显示键盘,弹出
- imm.showSoftInput(inflate.editview, 0);
+ imm.showSoftInput(binding.editview, 0);
}
public void dismiss() {
- inflate.editview.clearFocus();
+ binding.editview.clearFocus();
listPopupWindow.setVisibility(View.GONE);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm.isActive()) //有显示键盘,隐藏
- imm.hideSoftInputFromWindow(inflate.editview.getWindowToken(),
+ imm.hideSoftInputFromWindow(binding.editview.getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
}
+ @SuppressLint("NotifyDataSetChanged")
private void addSearchRecord(String name) {
try {
- if (!findViewById(R.id.xxbj1).isShown()) {
- findViewById(R.id.xxbj1).setVisibility(View.VISIBLE);
+ if (!binding.xxbj1.isShown()) {
+ binding.xxbj1.setVisibility(View.VISIBLE);
}
- if (!json.has("list")) {
- json.put("list", new JSONArray());
- }
- if (!json_list.contains(name)) {
- json_list.add(name);
- JSONObject record = new JSONObject();
- record.put("name", name);
- json.getJSONArray("list").put(record);
- wj.xrwb(wj.filesdri + wj.lishi_json, json.toString());
- adapter.notifyDataSetChanged();
- }
- } catch (JSONException e) {
+ json_list.remove(name);
+ json_list.add(0, name);
+ wj.xrwb(wj.filesdri + wj.lishi_json, new Gson().toJson(json_list));
+ binding.listRecycler.getAdapter().notifyDataSetChanged();
+ } catch (Exception e) {
gj.sc(e);
}
}
@@ -222,21 +214,16 @@ public class activity_search extends FragmentActivity {
String dqwb = wj.dqwb(wj.filesdri + wj.lishi_json);
if (dqwb != null) {
try {
- json = new JSONObject(dqwb);
- JSONArray list1 = json.getJSONArray("list");
- int length = list1.length();
- for (int i = length - 1; i >= 0; i--) {
- json_list.add(list1.
- getJSONObject(i).getString("name"));
- }
- } catch (JSONException e) {
+ json_list = new Gson().fromJson(dqwb, new TypeToken>() {
+ }.getType());
+ } catch (Exception e) {
+ wj.sc(wj.filesdri + wj.lishi_json);
yc.start(activity_search.this, e);
}
}
if (json_list.isEmpty()) {
- inflate.xxbj1.setVisibility(View.INVISIBLE);
+ binding.xxbj1.setVisibility(View.INVISIBLE);
}
- recordAdapter = this;
}
@NonNull
@@ -254,6 +241,19 @@ public class activity_search extends FragmentActivity {
editText.setText(keyword);
start(keyword);
});
+ holder.recordTextView.setOnLongClickListener(view -> {
+ new MaterialAlertDialogBuilder(activity_search.this).
+ setTitle("删除此记录:" + keyword)
+ .setPositiveButton("确定", (dialogInterface, i) -> {
+ json_list.remove(keyword);
+ wj.xrwb(wj.filesdri + wj.lishi_json, new Gson().toJson(json_list));
+ notifyItemChanged(position);
+ })
+ .setNegativeButton("取消", null)
+ .show();
+
+ return false;
+ });
}
@Override
@@ -285,6 +285,7 @@ public class activity_search extends FragmentActivity {
finish();
}
}
+
@Override
public void finish() {
super.finish();
diff --git a/app/src/main/java/com/muqingbfq/api/FileDownloader.java b/app/src/main/java/com/muqingbfq/api/FileDownloader.java
index 5f6528f..82e3f55 100644
--- a/app/src/main/java/com/muqingbfq/api/FileDownloader.java
+++ b/app/src/main/java/com/muqingbfq/api/FileDownloader.java
@@ -8,16 +8,14 @@ import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.os.Build;
-import android.os.Environment;
+import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;
import com.mpatric.mp3agic.ID3v2;
-import com.mpatric.mp3agic.InvalidDataException;
import com.mpatric.mp3agic.Mp3File;
-import com.mpatric.mp3agic.UnsupportedTagException;
import com.muqingbfq.MP3;
import com.muqingbfq.R;
import com.muqingbfq.bfq;
@@ -37,10 +35,10 @@ import okhttp3.Request;
import okhttp3.Response;
public class FileDownloader {
- private static final String CHANNEL_ID = "download_channel";
- private static final int NOTIFICATION_ID = 3;
+ private final String CHANNEL_ID = "download_channel";
+ private final int NOTIFICATION_ID = 3;
- public static void downloadFile(Context context, String url, MP3 x) {
+ public void downloadFile(Context context, String url, MP3 x) {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
@@ -50,18 +48,18 @@ public class FileDownloader {
// 发起请求
client.newCall(request).enqueue(new Callback() {
@Override
- public void onFailure(Call call, IOException e) {
+ public void onFailure(@NonNull Call call, @NonNull IOException e) {
e.printStackTrace();
// 下载失败处理
}
@Override
- public void onResponse(Call call, Response response) throws IOException {
+ public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException {
if (!response.isSuccessful()) {
// 下载失败处理
return;
}
- File outputFile = new File(wj.mp3, "nihao");
+ File outputFile = new File(wj.mp3, x.id);
File parentFile = outputFile.getParentFile();
if (!parentFile.isDirectory()) {
parentFile.mkdirs();
@@ -122,7 +120,7 @@ public class FileDownloader {
});
}
- private static void createNotificationChannel(Context context) {
+ private void createNotificationChannel(Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
CharSequence name = "Download Channel";
String description = "Channel for file download";
@@ -139,7 +137,7 @@ public class FileDownloader {
}
}
- private static void updateNotificationProgress(Context context, long fileSize,
+ private void updateNotificationProgress(Context context, long fileSize,
long fileSizeDownloaded) {
int progress = (int) ((fileSizeDownloaded * 100) / fileSize);
diff --git a/app/src/main/java/com/muqingbfq/api/resource.java b/app/src/main/java/com/muqingbfq/api/resource.java
index 5470388..b6d2530 100644
--- a/app/src/main/java/com/muqingbfq/api/resource.java
+++ b/app/src/main/java/com/muqingbfq/api/resource.java
@@ -6,7 +6,7 @@ import com.muqingbfq.main;
import com.muqingbfq.mq.gj;
import com.muqingbfq.mq.wj;
import com.muqingbfq.mq.wl;
-import com.muqingbfq.xm;
+import com.muqingbfq.XM;
import org.json.JSONArray;
import org.json.JSONException;
@@ -16,7 +16,7 @@ import java.util.List;
public class resource {
- public static void recommend(List list) {
+ public static void recommend(List list) {
try {
list.clear();
String hq;
@@ -54,16 +54,16 @@ public class resource {
}
- public static xm Playlist_content(String UID) throws JSONException {
+ public static XM Playlist_content(String UID) throws JSONException {
String hq = wl.get(main.api + "/playlist/detail?id=" + UID);
JSONObject js = new JSONObject(hq).getJSONObject("playlist");
String id = js.getString("id");
String name = js.getString("name");
String coverImgUrl = js.getString("coverImgUrl");
- return new xm(id, name, coverImgUrl);
+ return new XM(id, name, coverImgUrl);
}
- public static void 排行榜(List list) {
+ public static void 排行榜(List list) {
String hq;
try {
if (wj.cz(wj.gd_phb)) {
@@ -88,7 +88,7 @@ public class resource {
name += description;
}
String coverImgUrl = get.getString("coverImgUrl");
- list.add(new xm(id, name, coverImgUrl));
+ list.add(new XM(id, name, coverImgUrl));
}
}
} catch (Exception e) {
@@ -96,10 +96,10 @@ public class resource {
}
}
- private static void add(JSONObject jsonObject, List list) throws Exception {
+ private static void add(JSONObject jsonObject, List list) throws Exception {
String id = jsonObject.getString("id");
String name = jsonObject.getString("name");
String picUrl = jsonObject.getString("picUrl");
- list.add(new xm(id, name, picUrl));
+ list.add(new XM(id, name, picUrl));
}
}
diff --git a/app/src/main/java/com/muqingbfq/api/url.java b/app/src/main/java/com/muqingbfq/api/url.java
index 33c61cc..5b15d9e 100644
--- a/app/src/main/java/com/muqingbfq/api/url.java
+++ b/app/src/main/java/com/muqingbfq/api/url.java
@@ -1,16 +1,13 @@
package com.muqingbfq.api;
import com.mpatric.mp3agic.ID3v2;
-import com.mpatric.mp3agic.InvalidDataException;
import com.mpatric.mp3agic.Mp3File;
-import com.mpatric.mp3agic.UnsupportedTagException;
import com.muqingbfq.MP3;
import com.muqingbfq.bfq;
import com.muqingbfq.fragment.Media;
import com.muqingbfq.mq.gj;
import com.muqingbfq.mq.wj;
import com.muqingbfq.mq.wl;
-import com.muqingbfq.xm;
import com.muqingbfq.yc;
import org.json.JSONArray;
@@ -19,7 +16,6 @@ import org.json.JSONObject;
import java.io.File;
import java.io.FileOutputStream;
-import java.io.IOException;
import java.io.InputStream;
import okhttp3.Call;
diff --git a/app/src/main/java/com/muqingbfq/bfq.java b/app/src/main/java/com/muqingbfq/bfq.java
index aea0cdc..bb4df8e 100644
--- a/app/src/main/java/com/muqingbfq/bfq.java
+++ b/app/src/main/java/com/muqingbfq/bfq.java
@@ -50,8 +50,8 @@ public class bfq extends AppCompatActivity {
lrcView = binding.lrcView;
ViewGroup.LayoutParams layoutParams = binding.cardview.getLayoutParams();
- layoutParams.height = main.k;
- layoutParams.width = main.k;
+ layoutParams.height = main.k - 100;
+ layoutParams.width = main.k - 100;
binding.cardview.setLayoutParams(layoutParams);/*
bfqkz.mt.seekTo(Math.toIntExact(time));
if (!gj.isTablet(this)) {
@@ -151,7 +151,7 @@ public class bfq extends AppCompatActivity {
JSONArray data = json.getJSONArray("data");
JSONObject jsonObject = data.getJSONObject(0);
String url = jsonObject.getString("url");
- FileDownloader.downloadFile(bfq.this, url, bfqkz.xm);
+ new FileDownloader().downloadFile(bfq.this, url, bfqkz.xm);
} catch (JSONException e) {
throw new RuntimeException(e);
}
diff --git a/app/src/main/java/com/muqingbfq/bfqkz.java b/app/src/main/java/com/muqingbfq/bfqkz.java
index 1fe2122..ec323b2 100644
--- a/app/src/main/java/com/muqingbfq/bfqkz.java
+++ b/app/src/main/java/com/muqingbfq/bfqkz.java
@@ -85,63 +85,62 @@ public class bfqkz extends MediaBrowserServiceCompat {
}
- public static MediaSessionCompat mSession;
- public static PlaybackStateCompat playback;
+ public MediaSessionCompat mSession;
+ public PlaybackStateCompat.Builder playback;
+
public PendingIntent pendingIntent;
+
+ public MediaMetadataCompat.Builder builder = new MediaMetadataCompat.Builder();
@Override
public void onCreate() {
super.onCreate();
- com.muqingbfq.api.playlist.hq_hc(bfqkz.lishi_list);
- new BluetoothMusicController(this);
- playback = new PlaybackStateCompat.Builder()
- .setState(PlaybackStateCompat.STATE_NONE, 0, 1.0f)
- .build();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setComponent(new ComponentName(this, home.class));//用ComponentName得到class对象
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);// 关键的一步,设置启动模式,两种情况
pendingIntent = com.muqingbfq.mq.NotificationManagerCompat.getActivity(this, intent);
- mSession = new MediaSessionCompat(this, "MusicService",
+ com.muqingbfq.api.playlist.hq_hc(bfqkz.lishi_list);
+ new BluetoothMusicController(this);
+ mSession = new MediaSessionCompat(this, "MediaSessionCompat",
home.componentName, pendingIntent);
+ playback = new PlaybackStateCompat.Builder();
+ playback.setState(PlaybackStateCompat.STATE_NONE, 0, 1.0f)
+ .build();
mSession.setCallback(new callback());
- mSession.setFlags(MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
- mSession.setPlaybackState(playback);
-// mSession.setActive(true);
+ mSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
+
+ playback.setActions(PlaybackStateCompat.ACTION_PLAY);
+ playback.setActions(PlaybackStateCompat.ACTION_STOP);
+
+ mSession.setPlaybackState(playback.build());
setSessionToken(mSession.getSessionToken());
-
+ mSession.setActive(true);
notify = new com.muqingbfq.mq.NotificationManagerCompat(this);
-
}
class callback extends MediaSessionCompat.Callback {
- @Override
- public boolean onMediaButtonEvent(Intent mediaButtonEvent) {
- mediaButtonEvent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
- return true;
- }
-
@Override
public void onPlay() {
super.onPlay();
- if (playback.getState() == PlaybackStateCompat.STATE_PAUSED) {
+ if (playback.build().getState() == PlaybackStateCompat.STATE_PAUSED) {
mt.start();
- playback = new PlaybackStateCompat.Builder()
- .setState(PlaybackStateCompat.STATE_PLAYING, 0, 1.0f)
+ playback.setState(PlaybackStateCompat.STATE_PLAYING, 0, 1.0f)
.build();
- mSession.setPlaybackState(playback);
+ mSession.setPlaybackState(playback.build());
}
+ gj.sc(this.getClass());
+
}
@Override
public void onPause() {
super.onPause();
- if (playback.getState() == PlaybackStateCompat.STATE_PLAYING) {
+ if (playback.build().getState() == PlaybackStateCompat.STATE_PLAYING) {
mt.pause();
- playback = new PlaybackStateCompat.Builder()
- .setState(PlaybackStateCompat.STATE_PAUSED, 0, 1.0f)
+ playback.setState(PlaybackStateCompat.STATE_PAUSED, 0, 1.0f)
.build();
- mSession.setPlaybackState(playback);
+ mSession.setPlaybackState(playback.build());
}
}
@@ -149,15 +148,14 @@ public class bfqkz extends MediaBrowserServiceCompat {
@Override
public void onPlayFromUri(Uri uri, Bundle extras) {
try {
- switch (playback.getState()) {
+ switch (playback.build().getState()) {
case PlaybackStateCompat.STATE_PLAYING:
case PlaybackStateCompat.STATE_PAUSED:
case PlaybackStateCompat.STATE_NONE:
// mp3(uri);/
- playback = new PlaybackStateCompat.Builder()
- .setState(PlaybackStateCompat.STATE_CONNECTING, 0, 1.0f)
+ playback.setState(PlaybackStateCompat.STATE_CONNECTING, 0, 1.0f)
.build();
- mSession.setPlaybackState(playback);
+ mSession.setPlaybackState(playback.build());
//我们可以保存当前播放音乐的信息,以便客户端刷新UI
mSession.setMetadata(new MediaMetadataCompat.Builder()
.putString(MediaMetadataCompat.METADATA_KEY_TITLE, extras.getString("title"))
@@ -187,14 +185,4 @@ public class bfqkz extends MediaBrowserServiceCompat {
public void onLoadChildren(@NonNull String parentId, @NonNull Result> result) {
}
- public static void updateNotification() {
- try {
- // 更新通知栏的播放状态
- if (bfqkz.notify != null && notify.notificationBuilder != null) {
- notify.tzl();
- }
- } catch (Exception e) {
- gj.sc("bfqkz updateNotification:" + e);
- }
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/muqingbfq/fragment/Media.java b/app/src/main/java/com/muqingbfq/fragment/Media.java
index 5baae24..c2acd33 100644
--- a/app/src/main/java/com/muqingbfq/fragment/Media.java
+++ b/app/src/main/java/com/muqingbfq/fragment/Media.java
@@ -53,7 +53,10 @@ public class Media {
bfq.kgsetImageResource(R.drawable.zt);
}
bfq_db.setkg(bool);
- bfqkz.updateNotification();
+ if (bfqkz.notify != null) {
+ bfqkz.notify.tzl_button();
+ }
+
}
public Media(ActivityBfqBinding binding) {
diff --git a/app/src/main/java/com/muqingbfq/fragment/bfq_db.java b/app/src/main/java/com/muqingbfq/fragment/bfq_db.java
index b0af1c2..849a463 100644
--- a/app/src/main/java/com/muqingbfq/fragment/bfq_db.java
+++ b/app/src/main/java/com/muqingbfq/fragment/bfq_db.java
@@ -12,10 +12,8 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
-import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.muqingbfq.MP3;
-import com.muqingbfq.MediaPlayer;
import com.muqingbfq.R;
import com.muqingbfq.api.url;
import com.muqingbfq.bfq;
@@ -24,9 +22,7 @@ import com.muqingbfq.bfqkz;
import com.muqingbfq.home;
import com.muqingbfq.mq.gj;
import com.muqingbfq.mq.wj;
-import com.muqingbfq.xm;
-import java.io.IOException;
import java.lang.reflect.Type;
import java.util.List;
diff --git a/app/src/main/java/com/muqingbfq/fragment/gd.java b/app/src/main/java/com/muqingbfq/fragment/gd.java
index 111cbc7..0bddaf9 100644
--- a/app/src/main/java/com/muqingbfq/fragment/gd.java
+++ b/app/src/main/java/com/muqingbfq/fragment/gd.java
@@ -29,7 +29,7 @@ import com.muqingbfq.mq.gj;
import com.muqingbfq.mq.wj;
import com.muqingbfq.mq.wl;
import com.muqingbfq.view.CardImage;
-import com.muqingbfq.xm;
+import com.muqingbfq.XM;
import org.json.JSONArray;
import org.json.JSONException;
@@ -42,7 +42,7 @@ import java.util.Objects;
public class gd extends com.muqingbfq.mq.FragmentActivity {
public static String gdid;
- private final List list = new ArrayList<>();
+ private final List list = new ArrayList<>();
public static RecyclerView.Adapter adapter;
int k;
@@ -90,7 +90,7 @@ public class gd extends com.muqingbfq.mq.FragmentActivity {
String id = jsonObject.getString("id");
String name = jsonObject.getString("name");
String coverImgUrl = jsonObject.getString("coverImgUrl");
- list.add(new xm(id, name, coverImgUrl));
+ list.add(new XM(id, name, coverImgUrl));
}
} catch (Exception e) {
gj.sc(e);
@@ -102,15 +102,15 @@ public class gd extends com.muqingbfq.mq.FragmentActivity {
public static class baseadapter extends RecyclerView.Adapter{
Context context;
- List list;
+ List list;
- public baseadapter(Context context, List list) {
+ public baseadapter(Context context, List list) {
this.context = context;
this.list = list;
}
boolean bool = false;
- public baseadapter(Context context, List list,boolean bool) {
+ public baseadapter(Context context, List list, boolean bool) {
this.context = context;
this.list = list;
this.bool = bool;
@@ -127,13 +127,13 @@ public class gd extends com.muqingbfq.mq.FragmentActivity {
.inflate(R.layout.list_gd, parent, false));
}
- public void setList(List list) {
+ public void setList(List list) {
this.list = list;
}
@Override
public void onBindViewHolder(@NonNull VH holder, int position) {
- xm xm = list.get(position);
+ XM xm = list.get(position);
CARD card = new CARD(xm);
if (bool) {
holder.itemView.setOnClickListener(card);
@@ -180,9 +180,9 @@ public class gd extends com.muqingbfq.mq.FragmentActivity {
class CARD implements View.OnClickListener
, View.OnLongClickListener {
- xm xm;
+ XM xm;
- public CARD(xm xm) {
+ public CARD(XM xm) {
this.xm = xm;
}
@Override
@@ -212,7 +212,7 @@ public class gd extends com.muqingbfq.mq.FragmentActivity {
if (wj.cz(wj.gd_xz)) {
jsonObject = new JSONObject(Objects.requireNonNull(wj.dqwb(wj.gd_xz)));
}
- xm fh=resource.Playlist_content(xm.id);
+ XM fh=resource.Playlist_content(xm.id);
JSONObject json = new JSONObject();
json.put("name", fh.name);
json.put("picUrl", fh.picurl);
diff --git a/app/src/main/java/com/muqingbfq/fragment/gd_adapter.java b/app/src/main/java/com/muqingbfq/fragment/gd_adapter.java
index aa02c78..4bbb3ac 100644
--- a/app/src/main/java/com/muqingbfq/fragment/gd_adapter.java
+++ b/app/src/main/java/com/muqingbfq/fragment/gd_adapter.java
@@ -15,7 +15,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.muqingbfq.api.resource;
import com.muqingbfq.main;
-import com.muqingbfq.xm;
+import com.muqingbfq.XM;
import java.util.ArrayList;
import java.util.List;
@@ -26,7 +26,7 @@ public class gd_adapter extends Fragment {
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
FrameLayout layout = new FrameLayout(getContext());
- List list = new ArrayList<>();
+ List list = new ArrayList<>();
RecyclerView recyclerView = new RecyclerView(layout.getContext());
int k = (int) (main.k / getResources().getDisplayMetrics().density + 0.5f);
GridLayoutManager gridLayoutManager = new GridLayoutManager(layout.getContext(), k / 120);
diff --git a/app/src/main/java/com/muqingbfq/fragment/mp3.java b/app/src/main/java/com/muqingbfq/fragment/mp3.java
index fc37f99..77452cd 100644
--- a/app/src/main/java/com/muqingbfq/fragment/mp3.java
+++ b/app/src/main/java/com/muqingbfq/fragment/mp3.java
@@ -24,7 +24,6 @@ import com.muqingbfq.databinding.FragmentMp3Binding;
import com.muqingbfq.list.MyViewHoder;
import com.muqingbfq.main;
import com.muqingbfq.mq.FragmentActivity;
-import com.muqingbfq.xm;
import java.util.ArrayList;
import java.util.List;
diff --git a/app/src/main/java/com/muqingbfq/fragment/search.java b/app/src/main/java/com/muqingbfq/fragment/search.java
index d27d3ee..34fade6 100644
--- a/app/src/main/java/com/muqingbfq/fragment/search.java
+++ b/app/src/main/java/com/muqingbfq/fragment/search.java
@@ -26,7 +26,7 @@ import com.muqingbfq.list.MyViewHoder;
import com.muqingbfq.main;
import com.muqingbfq.mq.gj;
import com.muqingbfq.mq.wl;
-import com.muqingbfq.xm;
+import com.muqingbfq.XM;
import org.json.JSONArray;
import org.json.JSONObject;
@@ -37,7 +37,7 @@ import java.util.List;
public class search extends Fragment {
public static RecyclerView.Adapter lbspq;
List list = new ArrayList<>();
- List xmList = new ArrayList<>();
+ List xmList = new ArrayList<>();
public String name;
public FragmentSearchBinding inflate;
@@ -169,7 +169,7 @@ public class search extends Fragment {
String name = js.getString("name");
String coverImgUrl = js.getString("coverImgUrl");
// gj.sc(name);
- xmList.add(new xm(id, name, coverImgUrl));
+ xmList.add(new XM(id, name, coverImgUrl));
return;
} catch (Exception e) {
gj.sc(e);
@@ -185,7 +185,7 @@ public class search extends Fragment {
String name = jsonObject.getString("name");
String coverImgUrl = jsonObject.getString("coverImgUrl");
// gj.sc(name);
- xmList.add(new xm(id, name, coverImgUrl));
+ xmList.add(new XM(id, name, coverImgUrl));
}
} catch (Exception e) {
gj.sc(e);
diff --git a/app/src/main/java/com/muqingbfq/fragment/wode.java b/app/src/main/java/com/muqingbfq/fragment/wode.java
index f81b512..fbbb7b8 100644
--- a/app/src/main/java/com/muqingbfq/fragment/wode.java
+++ b/app/src/main/java/com/muqingbfq/fragment/wode.java
@@ -25,7 +25,7 @@ import com.muqingbfq.login.user_message;
import com.muqingbfq.main;
import com.muqingbfq.mq.gj;
import com.muqingbfq.mq.wj;
-import com.muqingbfq.xm;
+import com.muqingbfq.XM;
import org.json.JSONObject;
@@ -50,7 +50,7 @@ public class wode extends Fragment {
{R.drawable.paihangbang, "排行榜", "排行榜"},
{R.drawable.icon, "开发中", ""}
};
- private final List list = new ArrayList<>();
+ private final List list = new ArrayList<>();
@Nullable
@Override
@@ -151,7 +151,7 @@ public class wode extends Fragment {
JSONObject jsonObject = date.getJSONObject(id);
String name = jsonObject.getString("name");
String picUrl = jsonObject.getString("picUrl");
- list.add(new xm(id, name, picUrl));
+ list.add(new XM(id, name, picUrl));
}
main.handler.post(() -> binding.recyclerview2.getAdapter().notifyDataSetChanged());
} catch (Exception e) {
diff --git a/app/src/main/java/com/muqingbfq/home.java b/app/src/main/java/com/muqingbfq/home.java
index c310cef..57a0301 100644
--- a/app/src/main/java/com/muqingbfq/home.java
+++ b/app/src/main/java/com/muqingbfq/home.java
@@ -5,6 +5,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.media.session.MediaSessionManager;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
@@ -25,7 +26,6 @@ import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
import com.muqingbfq.databinding.ActivityHomeBinding;
-import com.muqingbfq.databinding.FloatLrcviewBinding;
import com.muqingbfq.fragment.bfq_db;
import com.muqingbfq.fragment.gd_adapter;
import com.muqingbfq.fragment.wode;
@@ -69,9 +69,9 @@ public class home extends AppCompatActivity {
//初始化播放器组件
// 启动Service
if (componentName == null) {
- componentName = new ComponentName(this, bfqkz.class);
+ componentName = new ComponentName(getApplicationContext(), bfqkz.class);
mBrowser = new MediaBrowserCompat(
- this, componentName
+ getApplicationContext(), componentName
,//绑定服务端
browserConnectionCallback,//设置连接回调
null
@@ -269,6 +269,7 @@ public class home extends AppCompatActivity {
//当Service获取数据后会将数据发送回来,此时会触发SubscriptionCallback.onChildrenLoaded回调
mBrowser.subscribe(mediaId, browserSubscriptionCallback);
}
+ gj.sc("连接成功");
}
@Override
@@ -284,6 +285,8 @@ public class home extends AppCompatActivity {
@Override
public void onChildrenLoaded(@NonNull String parentId,
@NonNull List children) {
+
+ gj.sc("onChildrenLoaded------");
}
};
}
\ No newline at end of file
diff --git a/app/src/main/java/com/muqingbfq/list/yylb.java b/app/src/main/java/com/muqingbfq/list/yylb.java
index 71c6f3b..d33d46e 100644
--- a/app/src/main/java/com/muqingbfq/list/yylb.java
+++ b/app/src/main/java/com/muqingbfq/list/yylb.java
@@ -1,25 +1,4 @@
package com.muqingbfq.list;
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.core.content.ContextCompat;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.muqingbfq.R;
-import com.muqingbfq.api.url;
-import com.muqingbfq.bfq;
-import com.muqingbfq.bfqkz;
-import com.muqingbfq.fragment.bflb_db;
-import com.muqingbfq.fragment.mp3;
-import com.muqingbfq.home;
-import com.muqingbfq.xm;
-
-import java.util.List;
-
public class yylb {
}
\ No newline at end of file
diff --git a/app/src/main/java/com/muqingbfq/mq/FloatingLyricsService.java b/app/src/main/java/com/muqingbfq/mq/FloatingLyricsService.java
index b6a5fc7..f7ac12b 100644
--- a/app/src/main/java/com/muqingbfq/mq/FloatingLyricsService.java
+++ b/app/src/main/java/com/muqingbfq/mq/FloatingLyricsService.java
@@ -65,7 +65,8 @@ public class FloatingLyricsService extends Service implements View.OnClickListen
public static class SETUP {
//0是关闭 1是打开 2是锁定
public int i;
- public float TOP;
+ public float TOP, Alpha;
+ public String Color;
public int Y;
}
@@ -94,6 +95,8 @@ public class FloatingLyricsService extends Service implements View.OnClickListen
setup.i = 1;
setup.TOP = 0;
setup.Y = -main.g;
+ setup.Alpha = 0.9f;
+ setup.Color = "#0088FF";
}
} catch (Exception e) {
wj.sc(file.toString());
@@ -118,6 +121,7 @@ public class FloatingLyricsService extends Service implements View.OnClickListen
params.y = setup.Y;
lrcView = binding.lrcView;
+ lrcView.setTextColor(setup.Color);
bfq_an.kz bfqAn = new bfq_an.kz();
binding.kg.setOnClickListener(this);
binding.syq.setOnClickListener(bfqAn);
diff --git a/app/src/main/java/com/muqingbfq/mq/NotificationManagerCompat.java b/app/src/main/java/com/muqingbfq/mq/NotificationManagerCompat.java
index d0e3246..633bf86 100644
--- a/app/src/main/java/com/muqingbfq/mq/NotificationManagerCompat.java
+++ b/app/src/main/java/com/muqingbfq/mq/NotificationManagerCompat.java
@@ -5,15 +5,14 @@ import android.annotation.SuppressLint;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
-import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
+import android.support.v4.media.MediaMetadataCompat;
import androidx.core.app.ActivityCompat;
import androidx.core.app.NotificationCompat;
-import androidx.media.MediaBrowserServiceCompat;
import com.muqingbfq.MyButtonClickReceiver;
import com.muqingbfq.R;
@@ -58,13 +57,12 @@ public class NotificationManagerCompat {
setAction("lrc"));
style = new androidx.media.app.NotificationCompat.MediaStyle()
.setShowActionsInCompactView(1, 2, 3)
- .setMediaSession(bfqkz.mSession.getSessionToken());
+ .setMediaSession(context.mSession.getSessionToken());
notificationManager = androidx.core.app.NotificationManagerCompat.from(context);
notificationBuilder = getNotificationBuilder(context)
.setSmallIcon(R.drawable.icon)
- .setContentTitle(name).setContentText(zz)
.setPriority(NotificationCompat.PRIORITY_LOW)
- .setOngoing(true).setAutoCancel(false).setOnlyAlertOnce(true)
+ .setOngoing(true).setColorized(true).setShowWhen(false)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setContentIntent(context.pendingIntent)
.setStyle(style);
@@ -73,15 +71,38 @@ public class NotificationManagerCompat {
yc.start(context, e);
}
}
+
androidx.media.app.NotificationCompat.MediaStyle style;
+
@SuppressLint("RestrictedApi")
- public void tzl() {
- if (bfqkz.xm != null) {
- name = bfqkz.xm.name;
- zz = bfqkz.xm.zz;
+ public void tzl_button() {
+ if (notificationBuilder == null) {
+ return;
}
notificationBuilder.mActions.clear();
notificationBuilder
+ .addAction(R.drawable.like, "like", pendingIntent_kg) // #0
+ .addAction(R.drawable.syq, "syq", pendingIntent_syq) // #0
+ .addAction(bfqkz.mt.isPlaying() ? R.drawable.bf : R.drawable.zt
+ , "kg", pendingIntent_kg) // #1
+ .addAction(R.drawable.xyq, "xyq", pendingIntent_xyq)
+ .addAction(R.drawable.lock, "lrc", pendingIntent_lrc)
+ .setOngoing(bfqkz.mt.isPlaying());
+ notificationManager_notify();
+ }
+
+ @SuppressLint("RestrictedApi")
+ public void tzl() {
+ if (notificationBuilder == null) {
+ return;
+ }
+ if (bfqkz.xm != null) {
+ name = bfqkz.xm.name;
+ zz = bfqkz.xm.zz;
+ }
+ notificationBuilder.mActions.clear();
+ notificationBuilder
+ .setLargeIcon(bfq.bitmap)
.addAction(R.drawable.like, "like", pendingIntent_kg) // #0
.addAction(R.drawable.syq, "syq", pendingIntent_syq) // #0
.addAction(bfqkz.mt.isPlaying() ? R.drawable.bf : R.drawable.zt
@@ -91,6 +112,14 @@ public class NotificationManagerCompat {
.setContentTitle(name)
.setContentText(zz)
.setOngoing(bfqkz.mt.isPlaying());
+
+ context.builder.putString(MediaMetadataCompat.METADATA_KEY_TITLE, name)
+ .putString(MediaMetadataCompat.METADATA_KEY_ALBUM, zz)
+ .putString(MediaMetadataCompat.METADATA_KEY_ARTIST, zz)
+ .putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, bfq.bitmap)
+ .putLong(MediaMetadataCompat.METADATA_KEY_DURATION, 100);
+
+ context.mSession.setMetadata(context.builder.build());
notificationManager_notify();
}
@@ -98,31 +127,13 @@ public class NotificationManagerCompat {
pendingIntent_syq,
pendingIntent_xyq,
pendingIntent_lrc;
- private final String CHANNEL_ID = "muqing_yy_id";
+ private final String CHANNEL_ID = "MediaSessionCompat";
public void notificationManager_notify() {
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
return;
}
- notificationManager.notify(1, notificationBuilder.build());
- }
-
- public void setBitmap() {
- Media.setImageBitmap();
- if (notificationManager != null) {
- if (ActivityCompat.checkSelfPermission(home.appCompatActivity, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
- // TODO: Consider calling
- // ActivityCompat#requestPermissions
- // here to request the missing permissions, and then overriding
- // public void onRequestPermissionsResult(int requestCode, String[] permissions,
- // int[] grantResults)
- // to handle the case where the user grants the permission. See the documentation
- // for ActivityCompat#requestPermissions for more details.
- return;
- }
- notificationBuilder.setLargeIcon(bfq.bitmap);
- notificationManager.notify(1, notificationBuilder.build());
- }
+ notificationManager.notify(0, notificationBuilder.build());
}
private NotificationCompat.Builder getNotificationBuilder(Context context) {
@@ -142,7 +153,6 @@ public class NotificationManagerCompat {
}
-
public static PendingIntent getActivity(Context context, Intent intent) {
int flag;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
diff --git a/app/src/main/java/com/muqingbfq/mq/wl.java b/app/src/main/java/com/muqingbfq/mq/wl.java
index d20b605..60f7d96 100644
--- a/app/src/main/java/com/muqingbfq/mq/wl.java
+++ b/app/src/main/java/com/muqingbfq/mq/wl.java
@@ -2,7 +2,7 @@ package com.muqingbfq.mq;
import com.muqingbfq.main;
-import com.muqingbfq.xm;
+import com.muqingbfq.XM;
import org.json.JSONException;
import org.json.JSONObject;
@@ -87,9 +87,9 @@ public class wl {
public static class xz extends Thread {
String url;
- xm x;
+ XM x;
- public xz(String url, xm x) {
+ public xz(String url, XM x) {
this.url = url;
this.x = x;
start();
diff --git a/app/src/main/java/com/muqingbfq/view/LrcView.java b/app/src/main/java/com/muqingbfq/view/LrcView.java
index 382e562..485796d 100644
--- a/app/src/main/java/com/muqingbfq/view/LrcView.java
+++ b/app/src/main/java/com/muqingbfq/view/LrcView.java
@@ -3,6 +3,7 @@ package com.muqingbfq.view;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.TypedArray;
+import android.graphics.Color;
import android.graphics.Rect;
import android.text.TextUtils;
import android.util.AttributeSet;
@@ -74,6 +75,15 @@ public class LrcView extends RecyclerView {
init();
}
+ public void setTextColor(int textColor) {
+ TextColor = textColor;
+ }
+ public void setTextColor(String textColor) {
+ TextColor = Color.parseColor(textColor);
+ }
+
+
+
private void init() {
if (attrs != null) {
TypedArray ta = getContext().obtainStyledAttributes(attrs, R.styleable.LrcView);
diff --git a/app/src/main/res/layout/activity_search.xml b/app/src/main/res/layout/activity_search.xml
index 64bf8e9..61d2cf6 100644
--- a/app/src/main/res/layout/activity_search.xml
+++ b/app/src/main/res/layout/activity_search.xml
@@ -59,8 +59,7 @@
+ android:layout_height="wrap_content"/>